@epilot/app-client 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/openapi.json CHANGED
@@ -22,6 +22,95 @@
22
22
  }
23
23
  ],
24
24
  "paths": {
25
+ "/v1/app-configurations": {
26
+ "get": {
27
+ "summary": "listAppConfigurations",
28
+ "description": "List all app configuration metadata owned by an organization. To get full app configuration details, use the /v1/app-configurations/{appId} endpoint.",
29
+ "operationId": "listAppConfigurations",
30
+ "parameters": [
31
+ {
32
+ "name": "page",
33
+ "in": "query",
34
+ "schema": {
35
+ "type": "integer",
36
+ "default": 1
37
+ },
38
+ "description": "Page number for pagination"
39
+ },
40
+ {
41
+ "name": "pageSize",
42
+ "in": "query",
43
+ "schema": {
44
+ "type": "integer",
45
+ "default": 20
46
+ },
47
+ "description": "Number of items per page"
48
+ }
49
+ ],
50
+ "responses": {
51
+ "200": {
52
+ "description": "List of app configurations",
53
+ "content": {
54
+ "application/json": {
55
+ "schema": {
56
+ "type": "object",
57
+ "properties": {
58
+ "configurations": {
59
+ "type": "array",
60
+ "items": {
61
+ "$ref": "#/components/schemas/AppMetadata"
62
+ }
63
+ },
64
+ "pagination": {
65
+ "type": "object",
66
+ "properties": {
67
+ "total": {
68
+ "type": "integer"
69
+ },
70
+ "page": {
71
+ "type": "integer"
72
+ },
73
+ "pageSize": {
74
+ "type": "integer"
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }
84
+ },
85
+ "post": {
86
+ "summary": "createAppConfiguration",
87
+ "description": "Create a new private app configuration. To make it public a verification process needs to be triggered",
88
+ "operationId": "createAppConfiguration",
89
+ "requestBody": {
90
+ "$ref": "#/components/requestBodies/CreateAppRequest"
91
+ },
92
+ "responses": {
93
+ "202": {
94
+ "description": "App configuration created successfully",
95
+ "content": {
96
+ "application/json": {
97
+ "schema": {
98
+ "type": "object",
99
+ "required": [
100
+ "app_id"
101
+ ],
102
+ "properties": {
103
+ "app_id": {
104
+ "type": "string"
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ },
25
114
  "/v1/app-configurations/{appId}": {
26
115
  "parameters": [
27
116
  {
@@ -32,6 +121,14 @@
32
121
  "type": "string"
33
122
  },
34
123
  "description": "ID of the app configuration"
124
+ },
125
+ {
126
+ "name": "version",
127
+ "in": "query",
128
+ "schema": {
129
+ "type": "string"
130
+ },
131
+ "description": "Version of the app configuration to retrieve. Defaults to latest"
35
132
  }
36
133
  ],
37
134
  "get": {
@@ -55,6 +152,286 @@
55
152
  }
56
153
  }
57
154
  },
155
+ "/v1/app-configurations/{appId}/logo": {
156
+ "parameters": [
157
+ {
158
+ "name": "appId",
159
+ "in": "path",
160
+ "required": true,
161
+ "schema": {
162
+ "type": "string"
163
+ },
164
+ "description": "ID of the app configuration"
165
+ }
166
+ ],
167
+ "post": {
168
+ "summary": "createLogoUploadUrl",
169
+ "description": "Generate a presigned URL for uploading app logo to /<app-id>/logo.png path",
170
+ "operationId": "createLogoUploadUrl",
171
+ "responses": {
172
+ "200": {
173
+ "description": "Upload URL generated successfully",
174
+ "content": {
175
+ "application/json": {
176
+ "schema": {
177
+ "type": "object",
178
+ "required": [
179
+ "upload_url"
180
+ ],
181
+ "properties": {
182
+ "upload_url": {
183
+ "type": "string",
184
+ "description": "Presigned S3 URL for uploading the logo"
185
+ },
186
+ "expires_at": {
187
+ "type": "string",
188
+ "format": "date-time",
189
+ "description": "Timestamp when the upload URL expires"
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
195
+ },
196
+ "404": {
197
+ "description": "App configuration not found"
198
+ }
199
+ }
200
+ },
201
+ "delete": {
202
+ "summary": "deleteLogo",
203
+ "description": "Delete the app logo from /<app-id>/logo.png path",
204
+ "operationId": "deleteLogo",
205
+ "responses": {
206
+ "204": {
207
+ "description": "Logo deleted successfully"
208
+ },
209
+ "404": {
210
+ "description": "App configuration not found"
211
+ }
212
+ }
213
+ }
214
+ },
215
+ "/v1/app-configurations/{appId}/versions": {
216
+ "get": {
217
+ "summary": "listAppVersions",
218
+ "description": "Retrieve a list of versions for an app configuration",
219
+ "operationId": "listAppVersions",
220
+ "parameters": [
221
+ {
222
+ "name": "appId",
223
+ "in": "path",
224
+ "required": true,
225
+ "schema": {
226
+ "type": "string"
227
+ },
228
+ "description": "ID of the app configuration"
229
+ },
230
+ {
231
+ "name": "page",
232
+ "in": "query",
233
+ "schema": {
234
+ "type": "integer",
235
+ "default": 1
236
+ },
237
+ "description": "Page number for pagination"
238
+ },
239
+ {
240
+ "name": "pageSize",
241
+ "in": "query",
242
+ "schema": {
243
+ "type": "integer",
244
+ "default": 20
245
+ },
246
+ "description": "Number of items per page"
247
+ }
248
+ ],
249
+ "responses": {
250
+ "200": {
251
+ "description": "List of app versions",
252
+ "content": {
253
+ "application/json": {
254
+ "schema": {
255
+ "type": "object",
256
+ "properties": {
257
+ "versions": {
258
+ "type": "array",
259
+ "items": {
260
+ "type": "string"
261
+ }
262
+ },
263
+ "pagination": {
264
+ "type": "object",
265
+ "properties": {
266
+ "total": {
267
+ "type": "integer"
268
+ },
269
+ "page": {
270
+ "type": "integer"
271
+ },
272
+ "pageSize": {
273
+ "type": "integer"
274
+ }
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ }
283
+ }
284
+ },
285
+ "/v1/app-configurations/{appId}/versions/{version}": {
286
+ "get": {
287
+ "summary": "getAppConfigurationVersion",
288
+ "description": "Retrieve a specific version of an app configuration",
289
+ "operationId": "getAppConfigurationVersion",
290
+ "parameters": [
291
+ {
292
+ "name": "appId",
293
+ "in": "path",
294
+ "required": true,
295
+ "schema": {
296
+ "type": "string"
297
+ },
298
+ "description": "ID of the app configuration"
299
+ },
300
+ {
301
+ "name": "version",
302
+ "in": "path",
303
+ "required": true,
304
+ "schema": {
305
+ "type": "string"
306
+ },
307
+ "description": "Version of the app configuration to retrieve"
308
+ }
309
+ ],
310
+ "responses": {
311
+ "200": {
312
+ "description": "App configuration for specific version",
313
+ "content": {
314
+ "application/json": {
315
+ "schema": {
316
+ "$ref": "#/components/schemas/AppConfiguration"
317
+ }
318
+ }
319
+ }
320
+ },
321
+ "404": {
322
+ "description": "App configuration or version not found"
323
+ }
324
+ }
325
+ },
326
+ "delete": {
327
+ "summary": "deleteAppVersion",
328
+ "description": "Delete a specific version of an app configuration",
329
+ "operationId": "deleteAppVersion",
330
+ "parameters": [
331
+ {
332
+ "name": "appId",
333
+ "in": "path",
334
+ "required": true,
335
+ "schema": {
336
+ "type": "string"
337
+ },
338
+ "description": "ID of the app configuration"
339
+ },
340
+ {
341
+ "name": "version",
342
+ "in": "path",
343
+ "required": true,
344
+ "schema": {
345
+ "type": "string"
346
+ },
347
+ "description": "Version to delete"
348
+ }
349
+ ],
350
+ "responses": {
351
+ "204": {
352
+ "description": "Version deleted successfully"
353
+ },
354
+ "400": {
355
+ "description": "Cannot delete the only remaining version"
356
+ },
357
+ "404": {
358
+ "description": "Version not found"
359
+ },
360
+ "409": {
361
+ "description": "Version is in use by installations"
362
+ }
363
+ }
364
+ }
365
+ },
366
+ "/v1/app-configurations/{appId}/versions/{sourceVersion}/clone-to/{targetVersion}": {
367
+ "post": {
368
+ "summary": "cloneAppVersion",
369
+ "description": "Clone an existing app version to create a new version",
370
+ "operationId": "cloneAppVersion",
371
+ "parameters": [
372
+ {
373
+ "name": "appId",
374
+ "in": "path",
375
+ "required": true,
376
+ "schema": {
377
+ "type": "string"
378
+ },
379
+ "description": "ID of the app configuration"
380
+ },
381
+ {
382
+ "name": "sourceVersion",
383
+ "in": "path",
384
+ "required": true,
385
+ "schema": {
386
+ "type": "string"
387
+ },
388
+ "description": "Source version to clone from"
389
+ },
390
+ {
391
+ "name": "targetVersion",
392
+ "in": "path",
393
+ "required": true,
394
+ "schema": {
395
+ "type": "string"
396
+ },
397
+ "description": "Target version to create"
398
+ }
399
+ ],
400
+ "responses": {
401
+ "201": {
402
+ "description": "New version created successfully",
403
+ "content": {
404
+ "application/json": {
405
+ "schema": {
406
+ "type": "object",
407
+ "properties": {
408
+ "app_id": {
409
+ "type": "string"
410
+ },
411
+ "version": {
412
+ "type": "string"
413
+ },
414
+ "status": {
415
+ "type": "string",
416
+ "enum": [
417
+ "pending",
418
+ "published"
419
+ ]
420
+ }
421
+ }
422
+ }
423
+ }
424
+ }
425
+ },
426
+ "400": {
427
+ "description": "Invalid version format or target version already exists"
428
+ },
429
+ "404": {
430
+ "description": "Source version not found"
431
+ }
432
+ }
433
+ }
434
+ },
58
435
  "/v1/app": {
59
436
  "get": {
60
437
  "summary": "listInstalledApps",
@@ -213,34 +590,72 @@
213
590
  }
214
591
  }
215
592
  }
593
+ },
594
+ "/v1/app/{appId}/promote-to/{version}": {
595
+ "post": {
596
+ "summary": "promoteAppVersion",
597
+ "description": "Update an installed app to a new version",
598
+ "operationId": "promoteAppVersion",
599
+ "parameters": [
600
+ {
601
+ "name": "appId",
602
+ "in": "path",
603
+ "required": true,
604
+ "schema": {
605
+ "type": "string"
606
+ }
607
+ },
608
+ {
609
+ "name": "version",
610
+ "in": "path",
611
+ "required": true,
612
+ "schema": {
613
+ "type": "string"
614
+ }
615
+ }
616
+ ],
617
+ "responses": {
618
+ "200": {
619
+ "description": "App successfully promoted to new version",
620
+ "content": {
621
+ "application/json": {
622
+ "schema": {
623
+ "$ref": "#/components/schemas/App"
624
+ }
625
+ }
626
+ }
627
+ },
628
+ "400": {
629
+ "description": "Invalid version or version not available"
630
+ },
631
+ "404": {
632
+ "description": "App installation not found"
633
+ }
634
+ }
635
+ }
216
636
  }
217
637
  },
218
638
  "components": {
219
639
  "requestBodies": {
220
- "PublishAppRequest": {
640
+ "CreateAppRequest": {
221
641
  "required": true,
222
642
  "content": {
223
643
  "application/json": {
224
644
  "schema": {
225
645
  "type": "object",
226
646
  "required": [
227
- "s3_reference"
647
+ "name",
648
+ "description"
228
649
  ],
229
650
  "properties": {
230
- "s3_reference": {
231
- "$ref": "#/components/schemas/S3Reference"
651
+ "name": {
652
+ "$ref": "#/components/schemas/TranslatedString"
232
653
  },
233
- "metadata": {
234
- "type": "object",
235
- "properties": {
236
- "access_level": {
237
- "type": "string",
238
- "enum": [
239
- "public",
240
- "private"
241
- ]
242
- }
243
- }
654
+ "description": {
655
+ "$ref": "#/components/schemas/TranslatedString"
656
+ },
657
+ "category": {
658
+ "type": "string"
244
659
  }
245
660
  }
246
661
  }
@@ -809,6 +1224,123 @@
809
1224
  }
810
1225
  }
811
1226
  },
1227
+ "AppMetadata": {
1228
+ "description": "Basic metadata about your app configuration which does not get versioned",
1229
+ "type": "object",
1230
+ "properties": {
1231
+ "app_id": {
1232
+ "type": "string",
1233
+ "readOnly": true
1234
+ },
1235
+ "name": {
1236
+ "$ref": "#/components/schemas/TranslatedString"
1237
+ },
1238
+ "author": {
1239
+ "$ref": "#/components/schemas/Author"
1240
+ },
1241
+ "versions": {
1242
+ "type": "array",
1243
+ "items": {
1244
+ "type": "string"
1245
+ },
1246
+ "description": "List of available versions of the app",
1247
+ "readOnly": true
1248
+ },
1249
+ "latest_version": {
1250
+ "type": "string",
1251
+ "description": "Latest version of the app",
1252
+ "readOnly": true
1253
+ },
1254
+ "category": {
1255
+ "type": "string",
1256
+ "description": "Category of the app."
1257
+ },
1258
+ "icon_url": {
1259
+ "type": "string",
1260
+ "description": "URL of the app icon."
1261
+ },
1262
+ "documentation_url": {
1263
+ "type": "string",
1264
+ "description": "URL of the app documentation."
1265
+ },
1266
+ "homepage_url": {
1267
+ "type": "string",
1268
+ "description": "URL of the app homepage."
1269
+ },
1270
+ "description": {
1271
+ "$ref": "#/components/schemas/TranslatedString",
1272
+ "description": "Markdown description of the app."
1273
+ },
1274
+ "notifications": {
1275
+ "$ref": "#/components/schemas/NotificationConfig",
1276
+ "description": "Configuration for developer notifications"
1277
+ },
1278
+ "owner_org_id": {
1279
+ "type": "string",
1280
+ "description": "Organization ID of the app owner, required for private apps or sandbox accounts",
1281
+ "readOnly": true
1282
+ },
1283
+ "internal": {
1284
+ "type": "boolean",
1285
+ "default": false,
1286
+ "description": "Flag to indicate if the app is built by epilot.",
1287
+ "readOnly": true
1288
+ },
1289
+ "created_at": {
1290
+ "type": "string",
1291
+ "description": "Timestamp of app creation",
1292
+ "readOnly": true
1293
+ },
1294
+ "created_by": {
1295
+ "type": "string",
1296
+ "description": "User ID of the user who created the app",
1297
+ "readOnly": true
1298
+ }
1299
+ }
1300
+ },
1301
+ "AppVersioned": {
1302
+ "description": "Configuration data about your app which is versionable",
1303
+ "type": "object",
1304
+ "properties": {
1305
+ "components": {
1306
+ "type": "array",
1307
+ "items": {
1308
+ "$ref": "#/components/schemas/BaseComponent"
1309
+ }
1310
+ },
1311
+ "public": {
1312
+ "type": "boolean",
1313
+ "default": true,
1314
+ "description": "Flag to indicate if the app is public.",
1315
+ "readOnly": true
1316
+ },
1317
+ "pending": {
1318
+ "type": "boolean",
1319
+ "default": false,
1320
+ "description": "Flag to indicate if the app is pending for verification",
1321
+ "readOnly": true
1322
+ },
1323
+ "version": {
1324
+ "type": "string",
1325
+ "description": "Version of the app that is installed",
1326
+ "readOnly": true
1327
+ },
1328
+ "versioned_at": {
1329
+ "type": "string",
1330
+ "description": "Timestamp of the last version update",
1331
+ "readOnly": true
1332
+ },
1333
+ "versioned_by": {
1334
+ "type": "string",
1335
+ "description": "User ID of the user who last updated the app",
1336
+ "readOnly": true
1337
+ },
1338
+ "is_beta": {
1339
+ "type": "boolean",
1340
+ "description": "Flag to indicate if the app is in beta."
1341
+ }
1342
+ }
1343
+ },
812
1344
  "App": {
813
1345
  "allOf": [
814
1346
  {
@@ -818,12 +1350,7 @@
818
1350
  "description": "Information about the installed app",
819
1351
  "type": "object",
820
1352
  "properties": {
821
- "installation_id": {
822
- "type": "string",
823
- "description": "Unique identifier for the app installation",
824
- "readOnly": true
825
- },
826
- "organization_id": {
1353
+ "org_id": {
827
1354
  "type": "string",
828
1355
  "description": "Unique identifier for the organization the app is installed in",
829
1356
  "readOnly": true
@@ -860,35 +1387,26 @@
860
1387
  "items": {
861
1388
  "$ref": "#/components/schemas/OptionsRef"
862
1389
  }
1390
+ },
1391
+ "installed_version": {
1392
+ "type": "string",
1393
+ "description": "Version of the app that is installed",
1394
+ "readOnly": true
863
1395
  }
864
1396
  }
865
1397
  },
866
1398
  "AppConfiguration": {
1399
+ "allOf": [
1400
+ {
1401
+ "$ref": "#/components/schemas/AppMetadata"
1402
+ },
1403
+ {
1404
+ "$ref": "#/components/schemas/AppVersioned"
1405
+ }
1406
+ ],
867
1407
  "type": "object",
868
1408
  "description": "Configuration of the published app",
869
1409
  "properties": {
870
- "app_id": {
871
- "type": "string"
872
- },
873
- "name": {
874
- "$ref": "#/components/schemas/TranslatedString"
875
- },
876
- "icon_url": {
877
- "type": "string",
878
- "description": "URL of the app icon."
879
- },
880
- "documentation_url": {
881
- "type": "string",
882
- "description": "URL of the app documentation."
883
- },
884
- "description": {
885
- "$ref": "#/components/schemas/TranslatedString",
886
- "description": "Markdown description of the app."
887
- },
888
- "notifications": {
889
- "$ref": "#/components/schemas/NotificationConfig",
890
- "description": "Configuration for developer notifications"
891
- },
892
1410
  "created_by": {
893
1411
  "type": "string",
894
1412
  "readOnly": true
@@ -904,45 +1422,6 @@
904
1422
  "updated_by": {
905
1423
  "type": "string",
906
1424
  "readOnly": true
907
- },
908
- "version": {
909
- "type": "string",
910
- "readOnly": true
911
- },
912
- "author": {
913
- "$ref": "#/components/schemas/Author"
914
- },
915
- "status": {
916
- "type": "string",
917
- "enum": [
918
- "published",
919
- "pending"
920
- ]
921
- },
922
- "components": {
923
- "type": "array",
924
- "items": {
925
- "$ref": "#/components/schemas/BaseComponent"
926
- }
927
- },
928
- "internal": {
929
- "type": "boolean",
930
- "default": false,
931
- "description": "Flag to indicate if the app is built by epilot.",
932
- "readOnly": true
933
- },
934
- "owner_org_id": {
935
- "type": "string",
936
- "description": "Organization ID of the app owner, required for private apps"
937
- },
938
- "access_level": {
939
- "type": "string",
940
- "enum": [
941
- "public",
942
- "private"
943
- ],
944
- "default": "public",
945
- "description": "Access level of the app."
946
1425
  }
947
1426
  }
948
1427
  },