@epilot/app-client 0.13.4 → 0.13.6
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/LICENSE +21 -0
- package/dist/definition.js +1 -1
- package/dist/openapi-runtime.json +22 -0
- package/dist/openapi.d.ts +133 -5
- package/dist/openapi.json +129 -5
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 epilot GmbH
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/dist/definition.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e={330:function(e,r,t){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var
|
|
1
|
+
(()=>{"use strict";var e={330:function(e,r,t){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var o=n(t(466));r.default=o.default},466:e=>{e.exports=JSON.parse('{"openapi":"3.1.0","info":{"title":"","version":""},"servers":[{"url":"https://app.sls.epilot.io"}],"paths":{"/v1/public/app/{appId}/components/{componentId}":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the app configuration to install"},{"name":"componentId","in":"path","required":true,"description":"ID of the component to retrieve"}],"get":{"operationId":"getPublicFacingComponent","responses":{}}},"/v1/app-configurations":{"get":{"operationId":"listConfigurations","parameters":[{"name":"page","in":"query"},{"name":"pageSize","in":"query"}],"responses":{}},"post":{"operationId":"createConfiguration","requestBody":{"$ref":"#/components/requestBodies/CreateConfigRequest"},"responses":{}}},"/v1/app-configurations/public":{"get":{"operationId":"listPublicConfigurations","parameters":[{"name":"page","in":"query"},{"name":"pageSize","in":"query"}],"responses":{}}},"/v1/app-configurations/public/{appId}":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the app configuration to install"}],"get":{"operationId":"getPublicConfiguration","parameters":[{"name":"version","in":"query"}],"responses":{}}},"/v1/app-configurations/{appId}":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the app configuration"}],"get":{"operationId":"getConfiguration","parameters":[{"name":"version","in":"query"}],"responses":{}},"patch":{"operationId":"patchMetadata","requestBody":{"$ref":"#/components/requestBodies/PatchConfigMetadataRequest"},"responses":{}},"delete":{"operationId":"deleteConfiguration","responses":{}}},"/v1/app-configurations/{appId}/events":{"post":{"operationId":"queryEvents","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/app-configurations/{appId}/bundle":{"post":{"operationId":"createBundleUploadUrl","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/CreateBundlePresignedRequest"},"responses":{}}},"/v1/app-configurations/{appId}/zip":{"post":{"operationId":"createZipUploadUrl","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/app-configurations/{appId}/logo":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the app configuration"}],"post":{"operationId":"createLogoUploadUrl","requestBody":{"$ref":"#/components/requestBodies/CreateLogoPresignedRequest"},"responses":{}},"delete":{"operationId":"deleteLogo","responses":{}}},"/v1/app-configurations/{appId}/versions":{"get":{"operationId":"listVersions","parameters":[{"name":"appId","in":"path","required":true},{"name":"page","in":"query"},{"name":"pageSize","in":"query"}],"responses":{}}},"/v1/app-configurations/{appId}/versions/{version}":{"get":{"operationId":"getVersion","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"responses":{}},"delete":{"operationId":"deleteVersion","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"responses":{}},"patch":{"operationId":"patchVersion","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/PatchVersionRequest"},"responses":{}}},"/v1/app-configurations/{appId}/versions/{version}/review":{"get":{"operationId":"getReview","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"responses":{}},"post":{"operationId":"createReview","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/CreateReviewRequest"},"responses":{}}},"/v1/app-configurations/{appId}/versions/{version}/components":{"post":{"operationId":"createComponent","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/UpsertComponentRequest"},"responses":{}}},"/v1/app-configurations/{appId}/versions/{version}/components/{componentId}":{"patch":{"operationId":"patchComponent","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true},{"name":"componentId","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/UpsertComponentRequest"},"responses":{}},"delete":{"operationId":"deleteComponent","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true},{"name":"componentId","in":"path","required":true}],"responses":{}}},"/v1/app-configurations/{appId}/versions/{sourceVersion}/clone-to/{targetVersion}":{"post":{"operationId":"cloneVersion","parameters":[{"name":"appId","in":"path","required":true},{"name":"sourceVersion","in":"path","required":true},{"name":"targetVersion","in":"path","required":true}],"responses":{}}},"/v1/app":{"get":{"operationId":"listInstallations","parameters":[{"name":"componentType","in":"query"},{"name":"enabled","in":"query"},{"name":"page","in":"query"},{"name":"pageSize","in":"query"}],"responses":{}}},"/v1/app/{appId}":{"get":{"operationId":"getInstallation","parameters":[{"name":"appId","in":"path","required":true}],"responses":{}},"post":{"operationId":"install","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/InstallRequest"},"responses":{}},"patch":{"operationId":"patchInstallation","parameters":[{"name":"appId","in":"path","required":true}],"requestBody":{"$ref":"#/components/requestBodies/InstallRequest"},"responses":{}},"delete":{"operationId":"uninstall","parameters":[{"name":"appId","in":"path","required":true}],"responses":{}}},"/v1/app/{appId}/promote-to/{version}":{"post":{"operationId":"promoteVersion","parameters":[{"name":"appId","in":"path","required":true},{"name":"version","in":"path","required":true}],"responses":{}}},"/v1/app-events":{"post":{"operationId":"ingestEvent","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/public/app/{appId}/proxy/{proxyName}/{path}":{"parameters":[{"name":"appId","in":"path","required":true,"description":"ID of the installed app"},{"name":"proxyName","in":"path","required":true,"description":"Name of the proxy target as defined in the app manifest"},{"name":"path","in":"path","required":true,"description":"Path to forward to the proxy target"}],"get":{"operationId":"publicProxyGet","responses":{}},"post":{"operationId":"publicProxyPost","requestBody":{"content":{"application/json":{}}},"responses":{}},"put":{"operationId":"publicProxyPut","requestBody":{"content":{"application/json":{}}},"responses":{}},"patch":{"operationId":"publicProxyPatch","requestBody":{"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"publicProxyDelete","responses":{}}}},"components":{"requestBodies":{"CreateReviewRequest":{"required":true,"content":{"application/json":{}}},"CreateLogoPresignedRequest":{"required":true,"content":{"application/json":{}}},"CreateBundlePresignedRequest":{"required":true,"content":{"application/json":{}}},"PatchConfigMetadataRequest":{"required":true,"content":{"application/json":{}}},"PatchVersionRequest":{"required":true,"content":{"application/json":{}}},"UpsertComponentRequest":{"required":true,"content":{"application/json":{}}},"CreateConfigRequest":{"required":true,"content":{"application/json":{}}},"InstallRequest":{"content":{"application/json":{}}}}}}')}},r={},t=function t(n){var o=r[n];if(void 0!==o)return o.exports;var p=r[n]={exports:{}};return e[n].call(p.exports,p,p.exports,t),p.exports}(330),n=exports;for(var o in t)n[o]=t[o];t.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})})();
|
|
@@ -535,6 +535,28 @@
|
|
|
535
535
|
}
|
|
536
536
|
},
|
|
537
537
|
"responses": {}
|
|
538
|
+
},
|
|
539
|
+
"put": {
|
|
540
|
+
"operationId": "publicProxyPut",
|
|
541
|
+
"requestBody": {
|
|
542
|
+
"content": {
|
|
543
|
+
"application/json": {}
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
"responses": {}
|
|
547
|
+
},
|
|
548
|
+
"patch": {
|
|
549
|
+
"operationId": "publicProxyPatch",
|
|
550
|
+
"requestBody": {
|
|
551
|
+
"content": {
|
|
552
|
+
"application/json": {}
|
|
553
|
+
}
|
|
554
|
+
},
|
|
555
|
+
"responses": {}
|
|
556
|
+
},
|
|
557
|
+
"delete": {
|
|
558
|
+
"operationId": "publicProxyDelete",
|
|
559
|
+
"responses": {}
|
|
538
560
|
}
|
|
539
561
|
}
|
|
540
562
|
},
|
package/dist/openapi.d.ts
CHANGED
|
@@ -151,9 +151,9 @@ declare namespace Components {
|
|
|
151
151
|
*/
|
|
152
152
|
name: string; // ^[a-zA-Z0-9_-]+$
|
|
153
153
|
/**
|
|
154
|
-
* Base URL of the target API. Must be HTTPS.
|
|
154
|
+
* Base URL of the target API. Must be HTTPS. May reference component options via {{option_key}} interpolation (resolved from decrypted values), e.g. "https://{{cluster}}.example.com/api" for a per-installation host. The fully-resolved URL is validated at request time (SSRF protection).
|
|
155
155
|
*/
|
|
156
|
-
target: string; //
|
|
156
|
+
target: string; // ^https://
|
|
157
157
|
/**
|
|
158
158
|
* Authentication strategy
|
|
159
159
|
*/
|
|
@@ -166,6 +166,12 @@ declare namespace Components {
|
|
|
166
166
|
* OAuth2 token endpoint URL
|
|
167
167
|
*/
|
|
168
168
|
token_url?: string; // uri ^https://
|
|
169
|
+
/**
|
|
170
|
+
* Additional request headers injected server-side on every proxied request. Values may reference component options via {{option_key}} interpolation (resolved from decrypted secrets), so credentials are never exposed to the client. Applied in addition to auth_type.
|
|
171
|
+
*/
|
|
172
|
+
headers?: {
|
|
173
|
+
[name: string]: string;
|
|
174
|
+
};
|
|
169
175
|
}
|
|
170
176
|
export interface AppBridgeSurfaceConfig {
|
|
171
177
|
/**
|
|
@@ -1596,7 +1602,11 @@ declare namespace Components {
|
|
|
1596
1602
|
*
|
|
1597
1603
|
*/
|
|
1598
1604
|
PortalExtensionHookVisualizationMetadata | /**
|
|
1599
|
-
* Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not
|
|
1605
|
+
* Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not run its own change email flow. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change.
|
|
1606
|
+
* The `change_mode` controls what the portal does after the call:
|
|
1607
|
+
* - `asynchronous`: The third-party system takes the email change over entirely (most likely by sending the user instructions to confirm the new email address). The portal does not change the login email itself.
|
|
1608
|
+
* - `synchronous`: The third-party system applies the email change immediately. The portal waits for a successful (2xx) response and then also changes the portal user's login email right away, without sending a confirmation email. The user has to sign in again with the new email address afterwards.
|
|
1609
|
+
*
|
|
1600
1610
|
* The expected response http status code to the call is:
|
|
1601
1611
|
* - 2xx if the request was accepted
|
|
1602
1612
|
* - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
|
|
@@ -1615,6 +1625,8 @@ declare namespace Components {
|
|
|
1615
1625
|
* - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the corresponding epilot Cognito user.
|
|
1616
1626
|
* - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).
|
|
1617
1627
|
*
|
|
1628
|
+
* The optional `delete_contact` additionally deletes the contact related to the portal user, once the portal user itself was deleted (`synchronous` mode only).
|
|
1629
|
+
*
|
|
1618
1630
|
* The expected response http status code to the call is:
|
|
1619
1631
|
* - 2xx if the request was accepted
|
|
1620
1632
|
* - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
|
|
@@ -1651,7 +1663,11 @@ declare namespace Components {
|
|
|
1651
1663
|
}[];
|
|
1652
1664
|
}
|
|
1653
1665
|
/**
|
|
1654
|
-
* Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not
|
|
1666
|
+
* Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not run its own change email flow. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change.
|
|
1667
|
+
* The `change_mode` controls what the portal does after the call:
|
|
1668
|
+
* - `asynchronous`: The third-party system takes the email change over entirely (most likely by sending the user instructions to confirm the new email address). The portal does not change the login email itself.
|
|
1669
|
+
* - `synchronous`: The third-party system applies the email change immediately. The portal waits for a successful (2xx) response and then also changes the portal user's login email right away, without sending a confirmation email. The user has to sign in again with the new email address afterwards.
|
|
1670
|
+
*
|
|
1655
1671
|
* The expected response http status code to the call is:
|
|
1656
1672
|
* - 2xx if the request was accepted
|
|
1657
1673
|
* - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
|
|
@@ -1665,7 +1681,12 @@ declare namespace Components {
|
|
|
1665
1681
|
name?: TranslatedString;
|
|
1666
1682
|
type: "changeEmail";
|
|
1667
1683
|
/**
|
|
1668
|
-
*
|
|
1684
|
+
* Controls how the email change is handled once the third-party system accepted it. `asynchronous` hands the email change over entirely to the third-party system and the portal does not change the login email itself. `synchronous` waits for the third-party system to respond and then changes the portal user's login email immediately, without a confirmation email.
|
|
1685
|
+
*
|
|
1686
|
+
*/
|
|
1687
|
+
change_mode?: "synchronous" | "asynchronous";
|
|
1688
|
+
/**
|
|
1689
|
+
* Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook. Treated as true when `change_mode` is `synchronous`, since the portal re-creates the login with the confirmed password. Skipped either way for portal users whose identity is managed by an identity provider: an SSO login has no password to confirm.
|
|
1669
1690
|
*
|
|
1670
1691
|
*/
|
|
1671
1692
|
require_password_confirmation?: boolean;
|
|
@@ -2111,6 +2132,8 @@ declare namespace Components {
|
|
|
2111
2132
|
* - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the corresponding epilot Cognito user.
|
|
2112
2133
|
* - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).
|
|
2113
2134
|
*
|
|
2135
|
+
* The optional `delete_contact` additionally deletes the contact related to the portal user, once the portal user itself was deleted (`synchronous` mode only).
|
|
2136
|
+
*
|
|
2114
2137
|
* The expected response http status code to the call is:
|
|
2115
2138
|
* - 2xx if the request was accepted
|
|
2116
2139
|
* - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
|
|
@@ -2128,6 +2151,11 @@ declare namespace Components {
|
|
|
2128
2151
|
*
|
|
2129
2152
|
*/
|
|
2130
2153
|
deletion_mode?: "synchronous" | "asynchronous";
|
|
2154
|
+
/**
|
|
2155
|
+
* Opt-in deletion of the contact related to the portal user, applied after the portal user itself was deleted. `none` (default) leaves the contact untouched. `soft` deletes the contact, so it can still be restored from the trash. `hard` permanently purges the contact. Only applied in `synchronous` deletion mode, as `asynchronous` mode hands the cleanup over to the third-party system.
|
|
2156
|
+
*
|
|
2157
|
+
*/
|
|
2158
|
+
delete_contact?: "none" | "soft" | "hard";
|
|
2131
2159
|
/**
|
|
2132
2160
|
* Optional explanation shown to the user in the delete account confirmation dialog.
|
|
2133
2161
|
*/
|
|
@@ -3232,6 +3260,18 @@ declare namespace Paths {
|
|
|
3232
3260
|
}
|
|
3233
3261
|
}
|
|
3234
3262
|
}
|
|
3263
|
+
namespace PublicProxyDelete {
|
|
3264
|
+
namespace Responses {
|
|
3265
|
+
export interface $200 {
|
|
3266
|
+
}
|
|
3267
|
+
export interface $403 {
|
|
3268
|
+
}
|
|
3269
|
+
export interface $404 {
|
|
3270
|
+
}
|
|
3271
|
+
export interface $502 {
|
|
3272
|
+
}
|
|
3273
|
+
}
|
|
3274
|
+
}
|
|
3235
3275
|
namespace PublicProxyGet {
|
|
3236
3276
|
namespace Responses {
|
|
3237
3277
|
export interface $200 {
|
|
@@ -3244,6 +3284,20 @@ declare namespace Paths {
|
|
|
3244
3284
|
}
|
|
3245
3285
|
}
|
|
3246
3286
|
}
|
|
3287
|
+
namespace PublicProxyPatch {
|
|
3288
|
+
export interface RequestBody {
|
|
3289
|
+
}
|
|
3290
|
+
namespace Responses {
|
|
3291
|
+
export interface $200 {
|
|
3292
|
+
}
|
|
3293
|
+
export interface $403 {
|
|
3294
|
+
}
|
|
3295
|
+
export interface $404 {
|
|
3296
|
+
}
|
|
3297
|
+
export interface $502 {
|
|
3298
|
+
}
|
|
3299
|
+
}
|
|
3300
|
+
}
|
|
3247
3301
|
namespace PublicProxyPost {
|
|
3248
3302
|
export interface RequestBody {
|
|
3249
3303
|
}
|
|
@@ -3258,6 +3312,20 @@ declare namespace Paths {
|
|
|
3258
3312
|
}
|
|
3259
3313
|
}
|
|
3260
3314
|
}
|
|
3315
|
+
namespace PublicProxyPut {
|
|
3316
|
+
export interface RequestBody {
|
|
3317
|
+
}
|
|
3318
|
+
namespace Responses {
|
|
3319
|
+
export interface $200 {
|
|
3320
|
+
}
|
|
3321
|
+
export interface $403 {
|
|
3322
|
+
}
|
|
3323
|
+
export interface $404 {
|
|
3324
|
+
}
|
|
3325
|
+
export interface $502 {
|
|
3326
|
+
}
|
|
3327
|
+
}
|
|
3328
|
+
}
|
|
3261
3329
|
namespace QueryEvents {
|
|
3262
3330
|
namespace Parameters {
|
|
3263
3331
|
export type AppId = string;
|
|
@@ -3649,6 +3717,16 @@ export interface OperationMethods {
|
|
|
3649
3717
|
data?: any,
|
|
3650
3718
|
config?: AxiosRequestConfig
|
|
3651
3719
|
): OperationResponse<Paths.PublicProxyGet.Responses.$200>
|
|
3720
|
+
/**
|
|
3721
|
+
* publicProxyPut - publicProxyPut
|
|
3722
|
+
*
|
|
3723
|
+
* Forward a PUT request to a registered proxy target from a public-facing component
|
|
3724
|
+
*/
|
|
3725
|
+
'publicProxyPut'(
|
|
3726
|
+
parameters?: Parameters<Paths.V1PublicApp$AppIdProxy$ProxyName$Path.PathParameters> | null,
|
|
3727
|
+
data?: Paths.PublicProxyPut.RequestBody,
|
|
3728
|
+
config?: AxiosRequestConfig
|
|
3729
|
+
): OperationResponse<Paths.PublicProxyPut.Responses.$200>
|
|
3652
3730
|
/**
|
|
3653
3731
|
* publicProxyPost - publicProxyPost
|
|
3654
3732
|
*
|
|
@@ -3659,6 +3737,26 @@ export interface OperationMethods {
|
|
|
3659
3737
|
data?: Paths.PublicProxyPost.RequestBody,
|
|
3660
3738
|
config?: AxiosRequestConfig
|
|
3661
3739
|
): OperationResponse<Paths.PublicProxyPost.Responses.$200>
|
|
3740
|
+
/**
|
|
3741
|
+
* publicProxyPatch - publicProxyPatch
|
|
3742
|
+
*
|
|
3743
|
+
* Forward a PATCH request to a registered proxy target from a public-facing component
|
|
3744
|
+
*/
|
|
3745
|
+
'publicProxyPatch'(
|
|
3746
|
+
parameters?: Parameters<Paths.V1PublicApp$AppIdProxy$ProxyName$Path.PathParameters> | null,
|
|
3747
|
+
data?: Paths.PublicProxyPatch.RequestBody,
|
|
3748
|
+
config?: AxiosRequestConfig
|
|
3749
|
+
): OperationResponse<Paths.PublicProxyPatch.Responses.$200>
|
|
3750
|
+
/**
|
|
3751
|
+
* publicProxyDelete - publicProxyDelete
|
|
3752
|
+
*
|
|
3753
|
+
* Forward a DELETE request to a registered proxy target from a public-facing component
|
|
3754
|
+
*/
|
|
3755
|
+
'publicProxyDelete'(
|
|
3756
|
+
parameters?: Parameters<Paths.V1PublicApp$AppIdProxy$ProxyName$Path.PathParameters> | null,
|
|
3757
|
+
data?: any,
|
|
3758
|
+
config?: AxiosRequestConfig
|
|
3759
|
+
): OperationResponse<Paths.PublicProxyDelete.Responses.$200>
|
|
3662
3760
|
}
|
|
3663
3761
|
|
|
3664
3762
|
export interface PathsDictionary {
|
|
@@ -4022,6 +4120,36 @@ export interface PathsDictionary {
|
|
|
4022
4120
|
data?: Paths.PublicProxyPost.RequestBody,
|
|
4023
4121
|
config?: AxiosRequestConfig
|
|
4024
4122
|
): OperationResponse<Paths.PublicProxyPost.Responses.$200>
|
|
4123
|
+
/**
|
|
4124
|
+
* publicProxyPut - publicProxyPut
|
|
4125
|
+
*
|
|
4126
|
+
* Forward a PUT request to a registered proxy target from a public-facing component
|
|
4127
|
+
*/
|
|
4128
|
+
'put'(
|
|
4129
|
+
parameters?: Parameters<Paths.V1PublicApp$AppIdProxy$ProxyName$Path.PathParameters> | null,
|
|
4130
|
+
data?: Paths.PublicProxyPut.RequestBody,
|
|
4131
|
+
config?: AxiosRequestConfig
|
|
4132
|
+
): OperationResponse<Paths.PublicProxyPut.Responses.$200>
|
|
4133
|
+
/**
|
|
4134
|
+
* publicProxyPatch - publicProxyPatch
|
|
4135
|
+
*
|
|
4136
|
+
* Forward a PATCH request to a registered proxy target from a public-facing component
|
|
4137
|
+
*/
|
|
4138
|
+
'patch'(
|
|
4139
|
+
parameters?: Parameters<Paths.V1PublicApp$AppIdProxy$ProxyName$Path.PathParameters> | null,
|
|
4140
|
+
data?: Paths.PublicProxyPatch.RequestBody,
|
|
4141
|
+
config?: AxiosRequestConfig
|
|
4142
|
+
): OperationResponse<Paths.PublicProxyPatch.Responses.$200>
|
|
4143
|
+
/**
|
|
4144
|
+
* publicProxyDelete - publicProxyDelete
|
|
4145
|
+
*
|
|
4146
|
+
* Forward a DELETE request to a registered proxy target from a public-facing component
|
|
4147
|
+
*/
|
|
4148
|
+
'delete'(
|
|
4149
|
+
parameters?: Parameters<Paths.V1PublicApp$AppIdProxy$ProxyName$Path.PathParameters> | null,
|
|
4150
|
+
data?: any,
|
|
4151
|
+
config?: AxiosRequestConfig
|
|
4152
|
+
): OperationResponse<Paths.PublicProxyDelete.Responses.$200>
|
|
4025
4153
|
}
|
|
4026
4154
|
}
|
|
4027
4155
|
|
package/dist/openapi.json
CHANGED
|
@@ -1565,6 +1565,105 @@
|
|
|
1565
1565
|
"description": "Bad gateway - proxy target unreachable or error"
|
|
1566
1566
|
}
|
|
1567
1567
|
}
|
|
1568
|
+
},
|
|
1569
|
+
"put": {
|
|
1570
|
+
"summary": "publicProxyPut",
|
|
1571
|
+
"operationId": "publicProxyPut",
|
|
1572
|
+
"description": "Forward a PUT request to a registered proxy target from a public-facing component",
|
|
1573
|
+
"tags": [
|
|
1574
|
+
"App Proxy"
|
|
1575
|
+
],
|
|
1576
|
+
"security": [
|
|
1577
|
+
{
|
|
1578
|
+
"EpilotAuth": []
|
|
1579
|
+
}
|
|
1580
|
+
],
|
|
1581
|
+
"requestBody": {
|
|
1582
|
+
"content": {
|
|
1583
|
+
"application/json": {
|
|
1584
|
+
"schema": {
|
|
1585
|
+
"type": "object"
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
},
|
|
1590
|
+
"responses": {
|
|
1591
|
+
"200": {
|
|
1592
|
+
"description": "Proxied response from the target API"
|
|
1593
|
+
},
|
|
1594
|
+
"403": {
|
|
1595
|
+
"description": "Forbidden - app not installed or no public component uses this proxy"
|
|
1596
|
+
},
|
|
1597
|
+
"404": {
|
|
1598
|
+
"description": "Proxy target not found"
|
|
1599
|
+
},
|
|
1600
|
+
"502": {
|
|
1601
|
+
"description": "Bad gateway - proxy target unreachable or error"
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
},
|
|
1605
|
+
"patch": {
|
|
1606
|
+
"summary": "publicProxyPatch",
|
|
1607
|
+
"operationId": "publicProxyPatch",
|
|
1608
|
+
"description": "Forward a PATCH request to a registered proxy target from a public-facing component",
|
|
1609
|
+
"tags": [
|
|
1610
|
+
"App Proxy"
|
|
1611
|
+
],
|
|
1612
|
+
"security": [
|
|
1613
|
+
{
|
|
1614
|
+
"EpilotAuth": []
|
|
1615
|
+
}
|
|
1616
|
+
],
|
|
1617
|
+
"requestBody": {
|
|
1618
|
+
"content": {
|
|
1619
|
+
"application/json": {
|
|
1620
|
+
"schema": {
|
|
1621
|
+
"type": "object"
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
},
|
|
1626
|
+
"responses": {
|
|
1627
|
+
"200": {
|
|
1628
|
+
"description": "Proxied response from the target API"
|
|
1629
|
+
},
|
|
1630
|
+
"403": {
|
|
1631
|
+
"description": "Forbidden - app not installed or no public component uses this proxy"
|
|
1632
|
+
},
|
|
1633
|
+
"404": {
|
|
1634
|
+
"description": "Proxy target not found"
|
|
1635
|
+
},
|
|
1636
|
+
"502": {
|
|
1637
|
+
"description": "Bad gateway - proxy target unreachable or error"
|
|
1638
|
+
}
|
|
1639
|
+
}
|
|
1640
|
+
},
|
|
1641
|
+
"delete": {
|
|
1642
|
+
"summary": "publicProxyDelete",
|
|
1643
|
+
"operationId": "publicProxyDelete",
|
|
1644
|
+
"description": "Forward a DELETE request to a registered proxy target from a public-facing component",
|
|
1645
|
+
"tags": [
|
|
1646
|
+
"App Proxy"
|
|
1647
|
+
],
|
|
1648
|
+
"security": [
|
|
1649
|
+
{
|
|
1650
|
+
"EpilotAuth": []
|
|
1651
|
+
}
|
|
1652
|
+
],
|
|
1653
|
+
"responses": {
|
|
1654
|
+
"200": {
|
|
1655
|
+
"description": "Proxied response from the target API"
|
|
1656
|
+
},
|
|
1657
|
+
"403": {
|
|
1658
|
+
"description": "Forbidden - app not installed or no public component uses this proxy"
|
|
1659
|
+
},
|
|
1660
|
+
"404": {
|
|
1661
|
+
"description": "Proxy target not found"
|
|
1662
|
+
},
|
|
1663
|
+
"502": {
|
|
1664
|
+
"description": "Bad gateway - proxy target unreachable or error"
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1568
1667
|
}
|
|
1569
1668
|
}
|
|
1570
1669
|
},
|
|
@@ -3584,7 +3683,7 @@
|
|
|
3584
3683
|
"additionalProperties": false
|
|
3585
3684
|
},
|
|
3586
3685
|
"PortalExtensionHookChangeEmail": {
|
|
3587
|
-
"description": "Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not
|
|
3686
|
+
"description": "Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not run its own change email flow. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change.\nThe `change_mode` controls what the portal does after the call:\n - `asynchronous`: The third-party system takes the email change over entirely (most likely by sending the user instructions to confirm the new email address). The portal does not change the login email itself.\n - `synchronous`: The third-party system applies the email change immediately. The portal waits for a successful (2xx) response and then also changes the portal user's login email right away, without sending a confirmation email. The user has to sign in again with the new email address afterwards.\n\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
|
|
3588
3687
|
"type": "object",
|
|
3589
3688
|
"properties": {
|
|
3590
3689
|
"id": {
|
|
@@ -3601,9 +3700,18 @@
|
|
|
3601
3700
|
"changeEmail"
|
|
3602
3701
|
]
|
|
3603
3702
|
},
|
|
3703
|
+
"change_mode": {
|
|
3704
|
+
"type": "string",
|
|
3705
|
+
"enum": [
|
|
3706
|
+
"synchronous",
|
|
3707
|
+
"asynchronous"
|
|
3708
|
+
],
|
|
3709
|
+
"description": "Controls how the email change is handled once the third-party system accepted it. `asynchronous` hands the email change over entirely to the third-party system and the portal does not change the login email itself. `synchronous` waits for the third-party system to respond and then changes the portal user's login email immediately, without a confirmation email.\n",
|
|
3710
|
+
"default": "asynchronous"
|
|
3711
|
+
},
|
|
3604
3712
|
"require_password_confirmation": {
|
|
3605
3713
|
"type": "boolean",
|
|
3606
|
-
"description": "Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook.\n",
|
|
3714
|
+
"description": "Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook. Treated as true when `change_mode` is `synchronous`, since the portal re-creates the login with the confirmed password. Skipped either way for portal users whose identity is managed by an identity provider: an SSO login has no password to confirm.\n",
|
|
3607
3715
|
"default": true
|
|
3608
3716
|
},
|
|
3609
3717
|
"explanation": {
|
|
@@ -3794,7 +3902,7 @@
|
|
|
3794
3902
|
"additionalProperties": false
|
|
3795
3903
|
},
|
|
3796
3904
|
"PortalExtensionHookDeleteAccount": {
|
|
3797
|
-
"description": "Hook that replaces the built-in delete account functionality for portal users. When configured, the portal does not delete the user itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the deletion.\nThe `deletion_mode` controls what the portal does after the call:\n - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the corresponding epilot Cognito user.\n - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).\n\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
|
|
3905
|
+
"description": "Hook that replaces the built-in delete account functionality for portal users. When configured, the portal does not delete the user itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the deletion.\nThe `deletion_mode` controls what the portal does after the call:\n - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the corresponding epilot Cognito user.\n - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).\n\nThe optional `delete_contact` additionally deletes the contact related to the portal user, once the portal user itself was deleted (`synchronous` mode only).\n\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
|
|
3798
3906
|
"type": "object",
|
|
3799
3907
|
"properties": {
|
|
3800
3908
|
"id": {
|
|
@@ -3820,6 +3928,16 @@
|
|
|
3820
3928
|
"description": "Controls how the account deletion is handled. `synchronous` waits for the third-party system to respond and then also deletes the epilot user. `asynchronous` hands the deletion over entirely to the third-party system and the portal does not delete anything immediately.\n",
|
|
3821
3929
|
"default": "synchronous"
|
|
3822
3930
|
},
|
|
3931
|
+
"delete_contact": {
|
|
3932
|
+
"type": "string",
|
|
3933
|
+
"enum": [
|
|
3934
|
+
"none",
|
|
3935
|
+
"soft",
|
|
3936
|
+
"hard"
|
|
3937
|
+
],
|
|
3938
|
+
"description": "Opt-in deletion of the contact related to the portal user, applied after the portal user itself was deleted. `none` (default) leaves the contact untouched. `soft` deletes the contact, so it can still be restored from the trash. `hard` permanently purges the contact. Only applied in `synchronous` deletion mode, as `asynchronous` mode hands the cleanup over to the third-party system.\n",
|
|
3939
|
+
"default": "none"
|
|
3940
|
+
},
|
|
3823
3941
|
"explanation": {
|
|
3824
3942
|
"type": "object",
|
|
3825
3943
|
"properties": {
|
|
@@ -4689,8 +4807,7 @@
|
|
|
4689
4807
|
},
|
|
4690
4808
|
"target": {
|
|
4691
4809
|
"type": "string",
|
|
4692
|
-
"
|
|
4693
|
-
"description": "Base URL of the target API. Must be HTTPS.",
|
|
4810
|
+
"description": "Base URL of the target API. Must be HTTPS. May reference component options via {{option_key}} interpolation (resolved from decrypted values), e.g. \"https://{{cluster}}.example.com/api\" for a per-installation host. The fully-resolved URL is validated at request time (SSRF protection).",
|
|
4694
4811
|
"pattern": "^https://"
|
|
4695
4812
|
},
|
|
4696
4813
|
"auth_type": {
|
|
@@ -4712,6 +4829,13 @@
|
|
|
4712
4829
|
"format": "uri",
|
|
4713
4830
|
"description": "OAuth2 token endpoint URL",
|
|
4714
4831
|
"pattern": "^https://"
|
|
4832
|
+
},
|
|
4833
|
+
"headers": {
|
|
4834
|
+
"type": "object",
|
|
4835
|
+
"description": "Additional request headers injected server-side on every proxied request. Values may reference component options via {{option_key}} interpolation (resolved from decrypted secrets), so credentials are never exposed to the client. Applied in addition to auth_type.",
|
|
4836
|
+
"additionalProperties": {
|
|
4837
|
+
"type": "string"
|
|
4838
|
+
}
|
|
4715
4839
|
}
|
|
4716
4840
|
}
|
|
4717
4841
|
},
|