@epilot/app-client 0.0.7 → 0.0.9

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.
@@ -1 +1 @@
1
- (()=>{"use strict";var e={187:function(e,p,t){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(p,"__esModule",{value:!0});var a=r(t(466));p.default=a.default},466:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"servers":[{"url":"https://app.sls.epilot.io"}],"paths":{"/v1/app-configurations/{appId}":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the app configuration"}],"get":{"operationId":"getAppConfiguration","responses":{}}},"/v1/app":{"get":{"operationId":"listInstalledApps","parameters":[{"name":"componentType","in":"query"},{"name":"page","in":"query"},{"name":"pageSize","in":"query"}],"responses":{}}},"/v1/app/{appId}":{"get":{"operationId":"getInstalledApp","parameters":[{"name":"appId","in":"path","required":true}],"responses":{}},"put":{"operationId":"installApp","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/InstallAppRequest"},"responses":{}},"delete":{"operationId":"uninstallApp","parameters":[{"name":"appId","in":"path","required":true}],"responses":{}}}},"components":{"requestBodies":{"InstallAppRequest":{"content":{"application/json":{}}}}}}')}},p={},t=function t(r){var a=p[r];if(void 0!==a)return a.exports;var n=p[r]={exports:{}};return e[r].call(n.exports,n,n.exports,t),n.exports}(187),r=exports;for(var a in t)r[a]=t[a];t.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
1
+ (()=>{"use strict";var e={187:function(e,p,t){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(p,"__esModule",{value:!0});var s=r(t(466));p.default=s.default},466:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"servers":[{"url":"https://app.sls.epilot.io"}],"paths":{"/v1/app-configurations/upload-url":{"post":{"operationId":"getUploadUrl","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/app-configurations":{"post":{"operationId":"publishApp","requestBody":{"$ref":"#/components/requestBodies/PublishAppRequest"},"responses":{}}},"/v1/app-configurations/{appId}":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the app configuration"}],"get":{"operationId":"getAppConfiguration","responses":{}}},"/v1/app":{"get":{"operationId":"listInstalledApps","parameters":[{"name":"componentType","in":"query"},{"name":"enabled","in":"query"},{"name":"page","in":"query"},{"name":"pageSize","in":"query"}],"responses":{}}},"/v1/app/{appId}":{"get":{"operationId":"getInstalledApp","parameters":[{"name":"appId","in":"path","required":true}],"responses":{}},"put":{"operationId":"installApp","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/InstallAppRequest"},"responses":{}},"delete":{"operationId":"uninstallApp","parameters":[{"name":"appId","in":"path","required":true}],"responses":{}}}},"components":{"requestBodies":{"PublishAppRequest":{"required":true,"content":{"application/json":{}}},"InstallAppRequest":{"content":{"application/json":{}}}}}}')}},p={},t=function t(r){var s=p[r];if(void 0!==s)return s.exports;var n=p[r]={exports:{}};return e[r].call(n.exports,n,n.exports,t),n.exports}(187),r=exports;for(var s in t)r[s]=t[s];t.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
@@ -10,6 +10,27 @@
10
10
  }
11
11
  ],
12
12
  "paths": {
13
+ "/v1/app-configurations/upload-url": {
14
+ "post": {
15
+ "operationId": "getUploadUrl",
16
+ "requestBody": {
17
+ "required": true,
18
+ "content": {
19
+ "application/json": {}
20
+ }
21
+ },
22
+ "responses": {}
23
+ }
24
+ },
25
+ "/v1/app-configurations": {
26
+ "post": {
27
+ "operationId": "publishApp",
28
+ "requestBody": {
29
+ "$ref": "#/components/requestBodies/PublishAppRequest"
30
+ },
31
+ "responses": {}
32
+ }
33
+ },
13
34
  "/v1/app-configurations/{appId}": {
14
35
  "parameters": [
15
36
  {
@@ -32,6 +53,10 @@
32
53
  "name": "componentType",
33
54
  "in": "query"
34
55
  },
56
+ {
57
+ "name": "enabled",
58
+ "in": "query"
59
+ },
35
60
  {
36
61
  "name": "page",
37
62
  "in": "query"
@@ -85,6 +110,12 @@
85
110
  },
86
111
  "components": {
87
112
  "requestBodies": {
113
+ "PublishAppRequest": {
114
+ "required": true,
115
+ "content": {
116
+ "application/json": {}
117
+ }
118
+ },
88
119
  "InstallAppRequest": {
89
120
  "content": {
90
121
  "application/json": {}
package/dist/openapi.d.ts CHANGED
@@ -16,6 +16,12 @@ declare namespace Components {
16
16
  */
17
17
  option_values?: Schemas.OptionsRef[];
18
18
  }
19
+ export interface PublishAppRequest {
20
+ s3_reference: Schemas.S3Reference;
21
+ metadata?: {
22
+ access_level?: "public" | "private";
23
+ };
24
+ }
19
25
  }
20
26
  namespace Schemas {
21
27
  /**
@@ -33,6 +39,7 @@ declare namespace Components {
33
39
  */
34
40
  documentation_url?: string;
35
41
  description?: TranslatedString;
42
+ notifications?: NotificationConfig;
36
43
  created_by?: string;
37
44
  created_at?: string;
38
45
  /**
@@ -102,6 +109,10 @@ declare namespace Components {
102
109
  * Markdown description of the app.
103
110
  */
104
111
  description?: TranslatedString;
112
+ /**
113
+ * Configuration for developer notifications
114
+ */
115
+ notifications?: NotificationConfig;
105
116
  created_by?: string;
106
117
  created_at?: string;
107
118
  updated_at?: string;
@@ -124,39 +135,20 @@ declare namespace Components {
124
135
  access_level?: "public" | "private";
125
136
  }
126
137
  export interface Author {
127
- /**
128
- * Unique identifier for the author
129
- */
130
- id: string;
131
138
  /**
132
139
  * Name of the author
133
140
  */
134
- name: string;
141
+ name?: string;
135
142
  /**
136
143
  * Company of the author
137
144
  */
138
- company?: string;
145
+ company: string;
139
146
  /**
140
147
  * Email of the author
141
148
  */
142
149
  email?: string;
143
150
  }
144
151
  export type BaseComponent = {
145
- component_type: "CUSTOM_JOURNEY_BLOCK";
146
- configuration: JourneyBlockConfig;
147
- /**
148
- * Unique identifier for the component
149
- */
150
- id: string;
151
- name?: TranslatedString;
152
- /**
153
- * List of options for the app component
154
- */
155
- options?: /* Options for the component configuration */ Options[];
156
- } | {
157
- component_type: "PORTAL_EXTENSION";
158
- origin?: "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL";
159
- configuration: PortalExtensionConfig;
160
152
  /**
161
153
  * Unique identifier for the component
162
154
  */
@@ -166,7 +158,7 @@ declare namespace Components {
166
158
  * List of options for the app component
167
159
  */
168
160
  options?: /* Options for the component configuration */ Options[];
169
- };
161
+ } & (JourneyBlockComponent | PortalExtensionComponent);
170
162
  export interface BaseComponentCommon {
171
163
  /**
172
164
  * Unique identifier for the component
@@ -211,16 +203,61 @@ declare namespace Components {
211
203
  * Type of app component
212
204
  */
213
205
  export type ComponentType = "CUSTOM_JOURNEY_BLOCK" | "PORTAL_EXTENSION";
206
+ export interface JourneyBlockComponent {
207
+ component_type: "CUSTOM_JOURNEY_BLOCK";
208
+ configuration: JourneyBlockConfig;
209
+ }
210
+ export interface JourneyBlockComponentArgs {
211
+ /**
212
+ * Key matching a config_option from the component
213
+ */
214
+ key: string;
215
+ /**
216
+ * Flag to indicate if this option is required
217
+ */
218
+ required?: boolean;
219
+ /**
220
+ * Description of what this component arg does
221
+ */
222
+ description?: TranslatedString;
223
+ /**
224
+ * Human-readable label for the component arg
225
+ */
226
+ label?: TranslatedString;
227
+ type?: "text" | "number" | "boolean";
228
+ }
214
229
  export interface JourneyBlockConfig {
215
230
  /**
216
231
  * URL of the web component object
232
+ * example:
233
+ * https://cdn.apps.com/123/v1.0.0/bundle.js
217
234
  */
218
235
  component_url: string;
219
236
  /**
220
237
  * Custom element tag for the component
221
238
  */
222
- component_tag?: string;
239
+ component_tag: string;
240
+ /**
241
+ * Arguments to pass to the component
242
+ */
243
+ component_args?: JourneyBlockComponentArgs[];
223
244
  }
245
+ export interface NotificationConfig {
246
+ /**
247
+ * Email address to receive notifications
248
+ * example:
249
+ * developer@example.com
250
+ */
251
+ email: string; // email
252
+ /**
253
+ * List of events to subscribe to
254
+ */
255
+ events: [
256
+ NotificationEvent,
257
+ ...NotificationEvent[]
258
+ ];
259
+ }
260
+ export type NotificationEvent = "app.installed" | "app.uninstalled";
224
261
  export interface Option {
225
262
  /**
226
263
  * Key matching a config_option from the component
@@ -251,7 +288,11 @@ declare namespace Components {
251
288
  * Detailed description of what this configuration option does
252
289
  */
253
290
  description?: string;
254
- type: "string" | "number" | "boolean" | "secret";
291
+ /**
292
+ * The configured value for this option. Is only present when the component is installed.
293
+ */
294
+ value?: string;
295
+ type: "text" | "number" | "boolean" | "secret";
255
296
  }
256
297
  export interface OptionsRef {
257
298
  /**
@@ -268,12 +309,17 @@ declare namespace Components {
268
309
  [name: string]: string;
269
310
  };
270
311
  }
312
+ export interface PortalExtensionComponent {
313
+ component_type: "PORTAL_EXTENSION";
314
+ origin?: "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL";
315
+ configuration: PortalExtensionConfig;
316
+ }
271
317
  export interface PortalExtensionConfig {
272
318
  id?: string;
273
319
  hooks?: {
274
320
  id?: string;
275
321
  type?: string;
276
- name?: string;
322
+ name?: TranslatedString;
277
323
  interval?: string[];
278
324
  auth?: PortalAuth;
279
325
  call?: {
@@ -289,8 +335,8 @@ declare namespace Components {
289
335
  links?: {
290
336
  id?: string;
291
337
  type?: string;
292
- name?: string;
293
- description?: string;
338
+ name?: TranslatedString;
339
+ description?: TranslatedString;
294
340
  condition?: string;
295
341
  auth?: PortalAuth;
296
342
  redirect?: {
@@ -327,10 +373,9 @@ declare namespace Components {
327
373
  }
328
374
  export interface UploadFilePayload {
329
375
  /**
330
- * example:
331
- * example.manifest.zip
376
+ * ID of the app configuration. Required for app updates.
332
377
  */
333
- filename: string;
378
+ app_id?: string;
334
379
  }
335
380
  }
336
381
  }
@@ -355,6 +400,26 @@ declare namespace Paths {
355
400
  }
356
401
  }
357
402
  }
403
+ namespace GetUploadUrl {
404
+ export type RequestBody = Components.Schemas.UploadFilePayload;
405
+ namespace Responses {
406
+ export interface $200 {
407
+ /**
408
+ * ID of the app configuration
409
+ */
410
+ app_id?: string;
411
+ /**
412
+ * Presigned S3 URL for uploading the file
413
+ */
414
+ upload_url: string;
415
+ s3_reference: Components.Schemas.S3Reference;
416
+ /**
417
+ * Timestamp when the upload URL expires
418
+ */
419
+ expires_at?: string; // date-time
420
+ }
421
+ }
422
+ }
358
423
  namespace InstallApp {
359
424
  namespace Parameters {
360
425
  export type AppId = string;
@@ -373,11 +438,13 @@ declare namespace Paths {
373
438
  namespace ListInstalledApps {
374
439
  namespace Parameters {
375
440
  export type ComponentType = /* Type of app component */ Components.Schemas.ComponentType;
441
+ export type Enabled = boolean;
376
442
  export type Page = number;
377
443
  export type PageSize = number;
378
444
  }
379
445
  export interface QueryParameters {
380
446
  componentType?: Parameters.ComponentType;
447
+ enabled?: Parameters.Enabled;
381
448
  page?: Parameters.Page;
382
449
  pageSize?: Parameters.PageSize;
383
450
  }
@@ -392,6 +459,19 @@ declare namespace Paths {
392
459
  }
393
460
  }
394
461
  }
462
+ namespace PublishApp {
463
+ export type RequestBody = Components.RequestBodies.PublishAppRequest;
464
+ namespace Responses {
465
+ export interface $202 {
466
+ app_id: string;
467
+ status: "pending" | "published";
468
+ /**
469
+ * Step Function execution ARN for status tracking
470
+ */
471
+ execution_arn?: string;
472
+ }
473
+ }
474
+ }
395
475
  namespace UninstallApp {
396
476
  namespace Parameters {
397
477
  export type AppId = string;
@@ -417,6 +497,26 @@ declare namespace Paths {
417
497
  }
418
498
 
419
499
  export interface OperationMethods {
500
+ /**
501
+ * getUploadUrl - getUploadUrl
502
+ *
503
+ * Generate a presigned URL for uploading app package zip file
504
+ */
505
+ 'getUploadUrl'(
506
+ parameters?: Parameters<UnknownParamsObject> | null,
507
+ data?: Paths.GetUploadUrl.RequestBody,
508
+ config?: AxiosRequestConfig
509
+ ): OperationResponse<Paths.GetUploadUrl.Responses.$200>
510
+ /**
511
+ * publishApp - publishApp
512
+ *
513
+ * Publish a new app configuration from uploaded zip file
514
+ */
515
+ 'publishApp'(
516
+ parameters?: Parameters<UnknownParamsObject> | null,
517
+ data?: Paths.PublishApp.RequestBody,
518
+ config?: AxiosRequestConfig
519
+ ): OperationResponse<Paths.PublishApp.Responses.$202>
420
520
  /**
421
521
  * getAppConfiguration - getAppConfiguration
422
522
  *
@@ -470,6 +570,30 @@ export interface OperationMethods {
470
570
  }
471
571
 
472
572
  export interface PathsDictionary {
573
+ ['/v1/app-configurations/upload-url']: {
574
+ /**
575
+ * getUploadUrl - getUploadUrl
576
+ *
577
+ * Generate a presigned URL for uploading app package zip file
578
+ */
579
+ 'post'(
580
+ parameters?: Parameters<UnknownParamsObject> | null,
581
+ data?: Paths.GetUploadUrl.RequestBody,
582
+ config?: AxiosRequestConfig
583
+ ): OperationResponse<Paths.GetUploadUrl.Responses.$200>
584
+ }
585
+ ['/v1/app-configurations']: {
586
+ /**
587
+ * publishApp - publishApp
588
+ *
589
+ * Publish a new app configuration from uploaded zip file
590
+ */
591
+ 'post'(
592
+ parameters?: Parameters<UnknownParamsObject> | null,
593
+ data?: Paths.PublishApp.RequestBody,
594
+ config?: AxiosRequestConfig
595
+ ): OperationResponse<Paths.PublishApp.Responses.$202>
596
+ }
473
597
  ['/v1/app-configurations/{appId}']: {
474
598
  /**
475
599
  * getAppConfiguration - getAppConfiguration
@@ -537,11 +661,16 @@ export type BaseComponent = Components.Schemas.BaseComponent;
537
661
  export type BaseComponentCommon = Components.Schemas.BaseComponentCommon;
538
662
  export type CallerIdentity = Components.Schemas.CallerIdentity;
539
663
  export type ComponentType = Components.Schemas.ComponentType;
664
+ export type JourneyBlockComponent = Components.Schemas.JourneyBlockComponent;
665
+ export type JourneyBlockComponentArgs = Components.Schemas.JourneyBlockComponentArgs;
540
666
  export type JourneyBlockConfig = Components.Schemas.JourneyBlockConfig;
667
+ export type NotificationConfig = Components.Schemas.NotificationConfig;
668
+ export type NotificationEvent = Components.Schemas.NotificationEvent;
541
669
  export type Option = Components.Schemas.Option;
542
670
  export type Options = Components.Schemas.Options;
543
671
  export type OptionsRef = Components.Schemas.OptionsRef;
544
672
  export type PortalAuth = Components.Schemas.PortalAuth;
673
+ export type PortalExtensionComponent = Components.Schemas.PortalExtensionComponent;
545
674
  export type PortalExtensionConfig = Components.Schemas.PortalExtensionConfig;
546
675
  export type S3Reference = Components.Schemas.S3Reference;
547
676
  export type TranslatedString = Components.Schemas.TranslatedString;
package/dist/openapi.json CHANGED
@@ -22,6 +22,99 @@
22
22
  }
23
23
  ],
24
24
  "paths": {
25
+ "/v1/app-configurations/upload-url": {
26
+ "post": {
27
+ "summary": "getUploadUrl",
28
+ "description": "Generate a presigned URL for uploading app package zip file",
29
+ "operationId": "getUploadUrl",
30
+ "requestBody": {
31
+ "required": true,
32
+ "content": {
33
+ "application/json": {
34
+ "schema": {
35
+ "$ref": "#/components/schemas/UploadFilePayload"
36
+ }
37
+ }
38
+ }
39
+ },
40
+ "responses": {
41
+ "200": {
42
+ "description": "Upload URL generated successfully",
43
+ "content": {
44
+ "application/json": {
45
+ "schema": {
46
+ "type": "object",
47
+ "required": [
48
+ "upload_url",
49
+ "s3_reference"
50
+ ],
51
+ "properties": {
52
+ "app_id": {
53
+ "type": "string",
54
+ "description": "ID of the app configuration"
55
+ },
56
+ "upload_url": {
57
+ "type": "string",
58
+ "description": "Presigned S3 URL for uploading the file"
59
+ },
60
+ "s3_reference": {
61
+ "$ref": "#/components/schemas/S3Reference"
62
+ },
63
+ "expires_at": {
64
+ "type": "string",
65
+ "format": "date-time",
66
+ "description": "Timestamp when the upload URL expires"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
75
+ },
76
+ "/v1/app-configurations": {
77
+ "post": {
78
+ "summary": "publishApp",
79
+ "description": "Publish a new app configuration from uploaded zip file",
80
+ "operationId": "publishApp",
81
+ "requestBody": {
82
+ "$ref": "#/components/requestBodies/PublishAppRequest"
83
+ },
84
+ "responses": {
85
+ "202": {
86
+ "description": "App publication process started",
87
+ "content": {
88
+ "application/json": {
89
+ "schema": {
90
+ "type": "object",
91
+ "required": [
92
+ "app_id",
93
+ "status"
94
+ ],
95
+ "properties": {
96
+ "app_id": {
97
+ "type": "string"
98
+ },
99
+ "status": {
100
+ "type": "string",
101
+ "enum": [
102
+ "pending",
103
+ "published"
104
+ ]
105
+ },
106
+ "execution_arn": {
107
+ "type": "string",
108
+ "description": "Step Function execution ARN for status tracking"
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ },
25
118
  "/v1/app-configurations/{appId}": {
26
119
  "parameters": [
27
120
  {
@@ -70,6 +163,14 @@
70
163
  "description": "Filter apps by specific component type",
71
164
  "example": "CUSTOM_JOURNEY_BLOCK"
72
165
  },
166
+ {
167
+ "name": "enabled",
168
+ "in": "query",
169
+ "schema": {
170
+ "type": "boolean"
171
+ },
172
+ "description": "Filter apps by enabled status"
173
+ },
73
174
  {
74
175
  "name": "page",
75
176
  "in": "query",
@@ -209,6 +310,36 @@
209
310
  },
210
311
  "components": {
211
312
  "requestBodies": {
313
+ "PublishAppRequest": {
314
+ "required": true,
315
+ "content": {
316
+ "application/json": {
317
+ "schema": {
318
+ "type": "object",
319
+ "required": [
320
+ "s3_reference"
321
+ ],
322
+ "properties": {
323
+ "s3_reference": {
324
+ "$ref": "#/components/schemas/S3Reference"
325
+ },
326
+ "metadata": {
327
+ "type": "object",
328
+ "properties": {
329
+ "access_level": {
330
+ "type": "string",
331
+ "enum": [
332
+ "public",
333
+ "private"
334
+ ]
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ },
212
343
  "InstallAppRequest": {
213
344
  "content": {
214
345
  "application/json": {
@@ -267,10 +398,14 @@
267
398
  "type": "string",
268
399
  "description": "Detailed description of what this configuration option does"
269
400
  },
401
+ "value": {
402
+ "type": "string",
403
+ "description": "The configured value for this option. Is only present when the component is installed."
404
+ },
270
405
  "type": {
271
406
  "type": "string",
272
407
  "enum": [
273
- "string",
408
+ "text",
274
409
  "number",
275
410
  "boolean",
276
411
  "secret"
@@ -317,14 +452,11 @@
317
452
  "UploadFilePayload": {
318
453
  "type": "object",
319
454
  "properties": {
320
- "filename": {
455
+ "app_id": {
321
456
  "type": "string",
322
- "example": "example.manifest.zip"
457
+ "description": "ID of the app configuration. Required for app updates."
323
458
  }
324
- },
325
- "required": [
326
- "filename"
327
- ]
459
+ }
328
460
  },
329
461
  "S3Reference": {
330
462
  "type": "object",
@@ -356,14 +488,9 @@
356
488
  "Author": {
357
489
  "type": "object",
358
490
  "required": [
359
- "id",
360
- "name"
491
+ "company"
361
492
  ],
362
493
  "properties": {
363
- "id": {
364
- "type": "string",
365
- "description": "Unique identifier for the author"
366
- },
367
494
  "name": {
368
495
  "type": "string",
369
496
  "description": "Name of the author"
@@ -378,6 +505,36 @@
378
505
  }
379
506
  }
380
507
  },
508
+ "NotificationConfig": {
509
+ "type": "object",
510
+ "required": [
511
+ "email",
512
+ "events"
513
+ ],
514
+ "properties": {
515
+ "email": {
516
+ "type": "string",
517
+ "format": "email",
518
+ "description": "Email address to receive notifications",
519
+ "example": "developer@example.com"
520
+ },
521
+ "events": {
522
+ "type": "array",
523
+ "description": "List of events to subscribe to",
524
+ "items": {
525
+ "$ref": "#/components/schemas/NotificationEvent"
526
+ },
527
+ "minItems": 1
528
+ }
529
+ }
530
+ },
531
+ "NotificationEvent": {
532
+ "type": "string",
533
+ "enum": [
534
+ "app.installed",
535
+ "app.uninstalled"
536
+ ]
537
+ },
381
538
  "BaseComponentCommon": {
382
539
  "type": "object",
383
540
  "required": [
@@ -407,58 +564,65 @@
407
564
  "$ref": "#/components/schemas/BaseComponentCommon"
408
565
  },
409
566
  {
567
+ "type": "object",
568
+ "discriminator": {
569
+ "propertyName": "component_type",
570
+ "mapping": {
571
+ "CUSTOM_JOURNEY_BLOCK": "#/components/schemas/JourneyBlockComponent",
572
+ "PORTAL_EXTENSION": "#/components/schemas/PortalExtensionComponent"
573
+ }
574
+ },
410
575
  "oneOf": [
411
576
  {
412
- "type": "object",
413
- "required": [
414
- "component_type",
415
- "configuration"
416
- ],
417
- "properties": {
418
- "component_type": {
419
- "type": "string",
420
- "enum": [
421
- "CUSTOM_JOURNEY_BLOCK"
422
- ]
423
- },
424
- "configuration": {
425
- "$ref": "#/components/schemas/JourneyBlockConfig"
426
- }
427
- }
577
+ "$ref": "#/components/schemas/JourneyBlockComponent"
428
578
  },
429
579
  {
430
- "type": "object",
431
- "required": [
432
- "component_type",
433
- "configuration"
434
- ],
435
- "properties": {
436
- "component_type": {
437
- "type": "string",
438
- "enum": [
439
- "PORTAL_EXTENSION"
440
- ]
441
- },
442
- "origin": {
443
- "type": "string",
444
- "enum": [
445
- "END_CUSTOMER_PORTAL",
446
- "INSTALLER_PORTAL"
447
- ]
448
- },
449
- "configuration": {
450
- "$ref": "#/components/schemas/PortalExtensionConfig"
451
- }
452
- }
580
+ "$ref": "#/components/schemas/PortalExtensionComponent"
453
581
  }
454
582
  ]
455
583
  }
584
+ ]
585
+ },
586
+ "JourneyBlockComponent": {
587
+ "type": "object",
588
+ "required": [
589
+ "component_type",
590
+ "configuration"
456
591
  ],
457
- "discriminator": {
458
- "propertyName": "componentType",
459
- "mapping": {
460
- "CUSTOM_JOURNEY_BLOCK": "#/components/schemas/JourneyBlockConfig",
461
- "PORTAL_EXTENSION": "#/components/schemas/PortalExtensionConfig"
592
+ "properties": {
593
+ "component_type": {
594
+ "type": "string",
595
+ "enum": [
596
+ "CUSTOM_JOURNEY_BLOCK"
597
+ ]
598
+ },
599
+ "configuration": {
600
+ "$ref": "#/components/schemas/JourneyBlockConfig"
601
+ }
602
+ }
603
+ },
604
+ "PortalExtensionComponent": {
605
+ "type": "object",
606
+ "required": [
607
+ "component_type",
608
+ "configuration"
609
+ ],
610
+ "properties": {
611
+ "component_type": {
612
+ "type": "string",
613
+ "enum": [
614
+ "PORTAL_EXTENSION"
615
+ ]
616
+ },
617
+ "origin": {
618
+ "type": "string",
619
+ "enum": [
620
+ "END_CUSTOMER_PORTAL",
621
+ "INSTALLER_PORTAL"
622
+ ]
623
+ },
624
+ "configuration": {
625
+ "$ref": "#/components/schemas/PortalExtensionConfig"
462
626
  }
463
627
  }
464
628
  },
@@ -480,7 +644,7 @@
480
644
  "type": "string"
481
645
  },
482
646
  "name": {
483
- "type": "string"
647
+ "$ref": "#/components/schemas/TranslatedString"
484
648
  },
485
649
  "interval": {
486
650
  "type": "array",
@@ -526,10 +690,10 @@
526
690
  "type": "string"
527
691
  },
528
692
  "name": {
529
- "type": "string"
693
+ "$ref": "#/components/schemas/TranslatedString"
530
694
  },
531
695
  "description": {
532
- "type": "string"
696
+ "$ref": "#/components/schemas/TranslatedString"
533
697
  },
534
698
  "condition": {
535
699
  "type": "string"
@@ -580,16 +744,58 @@
580
744
  "type": "object",
581
745
  "required": [
582
746
  "component_url",
583
- "componentTag"
747
+ "component_tag"
584
748
  ],
585
749
  "properties": {
586
750
  "component_url": {
587
751
  "type": "string",
588
- "description": "URL of the web component object"
752
+ "description": "URL of the web component object",
753
+ "example": "https://cdn.apps.com/123/v1.0.0/bundle.js"
589
754
  },
590
755
  "component_tag": {
591
756
  "type": "string",
592
757
  "description": "Custom element tag for the component"
758
+ },
759
+ "component_args": {
760
+ "type": "array",
761
+ "description": "Arguments to pass to the component",
762
+ "items": {
763
+ "$ref": "#/components/schemas/JourneyBlockComponentArgs"
764
+ }
765
+ }
766
+ }
767
+ },
768
+ "JourneyBlockComponentArgs": {
769
+ "type": "object",
770
+ "required": [
771
+ "key"
772
+ ],
773
+ "properties": {
774
+ "key": {
775
+ "type": "string",
776
+ "description": "Key matching a config_option from the component"
777
+ },
778
+ "required": {
779
+ "type": "boolean",
780
+ "description": "Flag to indicate if this option is required",
781
+ "default": false
782
+ },
783
+ "description": {
784
+ "description": "Description of what this component arg does",
785
+ "$ref": "#/components/schemas/TranslatedString"
786
+ },
787
+ "label": {
788
+ "description": "Human-readable label for the component arg",
789
+ "$ref": "#/components/schemas/TranslatedString"
790
+ },
791
+ "type": {
792
+ "type": "string",
793
+ "enum": [
794
+ "text",
795
+ "number",
796
+ "boolean"
797
+ ],
798
+ "default": "text"
593
799
  }
594
800
  }
595
801
  },
@@ -669,6 +875,10 @@
669
875
  "$ref": "#/components/schemas/TranslatedString",
670
876
  "description": "Markdown description of the app."
671
877
  },
878
+ "notifications": {
879
+ "$ref": "#/components/schemas/NotificationConfig",
880
+ "description": "Configuration for developer notifications"
881
+ },
672
882
  "created_by": {
673
883
  "type": "string",
674
884
  "readOnly": true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/app-client",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "JavaScript client library for the epilot App API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",