@flowcore/sdk 1.43.0 → 1.44.1
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/CHANGELOG.md +21 -0
- package/README.md +112 -0
- package/esm/commands/index.d.ts +2 -0
- package/esm/commands/index.d.ts.map +1 -1
- package/esm/commands/index.js +3 -0
- package/esm/commands/ingestion/ingest.batch.d.ts +43 -0
- package/esm/commands/ingestion/ingest.batch.d.ts.map +1 -0
- package/esm/commands/ingestion/ingest.batch.js +80 -0
- package/esm/commands/ingestion/ingest.event.d.ts +40 -0
- package/esm/commands/ingestion/ingest.event.d.ts.map +1 -0
- package/esm/commands/ingestion/ingest.event.js +80 -0
- package/esm/common/command.d.ts +8 -0
- package/esm/common/command.d.ts.map +1 -1
- package/esm/common/command.js +9 -0
- package/esm/common/flowcore-client.js +1 -1
- package/esm/contracts/event.d.ts +25 -0
- package/esm/contracts/event.d.ts.map +1 -1
- package/esm/contracts/index.d.ts +1 -1
- package/esm/contracts/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/script/commands/index.d.ts +2 -0
- package/script/commands/index.d.ts.map +1 -1
- package/script/commands/index.js +3 -0
- package/script/commands/ingestion/ingest.batch.d.ts +43 -0
- package/script/commands/ingestion/ingest.batch.d.ts.map +1 -0
- package/script/commands/ingestion/ingest.batch.js +84 -0
- package/script/commands/ingestion/ingest.event.d.ts +40 -0
- package/script/commands/ingestion/ingest.event.d.ts.map +1 -0
- package/script/commands/ingestion/ingest.event.js +84 -0
- package/script/common/command.d.ts +8 -0
- package/script/common/command.d.ts.map +1 -1
- package/script/common/command.js +9 -0
- package/script/common/flowcore-client.js +1 -1
- package/script/contracts/event.d.ts +25 -0
- package/script/contracts/event.d.ts.map +1 -1
- package/script/contracts/index.d.ts +1 -1
- package/script/contracts/index.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.44.1](https://github.com/flowcore-io/flowcore-sdk/compare/v1.44.0...v1.44.1) (2025-05-07)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **ingestion:** :art: refactor ingest commands for improved readability ([753109f](https://github.com/flowcore-io/flowcore-sdk/commit/753109f88fc3e1d9233669f80e371a5c4a60e445))
|
|
9
|
+
* **ingestion:** :art: update generics to use unknown type for ingest commands ([182b8c7](https://github.com/flowcore-io/flowcore-sdk/commit/182b8c7a6770382a4c3250d5502def151257dcb4))
|
|
10
|
+
|
|
11
|
+
## [1.44.0](https://github.com/flowcore-io/flowcore-sdk/compare/v1.43.0...v1.44.0) (2025-05-06)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* **ingestion:** :sparkles: add batch and event ingestion commands ([5252440](https://github.com/flowcore-io/flowcore-sdk/commit/52524404e3a5908d3d0a441ababe93897fac564b))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* **ingestion:** :art: add missing comma in authorization header ([1fd0bd7](https://github.com/flowcore-io/flowcore-sdk/commit/1fd0bd7f824005a7d90f70fe96d33542a028a54d))
|
|
22
|
+
* **README:** :memo: add event ingestion operations and examples ([2c740ea](https://github.com/flowcore-io/flowcore-sdk/commit/2c740ea42875d41d51e2ea03d5fed75bfb1a62d6))
|
|
23
|
+
|
|
3
24
|
## [1.43.0](https://github.com/flowcore-io/flowcore-sdk/compare/v1.42.1...v1.43.0) (2025-05-05)
|
|
4
25
|
|
|
5
26
|
|
package/README.md
CHANGED
|
@@ -655,6 +655,118 @@ const result = await client.execute(command)
|
|
|
655
655
|
> **Note**: If `waitForDelete` or `waitForTruncate` is set to `true`, the command will wait up to 25 seconds for the operation to complete.
|
|
656
656
|
> **Important**: Event Type deletion and truncation operations require bearer token authentication.
|
|
657
657
|
|
|
658
|
+
### Event Ingestion Operations
|
|
659
|
+
|
|
660
|
+
The SDK provides commands for ingesting events into Flowcore event types.
|
|
661
|
+
|
|
662
|
+
> **Important**: Ingestion operations require API key authentication.
|
|
663
|
+
|
|
664
|
+
#### Ingest a Single Event
|
|
665
|
+
|
|
666
|
+
```typescript
|
|
667
|
+
import { IngestEventCommand, FlowcoreClient } from "@flowcore/sdk"
|
|
668
|
+
|
|
669
|
+
// Define your event data type
|
|
670
|
+
interface MyEventData {
|
|
671
|
+
userId: string;
|
|
672
|
+
action: string;
|
|
673
|
+
timestamp: number;
|
|
674
|
+
// ... any other fields
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
// Create the ingestion command
|
|
678
|
+
const command = new IngestEventCommand<MyEventData>({
|
|
679
|
+
tenantName: "your-tenant-name",
|
|
680
|
+
dataCoreId: "your-data-core-id",
|
|
681
|
+
flowTypeName: "your-flow-type-name",
|
|
682
|
+
eventTypeName: "your-event-type-name",
|
|
683
|
+
eventData: {
|
|
684
|
+
userId: "user-123",
|
|
685
|
+
action: "login",
|
|
686
|
+
timestamp: Date.now()
|
|
687
|
+
},
|
|
688
|
+
// Optional parameters
|
|
689
|
+
metadata: {
|
|
690
|
+
source: "web-app",
|
|
691
|
+
version: "1.0.0"
|
|
692
|
+
},
|
|
693
|
+
eventTime: new Date().toISOString(), // When the event occurred
|
|
694
|
+
validTime: new Date().toISOString(), // When the event becomes valid
|
|
695
|
+
ttl: true, // Set time-to-live flag
|
|
696
|
+
isEphemeral: false // Whether to archive the event
|
|
697
|
+
})
|
|
698
|
+
|
|
699
|
+
const result = await client.execute(command)
|
|
700
|
+
// Returns:
|
|
701
|
+
// {
|
|
702
|
+
// eventId: string; // The ID of the ingested event
|
|
703
|
+
// success: boolean; // Whether ingestion was successful
|
|
704
|
+
// }
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
#### Ingest Multiple Events (Batch)
|
|
708
|
+
|
|
709
|
+
```typescript
|
|
710
|
+
import { IngestBatchCommand, FlowcoreClient } from "@flowcore/sdk"
|
|
711
|
+
|
|
712
|
+
// Define your event data type
|
|
713
|
+
interface MyEventData {
|
|
714
|
+
userId: string;
|
|
715
|
+
action: string;
|
|
716
|
+
timestamp: number;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// Create the batch ingestion command
|
|
720
|
+
const command = new IngestBatchCommand<MyEventData>({
|
|
721
|
+
tenantName: "your-tenant-name",
|
|
722
|
+
dataCoreId: "your-data-core-id",
|
|
723
|
+
flowTypeName: "your-flow-type-name",
|
|
724
|
+
eventTypeName: "your-event-type-name",
|
|
725
|
+
events: [
|
|
726
|
+
{
|
|
727
|
+
userId: "user-123",
|
|
728
|
+
action: "login",
|
|
729
|
+
timestamp: Date.now()
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
userId: "user-456",
|
|
733
|
+
action: "view_profile",
|
|
734
|
+
timestamp: Date.now()
|
|
735
|
+
},
|
|
736
|
+
// Add more events as needed (maximum 25 events per batch)
|
|
737
|
+
],
|
|
738
|
+
// Optional parameters (applied to all events in the batch)
|
|
739
|
+
metadata: {
|
|
740
|
+
source: "web-app",
|
|
741
|
+
version: "1.0.0"
|
|
742
|
+
},
|
|
743
|
+
eventTime: new Date().toISOString(),
|
|
744
|
+
validTime: new Date().toISOString(),
|
|
745
|
+
ttl: true,
|
|
746
|
+
isEphemeral: false
|
|
747
|
+
})
|
|
748
|
+
|
|
749
|
+
const result = await client.execute(command)
|
|
750
|
+
// Returns:
|
|
751
|
+
// {
|
|
752
|
+
// eventIds: string[]; // Array of IDs for the ingested events
|
|
753
|
+
// success: boolean; // Whether the batch ingestion was successful
|
|
754
|
+
// }
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
#### Ingestion Options
|
|
758
|
+
|
|
759
|
+
Both single and batch ingestion support these options:
|
|
760
|
+
|
|
761
|
+
- **metadata**: Key-value pairs sent as `x-flowcore-metadata-json` header
|
|
762
|
+
- **eventTime**: When the event occurred (`x-flowcore-event-time` header)
|
|
763
|
+
- **validTime**: When the event becomes valid (`x-flowcore-valid-time` header)
|
|
764
|
+
- **ttl**: Enables time-to-live for events (adds `ttl-on/stored-event: true` to metadata)
|
|
765
|
+
- **isEphemeral**: Prevents archiving (adds `do-not-archive-on/stored-event: true` to metadata)
|
|
766
|
+
|
|
767
|
+
> **Note**: Batch ingestion is more efficient for inserting multiple events at once, as it requires only a single API call.
|
|
768
|
+
> **Important**: Batch ingestion has a maximum limit of 25 events per request. For larger volumes, split your events into multiple batches.
|
|
769
|
+
|
|
658
770
|
### AI Agent Coordinator Operations
|
|
659
771
|
|
|
660
772
|
These commands allow interaction with the AI Agent Coordinator service for managing conversational AI agents.
|
package/esm/commands/index.d.ts
CHANGED
|
@@ -34,6 +34,8 @@ export * from "./event-type/event-type.remove-sensitive-data.js";
|
|
|
34
34
|
export * from "./event-type/event-type.request-delete.js";
|
|
35
35
|
export * from "./event-type/event-type.request-truncate.js";
|
|
36
36
|
export * from "./event-type/event-type.update.js";
|
|
37
|
+
export * from "./ingestion/ingest.batch.js";
|
|
38
|
+
export * from "./ingestion/ingest.event.js";
|
|
37
39
|
export * from "./iam/api-key-role-association.create.js";
|
|
38
40
|
export * from "./iam/api-key-role-association.delete.js";
|
|
39
41
|
export * from "./iam/api-key-role-association.list.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,cAAc,2CAA2C,CAAA;AACzD,cAAc,0CAA0C,CAAA;AACxD,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yCAAyC,CAAA;AAGvD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AAGzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wDAAwD,CAAA;AACtE,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kDAAkD,CAAA;AAChE,cAAc,2CAA2C,CAAA;AACzD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,mCAAmC,CAAA;AAGjD,cAAc,0CAA0C,CAAA;AACxD,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AAGnD,cAAc,wBAAwB,CAAA;AACtC,cAAc,gDAAgD,CAAA;AAC9D,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAG5C,cAAc,mDAAmD,CAAA;AACjE,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AAGjE,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,cAAc,2CAA2C,CAAA;AACzD,cAAc,0CAA0C,CAAA;AACxD,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yCAAyC,CAAA;AAGvD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AAGzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wDAAwD,CAAA;AACtE,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kDAAkD,CAAA;AAChE,cAAc,2CAA2C,CAAA;AACzD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,mCAAmC,CAAA;AAGjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AAGnD,cAAc,wBAAwB,CAAA;AACtC,cAAc,gDAAgD,CAAA;AAC9D,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAG5C,cAAc,mDAAmD,CAAA;AACjE,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AAGjE,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA"}
|
package/esm/commands/index.js
CHANGED
|
@@ -41,6 +41,9 @@ export * from "./event-type/event-type.remove-sensitive-data.js";
|
|
|
41
41
|
export * from "./event-type/event-type.request-delete.js";
|
|
42
42
|
export * from "./event-type/event-type.request-truncate.js";
|
|
43
43
|
export * from "./event-type/event-type.update.js";
|
|
44
|
+
// Ingestion
|
|
45
|
+
export * from "./ingestion/ingest.batch.js";
|
|
46
|
+
export * from "./ingestion/ingest.event.js";
|
|
44
47
|
// IAM
|
|
45
48
|
export * from "./iam/api-key-role-association.create.js";
|
|
46
49
|
export * from "./iam/api-key-role-association.delete.js";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Command } from "../../common/command.js";
|
|
2
|
+
import type { IngestEventInput } from "../../contracts/event.js";
|
|
3
|
+
export interface IngestBatchInput<T extends unknown> extends Omit<IngestEventInput<T>, "eventData"> {
|
|
4
|
+
events: IngestEventInput<T>["eventData"][];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The output for the batch ingestion command
|
|
8
|
+
*/
|
|
9
|
+
export interface IngestBatchOutput {
|
|
10
|
+
/** the events */
|
|
11
|
+
eventIds: string[];
|
|
12
|
+
/** success status */
|
|
13
|
+
success: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Ingest a batch of events
|
|
17
|
+
*/
|
|
18
|
+
export declare class IngestBatchCommand<T extends unknown> extends Command<IngestBatchInput<T>, IngestBatchOutput> {
|
|
19
|
+
/**
|
|
20
|
+
* The dedicated subdomain for the command
|
|
21
|
+
*/
|
|
22
|
+
protected dedicatedSubdomain: string;
|
|
23
|
+
protected allowedModes: ("apiKey" | "bearer")[];
|
|
24
|
+
protected getMethod(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Get the base url for the request
|
|
27
|
+
*/
|
|
28
|
+
protected getBaseUrl(): string;
|
|
29
|
+
protected getHeaders(): Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the path for the request
|
|
32
|
+
*/
|
|
33
|
+
protected getPath(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Parse the response
|
|
36
|
+
*/
|
|
37
|
+
protected parseResponse(rawResponse: unknown): IngestBatchOutput;
|
|
38
|
+
/**
|
|
39
|
+
* Get the body for the request
|
|
40
|
+
*/
|
|
41
|
+
protected getBody(): unknown[];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ingest.batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.batch.d.ts","sourceRoot":"","sources":["../../../src/commands/ingestion/ingest.batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;IACjG,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;CACjB;AAUD;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;IACxG;;OAEG;IACH,UAAmB,kBAAkB,EAAE,MAAM,CAAY;IAEzD,UAAmB,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAa;cAElD,SAAS,IAAI,MAAM;IAItC;;OAEG;cACgB,UAAU,IAAI,MAAM;cAQpB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBvD;;OAEG;cACgB,OAAO,IAAI,MAAM;IAGpC;;OAEG;cACgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,iBAAiB;IAKzE;;OAEG;cACgB,OAAO,IAAI,OAAO,EAAE;CAGxC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { Command } from "../../common/command.js";
|
|
3
|
+
import { parseResponseHelper } from "../../utils/parse-response-helper.js";
|
|
4
|
+
/**
|
|
5
|
+
* The response schema for the batch ingestion command
|
|
6
|
+
*/
|
|
7
|
+
const responseSchema = Type.Object({
|
|
8
|
+
eventIds: Type.Array(Type.String()),
|
|
9
|
+
success: Type.Boolean(),
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Ingest a batch of events
|
|
13
|
+
*/
|
|
14
|
+
export class IngestBatchCommand extends Command {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
/**
|
|
18
|
+
* The dedicated subdomain for the command
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(this, "dedicatedSubdomain", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: "webhook"
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, "allowedModes", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: ["apiKey"]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getMethod() {
|
|
34
|
+
return "POST";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the base url for the request
|
|
38
|
+
*/
|
|
39
|
+
getBaseUrl() {
|
|
40
|
+
if (this.input.tenantName === "flowcore") {
|
|
41
|
+
return "https://flowcore.webhook.flowcore.io";
|
|
42
|
+
}
|
|
43
|
+
return "https://webhook.api.flowcore.io";
|
|
44
|
+
}
|
|
45
|
+
getHeaders() {
|
|
46
|
+
const metadata = this.input.metadata && Object.keys(this.input.metadata).length > 0 ? this.input.metadata : undefined;
|
|
47
|
+
if (metadata && this.input.ttl) {
|
|
48
|
+
metadata["ttl-on/stored-event"] = "true";
|
|
49
|
+
}
|
|
50
|
+
if (metadata && this.input.isEphemeral) {
|
|
51
|
+
metadata["do-not-archive-on/stored-event"] = "true";
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
"Content-Type": "application/json",
|
|
55
|
+
...(metadata && { "x-flowcore-metadata-json": JSON.stringify(metadata) }),
|
|
56
|
+
...(this.input.eventTime && { "x-flowcore-event-time": this.input.eventTime }),
|
|
57
|
+
...(this.input.validTime && { "x-flowcore-valid-time": this.input.validTime }),
|
|
58
|
+
...(this.clientAuthOptions.apiKey && { "Authorization": this.clientAuthOptions.apiKey }),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the path for the request
|
|
63
|
+
*/
|
|
64
|
+
getPath() {
|
|
65
|
+
return `/events/${this.input.tenantName}/${this.input.dataCoreId}/${this.input.flowTypeName}/${this.input.eventTypeName}`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parse the response
|
|
69
|
+
*/
|
|
70
|
+
parseResponse(rawResponse) {
|
|
71
|
+
const response = parseResponseHelper(responseSchema, rawResponse);
|
|
72
|
+
return response;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the body for the request
|
|
76
|
+
*/
|
|
77
|
+
getBody() {
|
|
78
|
+
return this.input.events;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Command } from "../../common/command.js";
|
|
2
|
+
import type { IngestEventInput } from "../../contracts/event.js";
|
|
3
|
+
/**
|
|
4
|
+
* The output for the ingest event command
|
|
5
|
+
*/
|
|
6
|
+
export interface IngestEventOutput {
|
|
7
|
+
/** the events */
|
|
8
|
+
eventId: string;
|
|
9
|
+
/** success status */
|
|
10
|
+
success: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Ingest an event
|
|
14
|
+
*/
|
|
15
|
+
export declare class IngestEventCommand<T extends unknown> extends Command<IngestEventInput<T>, IngestEventOutput> {
|
|
16
|
+
/**
|
|
17
|
+
* The dedicated subdomain for the command
|
|
18
|
+
*/
|
|
19
|
+
protected dedicatedSubdomain: string;
|
|
20
|
+
protected allowedModes: ("apiKey" | "bearer")[];
|
|
21
|
+
protected getMethod(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get the base url for the request
|
|
24
|
+
*/
|
|
25
|
+
protected getBaseUrl(): string;
|
|
26
|
+
protected getHeaders(): Record<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Get the path for the request
|
|
29
|
+
*/
|
|
30
|
+
protected getPath(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Parse the response
|
|
33
|
+
*/
|
|
34
|
+
protected parseResponse(rawResponse: unknown): IngestEventOutput;
|
|
35
|
+
/**
|
|
36
|
+
* Get the body for the request
|
|
37
|
+
*/
|
|
38
|
+
protected getBody(): Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ingest.event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.event.d.ts","sourceRoot":"","sources":["../../../src/commands/ingestion/ingest.event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGhE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;CACjB;AAUD;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;IACxG;;OAEG;IACH,UAAmB,kBAAkB,EAAE,MAAM,CAAY;IAEzD,UAAmB,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAa;cAElD,SAAS,IAAI,MAAM;IAItC;;OAEG;cACgB,UAAU,IAAI,MAAM;cAQpB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBvD;;OAEG;cACgB,OAAO,IAAI,MAAM;IAGpC;;OAEG;cACgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,iBAAiB;IAKzE;;OAEG;cACgB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGtD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { Command } from "../../common/command.js";
|
|
3
|
+
import { parseResponseHelper } from "../../utils/parse-response-helper.js";
|
|
4
|
+
/**
|
|
5
|
+
* The response schema for the ingest event command
|
|
6
|
+
*/
|
|
7
|
+
const responseSchema = Type.Object({
|
|
8
|
+
eventId: Type.String(),
|
|
9
|
+
success: Type.Boolean(),
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Ingest an event
|
|
13
|
+
*/
|
|
14
|
+
export class IngestEventCommand extends Command {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
/**
|
|
18
|
+
* The dedicated subdomain for the command
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(this, "dedicatedSubdomain", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: "webhook"
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, "allowedModes", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: ["apiKey"]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getMethod() {
|
|
34
|
+
return "POST";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the base url for the request
|
|
38
|
+
*/
|
|
39
|
+
getBaseUrl() {
|
|
40
|
+
if (this.input.tenantName === "flowcore") {
|
|
41
|
+
return "https://flowcore.webhook.flowcore.io";
|
|
42
|
+
}
|
|
43
|
+
return "https://webhook.api.flowcore.io";
|
|
44
|
+
}
|
|
45
|
+
getHeaders() {
|
|
46
|
+
const metadata = this.input.metadata && Object.keys(this.input.metadata).length > 0 ? this.input.metadata : undefined;
|
|
47
|
+
if (metadata && this.input.ttl) {
|
|
48
|
+
metadata["ttl-on/stored-event"] = "true";
|
|
49
|
+
}
|
|
50
|
+
if (metadata && this.input.isEphemeral) {
|
|
51
|
+
metadata["do-not-archive-on/stored-event"] = "true";
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
"Content-Type": "application/json",
|
|
55
|
+
...(metadata && { "x-flowcore-metadata-json": JSON.stringify(metadata) }),
|
|
56
|
+
...(this.input.eventTime && { "x-flowcore-event-time": this.input.eventTime }),
|
|
57
|
+
...(this.input.validTime && { "x-flowcore-valid-time": this.input.validTime }),
|
|
58
|
+
...(this.clientAuthOptions.apiKey && { "Authorization": this.clientAuthOptions.apiKey }),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the path for the request
|
|
63
|
+
*/
|
|
64
|
+
getPath() {
|
|
65
|
+
return `/event/${this.input.tenantName}/${this.input.dataCoreId}/${this.input.flowTypeName}/${this.input.eventTypeName}`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parse the response
|
|
69
|
+
*/
|
|
70
|
+
parseResponse(rawResponse) {
|
|
71
|
+
const response = parseResponseHelper(responseSchema, rawResponse);
|
|
72
|
+
return response;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the body for the request
|
|
76
|
+
*/
|
|
77
|
+
getBody() {
|
|
78
|
+
return this.input.eventData;
|
|
79
|
+
}
|
|
80
|
+
}
|
package/esm/common/command.d.ts
CHANGED
|
@@ -20,6 +20,14 @@ export declare abstract class Command<Input, Output> {
|
|
|
20
20
|
* The input for the command
|
|
21
21
|
*/
|
|
22
22
|
protected readonly input: Input;
|
|
23
|
+
/**
|
|
24
|
+
* The client auth options
|
|
25
|
+
*/
|
|
26
|
+
protected readonly clientAuthOptions: {
|
|
27
|
+
token?: string;
|
|
28
|
+
apiKeyId?: string;
|
|
29
|
+
apiKey?: string;
|
|
30
|
+
};
|
|
23
31
|
constructor(input: Input);
|
|
24
32
|
/**
|
|
25
33
|
* Get the dedicated base URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/common/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D;;GAEG;AACH,8BAAsB,OAAO,CAAC,KAAK,EAAE,MAAM;IACzC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAO;IAEjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAuB;IAE/E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/common/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D;;GAEG;AACH,8BAAsB,OAAO,CAAC,KAAK,EAAE,MAAM;IACzC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAO;IAEjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAuB;IAE/E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAE/B;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACpC,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAK;gBAEM,KAAK,EAAE,KAAK;IAOxB;;OAEG;cACa,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0CnF;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM;IAEvC;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM;IAI3B;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS;IAOzE;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;IAE3D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIrD;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QACzE,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;QACrC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACnE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9D,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9E,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;QAC/C,cAAc,EAAE,OAAO,CAAA;QACvB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC7D,CAAC;IAeF;;OAEG;cAEa,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAG5F"}
|
package/esm/common/command.js
CHANGED
|
@@ -42,6 +42,15 @@ export class Command {
|
|
|
42
42
|
writable: true,
|
|
43
43
|
value: void 0
|
|
44
44
|
});
|
|
45
|
+
/**
|
|
46
|
+
* The client auth options
|
|
47
|
+
*/
|
|
48
|
+
Object.defineProperty(this, "clientAuthOptions", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
configurable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: {}
|
|
53
|
+
});
|
|
45
54
|
/**
|
|
46
55
|
* The input for the command
|
|
47
56
|
*/
|
|
@@ -77,8 +77,8 @@ export class FlowcoreClient {
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
const headers = {
|
|
80
|
-
...request.headers,
|
|
81
80
|
...(authHeader ? { Authorization: authHeader } : {}),
|
|
81
|
+
...request.headers,
|
|
82
82
|
};
|
|
83
83
|
let response;
|
|
84
84
|
const url = this.baseUrl ? this.baseUrl + request.path : request.baseUrl + request.path;
|
package/esm/contracts/event.d.ts
CHANGED
|
@@ -17,4 +17,29 @@ export declare const FlowcoreEventSchema: TObject<{
|
|
|
17
17
|
* The type for an event
|
|
18
18
|
*/
|
|
19
19
|
export type FlowcoreEvent = Static<typeof FlowcoreEventSchema>;
|
|
20
|
+
/**
|
|
21
|
+
* The input for the ingest event command
|
|
22
|
+
*/
|
|
23
|
+
export interface IngestEventInput<T extends unknown> {
|
|
24
|
+
/** the tenant name */
|
|
25
|
+
tenantName: string;
|
|
26
|
+
/** the data core id */
|
|
27
|
+
dataCoreId: string;
|
|
28
|
+
/** the flow type name */
|
|
29
|
+
flowTypeName: string;
|
|
30
|
+
/** the event type name */
|
|
31
|
+
eventTypeName: string;
|
|
32
|
+
/** the event data */
|
|
33
|
+
eventData: T;
|
|
34
|
+
/** the event id */
|
|
35
|
+
metadata?: Record<string, string>;
|
|
36
|
+
/** ttl (This accepts d, h, m, s. The maximum value is 7 days, this can be increased for higher subscription levels.) */
|
|
37
|
+
ttl?: string;
|
|
38
|
+
/** indicate if this event is emphemral (default false) */
|
|
39
|
+
isEphemeral?: boolean;
|
|
40
|
+
/** valid time of the event */
|
|
41
|
+
validTime?: string;
|
|
42
|
+
/** event time of the event, overrides what time bucket this event is stored in */
|
|
43
|
+
eventTime?: string;
|
|
44
|
+
}
|
|
20
45
|
//# sourceMappingURL=event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/contracts/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,mBAAmB,CAAA;AAE9G;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnC,SAAS,EAAE,OAAO,CAAA;CACnB,CAUC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/contracts/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,mBAAmB,CAAA;AAE9G;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnC,SAAS,EAAE,OAAO,CAAA;CACnB,CAUC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,OAAO;IACjD,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,qBAAqB;IACrB,SAAS,EAAE,CAAC,CAAA;IACZ,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,wHAAwH;IACxH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
|
package/esm/contracts/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export * from "./ai-agent-coordinator.js";
|
|
|
3
3
|
export type { DataCore } from "./data-core.js";
|
|
4
4
|
export type { EventType, EventTypeSchema, EventTypeSensitiveDataMask, EventTypeSensitiveDataMaskParsed, EventTypeSensitiveDataMaskParsedSchema, EventTypeSensitiveDataMaskSchema, SensitiveDataDefinition, SensitiveDataDefinitionSchema, } from "./event-type.js";
|
|
5
5
|
export type { FlowType } from "./flow-type.js";
|
|
6
|
-
export type { FlowcoreEvent } from "./event.js";
|
|
6
|
+
export type { FlowcoreEvent, IngestEventInput } from "./event.js";
|
|
7
7
|
export type { Tenant } from "./tenant.js";
|
|
8
8
|
export type { Permission } from "./permission.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EACV,SAAS,EACT,eAAe,EACf,0BAA0B,EAC1B,gCAAgC,EAChC,sCAAsC,EACtC,gCAAgC,EAChC,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EACV,SAAS,EACT,eAAe,EACf,0BAA0B,EAC1B,gCAAgC,EAChC,sCAAsC,EACtC,gCAAgC,EAChC,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
|
package/package.json
CHANGED
|
@@ -34,6 +34,8 @@ export * from "./event-type/event-type.remove-sensitive-data.js";
|
|
|
34
34
|
export * from "./event-type/event-type.request-delete.js";
|
|
35
35
|
export * from "./event-type/event-type.request-truncate.js";
|
|
36
36
|
export * from "./event-type/event-type.update.js";
|
|
37
|
+
export * from "./ingestion/ingest.batch.js";
|
|
38
|
+
export * from "./ingestion/ingest.event.js";
|
|
37
39
|
export * from "./iam/api-key-role-association.create.js";
|
|
38
40
|
export * from "./iam/api-key-role-association.delete.js";
|
|
39
41
|
export * from "./iam/api-key-role-association.list.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,cAAc,2CAA2C,CAAA;AACzD,cAAc,0CAA0C,CAAA;AACxD,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yCAAyC,CAAA;AAGvD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AAGzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wDAAwD,CAAA;AACtE,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kDAAkD,CAAA;AAChE,cAAc,2CAA2C,CAAA;AACzD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,mCAAmC,CAAA;AAGjD,cAAc,0CAA0C,CAAA;AACxD,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AAGnD,cAAc,wBAAwB,CAAA;AACtC,cAAc,gDAAgD,CAAA;AAC9D,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAG5C,cAAc,mDAAmD,CAAA;AACjE,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AAGjE,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,cAAc,2CAA2C,CAAA;AACzD,cAAc,0CAA0C,CAAA;AACxD,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yCAAyC,CAAA;AAGvD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AAGzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAG/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wDAAwD,CAAA;AACtE,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kDAAkD,CAAA;AAChE,cAAc,2CAA2C,CAAA;AACzD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,mCAAmC,CAAA;AAGjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAG3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AAGnD,cAAc,wBAAwB,CAAA;AACtC,cAAc,gDAAgD,CAAA;AAC9D,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAG5C,cAAc,mDAAmD,CAAA;AACjE,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AAGjE,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA"}
|
package/script/commands/index.js
CHANGED
|
@@ -57,6 +57,9 @@ __exportStar(require("./event-type/event-type.remove-sensitive-data.js"), export
|
|
|
57
57
|
__exportStar(require("./event-type/event-type.request-delete.js"), exports);
|
|
58
58
|
__exportStar(require("./event-type/event-type.request-truncate.js"), exports);
|
|
59
59
|
__exportStar(require("./event-type/event-type.update.js"), exports);
|
|
60
|
+
// Ingestion
|
|
61
|
+
__exportStar(require("./ingestion/ingest.batch.js"), exports);
|
|
62
|
+
__exportStar(require("./ingestion/ingest.event.js"), exports);
|
|
60
63
|
// IAM
|
|
61
64
|
__exportStar(require("./iam/api-key-role-association.create.js"), exports);
|
|
62
65
|
__exportStar(require("./iam/api-key-role-association.delete.js"), exports);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Command } from "../../common/command.js";
|
|
2
|
+
import type { IngestEventInput } from "../../contracts/event.js";
|
|
3
|
+
export interface IngestBatchInput<T extends unknown> extends Omit<IngestEventInput<T>, "eventData"> {
|
|
4
|
+
events: IngestEventInput<T>["eventData"][];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The output for the batch ingestion command
|
|
8
|
+
*/
|
|
9
|
+
export interface IngestBatchOutput {
|
|
10
|
+
/** the events */
|
|
11
|
+
eventIds: string[];
|
|
12
|
+
/** success status */
|
|
13
|
+
success: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Ingest a batch of events
|
|
17
|
+
*/
|
|
18
|
+
export declare class IngestBatchCommand<T extends unknown> extends Command<IngestBatchInput<T>, IngestBatchOutput> {
|
|
19
|
+
/**
|
|
20
|
+
* The dedicated subdomain for the command
|
|
21
|
+
*/
|
|
22
|
+
protected dedicatedSubdomain: string;
|
|
23
|
+
protected allowedModes: ("apiKey" | "bearer")[];
|
|
24
|
+
protected getMethod(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Get the base url for the request
|
|
27
|
+
*/
|
|
28
|
+
protected getBaseUrl(): string;
|
|
29
|
+
protected getHeaders(): Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the path for the request
|
|
32
|
+
*/
|
|
33
|
+
protected getPath(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Parse the response
|
|
36
|
+
*/
|
|
37
|
+
protected parseResponse(rawResponse: unknown): IngestBatchOutput;
|
|
38
|
+
/**
|
|
39
|
+
* Get the body for the request
|
|
40
|
+
*/
|
|
41
|
+
protected getBody(): unknown[];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ingest.batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.batch.d.ts","sourceRoot":"","sources":["../../../src/commands/ingestion/ingest.batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;IACjG,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;CACjB;AAUD;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;IACxG;;OAEG;IACH,UAAmB,kBAAkB,EAAE,MAAM,CAAY;IAEzD,UAAmB,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAa;cAElD,SAAS,IAAI,MAAM;IAItC;;OAEG;cACgB,UAAU,IAAI,MAAM;cAQpB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBvD;;OAEG;cACgB,OAAO,IAAI,MAAM;IAGpC;;OAEG;cACgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,iBAAiB;IAKzE;;OAEG;cACgB,OAAO,IAAI,OAAO,EAAE;CAGxC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IngestBatchCommand = void 0;
|
|
4
|
+
const typebox_1 = require("@sinclair/typebox");
|
|
5
|
+
const command_js_1 = require("../../common/command.js");
|
|
6
|
+
const parse_response_helper_js_1 = require("../../utils/parse-response-helper.js");
|
|
7
|
+
/**
|
|
8
|
+
* The response schema for the batch ingestion command
|
|
9
|
+
*/
|
|
10
|
+
const responseSchema = typebox_1.Type.Object({
|
|
11
|
+
eventIds: typebox_1.Type.Array(typebox_1.Type.String()),
|
|
12
|
+
success: typebox_1.Type.Boolean(),
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Ingest a batch of events
|
|
16
|
+
*/
|
|
17
|
+
class IngestBatchCommand extends command_js_1.Command {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
/**
|
|
21
|
+
* The dedicated subdomain for the command
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(this, "dedicatedSubdomain", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: "webhook"
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, "allowedModes", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: ["apiKey"]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
getMethod() {
|
|
37
|
+
return "POST";
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get the base url for the request
|
|
41
|
+
*/
|
|
42
|
+
getBaseUrl() {
|
|
43
|
+
if (this.input.tenantName === "flowcore") {
|
|
44
|
+
return "https://flowcore.webhook.flowcore.io";
|
|
45
|
+
}
|
|
46
|
+
return "https://webhook.api.flowcore.io";
|
|
47
|
+
}
|
|
48
|
+
getHeaders() {
|
|
49
|
+
const metadata = this.input.metadata && Object.keys(this.input.metadata).length > 0 ? this.input.metadata : undefined;
|
|
50
|
+
if (metadata && this.input.ttl) {
|
|
51
|
+
metadata["ttl-on/stored-event"] = "true";
|
|
52
|
+
}
|
|
53
|
+
if (metadata && this.input.isEphemeral) {
|
|
54
|
+
metadata["do-not-archive-on/stored-event"] = "true";
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
"Content-Type": "application/json",
|
|
58
|
+
...(metadata && { "x-flowcore-metadata-json": JSON.stringify(metadata) }),
|
|
59
|
+
...(this.input.eventTime && { "x-flowcore-event-time": this.input.eventTime }),
|
|
60
|
+
...(this.input.validTime && { "x-flowcore-valid-time": this.input.validTime }),
|
|
61
|
+
...(this.clientAuthOptions.apiKey && { "Authorization": this.clientAuthOptions.apiKey }),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get the path for the request
|
|
66
|
+
*/
|
|
67
|
+
getPath() {
|
|
68
|
+
return `/events/${this.input.tenantName}/${this.input.dataCoreId}/${this.input.flowTypeName}/${this.input.eventTypeName}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Parse the response
|
|
72
|
+
*/
|
|
73
|
+
parseResponse(rawResponse) {
|
|
74
|
+
const response = (0, parse_response_helper_js_1.parseResponseHelper)(responseSchema, rawResponse);
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the body for the request
|
|
79
|
+
*/
|
|
80
|
+
getBody() {
|
|
81
|
+
return this.input.events;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.IngestBatchCommand = IngestBatchCommand;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Command } from "../../common/command.js";
|
|
2
|
+
import type { IngestEventInput } from "../../contracts/event.js";
|
|
3
|
+
/**
|
|
4
|
+
* The output for the ingest event command
|
|
5
|
+
*/
|
|
6
|
+
export interface IngestEventOutput {
|
|
7
|
+
/** the events */
|
|
8
|
+
eventId: string;
|
|
9
|
+
/** success status */
|
|
10
|
+
success: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Ingest an event
|
|
14
|
+
*/
|
|
15
|
+
export declare class IngestEventCommand<T extends unknown> extends Command<IngestEventInput<T>, IngestEventOutput> {
|
|
16
|
+
/**
|
|
17
|
+
* The dedicated subdomain for the command
|
|
18
|
+
*/
|
|
19
|
+
protected dedicatedSubdomain: string;
|
|
20
|
+
protected allowedModes: ("apiKey" | "bearer")[];
|
|
21
|
+
protected getMethod(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get the base url for the request
|
|
24
|
+
*/
|
|
25
|
+
protected getBaseUrl(): string;
|
|
26
|
+
protected getHeaders(): Record<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Get the path for the request
|
|
29
|
+
*/
|
|
30
|
+
protected getPath(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Parse the response
|
|
33
|
+
*/
|
|
34
|
+
protected parseResponse(rawResponse: unknown): IngestEventOutput;
|
|
35
|
+
/**
|
|
36
|
+
* Get the body for the request
|
|
37
|
+
*/
|
|
38
|
+
protected getBody(): Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ingest.event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.event.d.ts","sourceRoot":"","sources":["../../../src/commands/ingestion/ingest.event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGhE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;CACjB;AAUD;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;IACxG;;OAEG;IACH,UAAmB,kBAAkB,EAAE,MAAM,CAAY;IAEzD,UAAmB,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAa;cAElD,SAAS,IAAI,MAAM;IAItC;;OAEG;cACgB,UAAU,IAAI,MAAM;cAQpB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqBvD;;OAEG;cACgB,OAAO,IAAI,MAAM;IAGpC;;OAEG;cACgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,iBAAiB;IAKzE;;OAEG;cACgB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGtD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IngestEventCommand = void 0;
|
|
4
|
+
const typebox_1 = require("@sinclair/typebox");
|
|
5
|
+
const command_js_1 = require("../../common/command.js");
|
|
6
|
+
const parse_response_helper_js_1 = require("../../utils/parse-response-helper.js");
|
|
7
|
+
/**
|
|
8
|
+
* The response schema for the ingest event command
|
|
9
|
+
*/
|
|
10
|
+
const responseSchema = typebox_1.Type.Object({
|
|
11
|
+
eventId: typebox_1.Type.String(),
|
|
12
|
+
success: typebox_1.Type.Boolean(),
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Ingest an event
|
|
16
|
+
*/
|
|
17
|
+
class IngestEventCommand extends command_js_1.Command {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
/**
|
|
21
|
+
* The dedicated subdomain for the command
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(this, "dedicatedSubdomain", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: "webhook"
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, "allowedModes", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: ["apiKey"]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
getMethod() {
|
|
37
|
+
return "POST";
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get the base url for the request
|
|
41
|
+
*/
|
|
42
|
+
getBaseUrl() {
|
|
43
|
+
if (this.input.tenantName === "flowcore") {
|
|
44
|
+
return "https://flowcore.webhook.flowcore.io";
|
|
45
|
+
}
|
|
46
|
+
return "https://webhook.api.flowcore.io";
|
|
47
|
+
}
|
|
48
|
+
getHeaders() {
|
|
49
|
+
const metadata = this.input.metadata && Object.keys(this.input.metadata).length > 0 ? this.input.metadata : undefined;
|
|
50
|
+
if (metadata && this.input.ttl) {
|
|
51
|
+
metadata["ttl-on/stored-event"] = "true";
|
|
52
|
+
}
|
|
53
|
+
if (metadata && this.input.isEphemeral) {
|
|
54
|
+
metadata["do-not-archive-on/stored-event"] = "true";
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
"Content-Type": "application/json",
|
|
58
|
+
...(metadata && { "x-flowcore-metadata-json": JSON.stringify(metadata) }),
|
|
59
|
+
...(this.input.eventTime && { "x-flowcore-event-time": this.input.eventTime }),
|
|
60
|
+
...(this.input.validTime && { "x-flowcore-valid-time": this.input.validTime }),
|
|
61
|
+
...(this.clientAuthOptions.apiKey && { "Authorization": this.clientAuthOptions.apiKey }),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get the path for the request
|
|
66
|
+
*/
|
|
67
|
+
getPath() {
|
|
68
|
+
return `/event/${this.input.tenantName}/${this.input.dataCoreId}/${this.input.flowTypeName}/${this.input.eventTypeName}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Parse the response
|
|
72
|
+
*/
|
|
73
|
+
parseResponse(rawResponse) {
|
|
74
|
+
const response = (0, parse_response_helper_js_1.parseResponseHelper)(responseSchema, rawResponse);
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the body for the request
|
|
79
|
+
*/
|
|
80
|
+
getBody() {
|
|
81
|
+
return this.input.eventData;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.IngestEventCommand = IngestEventCommand;
|
|
@@ -20,6 +20,14 @@ export declare abstract class Command<Input, Output> {
|
|
|
20
20
|
* The input for the command
|
|
21
21
|
*/
|
|
22
22
|
protected readonly input: Input;
|
|
23
|
+
/**
|
|
24
|
+
* The client auth options
|
|
25
|
+
*/
|
|
26
|
+
protected readonly clientAuthOptions: {
|
|
27
|
+
token?: string;
|
|
28
|
+
apiKeyId?: string;
|
|
29
|
+
apiKey?: string;
|
|
30
|
+
};
|
|
23
31
|
constructor(input: Input);
|
|
24
32
|
/**
|
|
25
33
|
* Get the dedicated base URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/common/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D;;GAEG;AACH,8BAAsB,OAAO,CAAC,KAAK,EAAE,MAAM;IACzC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAO;IAEjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAuB;IAE/E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/common/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D;;GAEG;AACH,8BAAsB,OAAO,CAAC,KAAK,EAAE,MAAM;IACzC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAO;IAEjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAuB;IAE/E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAE/B;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACpC,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAK;gBAEM,KAAK,EAAE,KAAK;IAOxB;;OAEG;cACa,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0CnF;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM;IAEvC;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM;IAI3B;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS;IAOzE;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;IAE3D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIrD;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QACzE,YAAY,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;QACrC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACnE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9D,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9E,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;QAC/C,cAAc,EAAE,OAAO,CAAA;QACvB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC7D,CAAC;IAeF;;OAEG;cAEa,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAG5F"}
|
package/script/common/command.js
CHANGED
|
@@ -68,6 +68,15 @@ class Command {
|
|
|
68
68
|
writable: true,
|
|
69
69
|
value: void 0
|
|
70
70
|
});
|
|
71
|
+
/**
|
|
72
|
+
* The client auth options
|
|
73
|
+
*/
|
|
74
|
+
Object.defineProperty(this, "clientAuthOptions", {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
configurable: true,
|
|
77
|
+
writable: true,
|
|
78
|
+
value: {}
|
|
79
|
+
});
|
|
71
80
|
/**
|
|
72
81
|
* The input for the command
|
|
73
82
|
*/
|
|
@@ -80,8 +80,8 @@ class FlowcoreClient {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
const headers = {
|
|
83
|
-
...request.headers,
|
|
84
83
|
...(authHeader ? { Authorization: authHeader } : {}),
|
|
84
|
+
...request.headers,
|
|
85
85
|
};
|
|
86
86
|
let response;
|
|
87
87
|
const url = this.baseUrl ? this.baseUrl + request.path : request.baseUrl + request.path;
|
|
@@ -17,4 +17,29 @@ export declare const FlowcoreEventSchema: TObject<{
|
|
|
17
17
|
* The type for an event
|
|
18
18
|
*/
|
|
19
19
|
export type FlowcoreEvent = Static<typeof FlowcoreEventSchema>;
|
|
20
|
+
/**
|
|
21
|
+
* The input for the ingest event command
|
|
22
|
+
*/
|
|
23
|
+
export interface IngestEventInput<T extends unknown> {
|
|
24
|
+
/** the tenant name */
|
|
25
|
+
tenantName: string;
|
|
26
|
+
/** the data core id */
|
|
27
|
+
dataCoreId: string;
|
|
28
|
+
/** the flow type name */
|
|
29
|
+
flowTypeName: string;
|
|
30
|
+
/** the event type name */
|
|
31
|
+
eventTypeName: string;
|
|
32
|
+
/** the event data */
|
|
33
|
+
eventData: T;
|
|
34
|
+
/** the event id */
|
|
35
|
+
metadata?: Record<string, string>;
|
|
36
|
+
/** ttl (This accepts d, h, m, s. The maximum value is 7 days, this can be increased for higher subscription levels.) */
|
|
37
|
+
ttl?: string;
|
|
38
|
+
/** indicate if this event is emphemral (default false) */
|
|
39
|
+
isEphemeral?: boolean;
|
|
40
|
+
/** valid time of the event */
|
|
41
|
+
validTime?: string;
|
|
42
|
+
/** event time of the event, overrides what time bucket this event is stored in */
|
|
43
|
+
eventTime?: string;
|
|
44
|
+
}
|
|
20
45
|
//# sourceMappingURL=event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/contracts/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,mBAAmB,CAAA;AAE9G;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnC,SAAS,EAAE,OAAO,CAAA;CACnB,CAUC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/contracts/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,mBAAmB,CAAA;AAE9G;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnC,SAAS,EAAE,OAAO,CAAA;CACnB,CAUC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,OAAO;IACjD,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,qBAAqB;IACrB,SAAS,EAAE,CAAC,CAAA;IACZ,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,wHAAwH;IACxH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
|
|
@@ -3,7 +3,7 @@ export * from "./ai-agent-coordinator.js";
|
|
|
3
3
|
export type { DataCore } from "./data-core.js";
|
|
4
4
|
export type { EventType, EventTypeSchema, EventTypeSensitiveDataMask, EventTypeSensitiveDataMaskParsed, EventTypeSensitiveDataMaskParsedSchema, EventTypeSensitiveDataMaskSchema, SensitiveDataDefinition, SensitiveDataDefinitionSchema, } from "./event-type.js";
|
|
5
5
|
export type { FlowType } from "./flow-type.js";
|
|
6
|
-
export type { FlowcoreEvent } from "./event.js";
|
|
6
|
+
export type { FlowcoreEvent, IngestEventInput } from "./event.js";
|
|
7
7
|
export type { Tenant } from "./tenant.js";
|
|
8
8
|
export type { Permission } from "./permission.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EACV,SAAS,EACT,eAAe,EACf,0BAA0B,EAC1B,gCAAgC,EAChC,sCAAsC,EACtC,gCAAgC,EAChC,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EACV,SAAS,EACT,eAAe,EACf,0BAA0B,EAC1B,gCAAgC,EAChC,sCAAsC,EACtC,gCAAgC,EAChC,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
|