@epilot/app-client 0.13.8 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/definition.js +1 -1
- package/dist/openapi-runtime.json +35 -0
- package/dist/openapi.d.ts +365 -49
- package/dist/openapi.json +331 -22
- package/package.json +1 -1
package/dist/openapi.json
CHANGED
|
@@ -1150,6 +1150,9 @@
|
|
|
1150
1150
|
"description": "Target version to create"
|
|
1151
1151
|
}
|
|
1152
1152
|
],
|
|
1153
|
+
"requestBody": {
|
|
1154
|
+
"$ref": "#/components/requestBodies/CloneVersionRequest"
|
|
1155
|
+
},
|
|
1153
1156
|
"responses": {
|
|
1154
1157
|
"201": {
|
|
1155
1158
|
"description": "New version created successfully",
|
|
@@ -1438,6 +1441,70 @@
|
|
|
1438
1441
|
}
|
|
1439
1442
|
}
|
|
1440
1443
|
},
|
|
1444
|
+
"/v1/app/{appId}/options/resolve": {
|
|
1445
|
+
"post": {
|
|
1446
|
+
"summary": "resolveOptions",
|
|
1447
|
+
"description": "Resolve the effective app-level options of an installation, including decrypted sensitive values (secrets). This endpoint accepts epilot internal-auth tokens exclusively (internal service calls, e.g. automation-workers or the customer portal API) — no user token, API key, or app token can call it, regardless of roles. Every call is audit-logged with the caller identity.",
|
|
1448
|
+
"operationId": "resolveOptions",
|
|
1449
|
+
"tags": [
|
|
1450
|
+
"App Installation"
|
|
1451
|
+
],
|
|
1452
|
+
"parameters": [
|
|
1453
|
+
{
|
|
1454
|
+
"name": "appId",
|
|
1455
|
+
"in": "path",
|
|
1456
|
+
"required": true,
|
|
1457
|
+
"schema": {
|
|
1458
|
+
"type": "string"
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
],
|
|
1462
|
+
"requestBody": {
|
|
1463
|
+
"content": {
|
|
1464
|
+
"application/json": {
|
|
1465
|
+
"schema": {
|
|
1466
|
+
"type": "object",
|
|
1467
|
+
"properties": {
|
|
1468
|
+
"keys": {
|
|
1469
|
+
"type": "array",
|
|
1470
|
+
"items": {
|
|
1471
|
+
"type": "string"
|
|
1472
|
+
},
|
|
1473
|
+
"description": "Narrow the response to these option keys"
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
},
|
|
1480
|
+
"responses": {
|
|
1481
|
+
"200": {
|
|
1482
|
+
"description": "Effective options with resolved values",
|
|
1483
|
+
"content": {
|
|
1484
|
+
"application/json": {
|
|
1485
|
+
"schema": {
|
|
1486
|
+
"type": "object",
|
|
1487
|
+
"properties": {
|
|
1488
|
+
"options": {
|
|
1489
|
+
"type": "array",
|
|
1490
|
+
"items": {
|
|
1491
|
+
"$ref": "#/components/schemas/Options"
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
},
|
|
1499
|
+
"403": {
|
|
1500
|
+
"description": "Caller is not authenticated with an internal-auth token"
|
|
1501
|
+
},
|
|
1502
|
+
"404": {
|
|
1503
|
+
"description": "App installation not found"
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
},
|
|
1441
1508
|
"/v1/app-events": {
|
|
1442
1509
|
"post": {
|
|
1443
1510
|
"summary": "ingestEvent",
|
|
@@ -1501,6 +1568,18 @@
|
|
|
1501
1568
|
"type": "string"
|
|
1502
1569
|
},
|
|
1503
1570
|
"description": "Path to forward to the proxy target"
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
"name": "query",
|
|
1574
|
+
"in": "query",
|
|
1575
|
+
"required": false,
|
|
1576
|
+
"style": "form",
|
|
1577
|
+
"explode": true,
|
|
1578
|
+
"schema": {
|
|
1579
|
+
"type": "object",
|
|
1580
|
+
"additionalProperties": true
|
|
1581
|
+
},
|
|
1582
|
+
"description": "Free-form query parameters, forwarded unchanged to the proxy target"
|
|
1504
1583
|
}
|
|
1505
1584
|
],
|
|
1506
1585
|
"get": {
|
|
@@ -1812,6 +1891,42 @@
|
|
|
1812
1891
|
},
|
|
1813
1892
|
"grants": {
|
|
1814
1893
|
"$ref": "#/components/schemas/Grants"
|
|
1894
|
+
},
|
|
1895
|
+
"functions": {
|
|
1896
|
+
"type": "array",
|
|
1897
|
+
"items": {
|
|
1898
|
+
"$ref": "#/components/schemas/FunctionDefinition"
|
|
1899
|
+
},
|
|
1900
|
+
"description": "Replaces the full set of server-side functions for this version"
|
|
1901
|
+
},
|
|
1902
|
+
"options": {
|
|
1903
|
+
"type": "array",
|
|
1904
|
+
"items": {
|
|
1905
|
+
"$ref": "#/components/schemas/Options"
|
|
1906
|
+
},
|
|
1907
|
+
"description": "Replaces the full set of app-level option declarations for this version.\nOption keys must be unique app-wide; `secret`-touching options are always\nsensitive and must not declare `sensitive: false`.\n"
|
|
1908
|
+
},
|
|
1909
|
+
"changelog": {
|
|
1910
|
+
"type": "string",
|
|
1911
|
+
"maxLength": 250,
|
|
1912
|
+
"description": "Short description of what changed in this version"
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
},
|
|
1919
|
+
"CloneVersionRequest": {
|
|
1920
|
+
"required": false,
|
|
1921
|
+
"content": {
|
|
1922
|
+
"application/json": {
|
|
1923
|
+
"schema": {
|
|
1924
|
+
"type": "object",
|
|
1925
|
+
"properties": {
|
|
1926
|
+
"changelog": {
|
|
1927
|
+
"type": "string",
|
|
1928
|
+
"maxLength": 250,
|
|
1929
|
+
"description": "Short description of what the new version will change"
|
|
1815
1930
|
}
|
|
1816
1931
|
}
|
|
1817
1932
|
}
|
|
@@ -1919,7 +2034,7 @@
|
|
|
1919
2034
|
},
|
|
1920
2035
|
"Options": {
|
|
1921
2036
|
"type": "object",
|
|
1922
|
-
"description": "
|
|
2037
|
+
"description": "An option declaration — a setting the installing org fills in. Declared at app level.",
|
|
1923
2038
|
"required": [
|
|
1924
2039
|
"key",
|
|
1925
2040
|
"type"
|
|
@@ -1965,6 +2080,25 @@
|
|
|
1965
2080
|
"object"
|
|
1966
2081
|
],
|
|
1967
2082
|
"description": "The type of this option. `object` declares a structured value whose fields are listed\nunder `fields`. Combine with `repeatable: true` to express a list of these objects.\n"
|
|
2083
|
+
},
|
|
2084
|
+
"sensitive": {
|
|
2085
|
+
"type": "boolean",
|
|
2086
|
+
"description": "Write-only, server-side only value — like a sensitive environment variable\n(app-level options only). Sensitive values are never serialized in any response;\nthey are resolvable only via server-side channels (API proxy injection, function\nruns, the internal options/resolve endpoint). Non-sensitive values\nare readable wherever the app runs, including the end-customer browser (journey and\nportal runtime). Forced to true for `secret`-touching options. Default: false.\n"
|
|
2087
|
+
},
|
|
2088
|
+
"configured": {
|
|
2089
|
+
"type": "boolean",
|
|
2090
|
+
"readOnly": true,
|
|
2091
|
+
"description": "Serialized instead of `value` for sensitive options (secrets): true when a\nvalue is stored.\n"
|
|
2092
|
+
},
|
|
2093
|
+
"lifted": {
|
|
2094
|
+
"type": "boolean",
|
|
2095
|
+
"readOnly": true,
|
|
2096
|
+
"description": "Compatibility marker: this option is declared at app level and folded back\ninto the component's options so existing consumers (journey runtime, portal\nblocks, older services) keep working unchanged. New consumers should read\napp-level options from the installation's `options` array instead.\n"
|
|
2097
|
+
},
|
|
2098
|
+
"value_updated_at": {
|
|
2099
|
+
"type": "string",
|
|
2100
|
+
"readOnly": true,
|
|
2101
|
+
"description": "Timestamp of the last value change. Only returned for sensitive options\n(alongside `configured`) so installers can see when a secret was last rotated.\n"
|
|
1968
2102
|
}
|
|
1969
2103
|
}
|
|
1970
2104
|
},
|
|
@@ -2029,7 +2163,7 @@
|
|
|
2029
2163
|
"properties": {
|
|
2030
2164
|
"component_id": {
|
|
2031
2165
|
"type": "string",
|
|
2032
|
-
"description": "ID of the component these values are for"
|
|
2166
|
+
"description": "ID of the component these values are for. Use the sentinel `$app` for\napp-level option values (options declared at the manifest top level).\n"
|
|
2033
2167
|
},
|
|
2034
2168
|
"options": {
|
|
2035
2169
|
"type": "array",
|
|
@@ -2069,10 +2203,87 @@
|
|
|
2069
2203
|
"CUSTOM_CAPABILITY",
|
|
2070
2204
|
"EXTERNAL_PRODUCT_CATALOG",
|
|
2071
2205
|
"CUSTOM_PAGE",
|
|
2072
|
-
"API_PROXY"
|
|
2206
|
+
"API_PROXY",
|
|
2207
|
+
"APP_FUNCTION"
|
|
2073
2208
|
],
|
|
2074
2209
|
"description": "Type of app component"
|
|
2075
2210
|
},
|
|
2211
|
+
"FunctionDefinition": {
|
|
2212
|
+
"type": "object",
|
|
2213
|
+
"description": "A named server-side function belonging to the app. Runs in the epilot code-execution sandbox with an installation-scoped app token. Functions with a schedule are executed automatically once per installation.\n",
|
|
2214
|
+
"required": [
|
|
2215
|
+
"name",
|
|
2216
|
+
"type",
|
|
2217
|
+
"code"
|
|
2218
|
+
],
|
|
2219
|
+
"properties": {
|
|
2220
|
+
"name": {
|
|
2221
|
+
"type": "string",
|
|
2222
|
+
"description": "Unique function name within the app",
|
|
2223
|
+
"pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
|
|
2224
|
+
},
|
|
2225
|
+
"type": {
|
|
2226
|
+
"type": "string",
|
|
2227
|
+
"enum": [
|
|
2228
|
+
"workflow",
|
|
2229
|
+
"scheduled"
|
|
2230
|
+
],
|
|
2231
|
+
"description": "Where the function can be used. `workflow` functions are referenced by CUSTOM_FLOW_ACTION components (type `function`) and run with entity context. `scheduled` functions run automatically per installation on their cron schedule.\n"
|
|
2232
|
+
},
|
|
2233
|
+
"label": {
|
|
2234
|
+
"allOf": [
|
|
2235
|
+
{
|
|
2236
|
+
"description": "Human-readable display name of the function, shown to installing organizations (e.g. in the scheduled-functions summary)\n"
|
|
2237
|
+
},
|
|
2238
|
+
{
|
|
2239
|
+
"$ref": "#/components/schemas/TranslatedString"
|
|
2240
|
+
}
|
|
2241
|
+
]
|
|
2242
|
+
},
|
|
2243
|
+
"description": {
|
|
2244
|
+
"allOf": [
|
|
2245
|
+
{
|
|
2246
|
+
"description": "Description of the function"
|
|
2247
|
+
},
|
|
2248
|
+
{
|
|
2249
|
+
"$ref": "#/components/schemas/TranslatedString"
|
|
2250
|
+
}
|
|
2251
|
+
]
|
|
2252
|
+
},
|
|
2253
|
+
"code": {
|
|
2254
|
+
"type": "string",
|
|
2255
|
+
"maxLength": 307200,
|
|
2256
|
+
"description": "JavaScript code to execute. Must declare a top-level `async function handler(input, context)`. Maximum size: 300KB (hard limit). Security restrictions: eval() and Function() constructor are not allowed.\n"
|
|
2257
|
+
},
|
|
2258
|
+
"schedule": {
|
|
2259
|
+
"type": "string",
|
|
2260
|
+
"maxLength": 100,
|
|
2261
|
+
"description": "Cron trigger for the function, executed once per installation. Standard 5-field cron expression (e.g. \"0 3 * * *\") or rate expression (e.g. \"rate(30 minutes)\"). Minimum interval: 15 minutes. Scheduled runs are limited to 60 seconds.\n",
|
|
2262
|
+
"example": "rate(30 minutes)"
|
|
2263
|
+
},
|
|
2264
|
+
"schedule_timezone": {
|
|
2265
|
+
"type": "string",
|
|
2266
|
+
"description": "IANA timezone the cron expression is evaluated in",
|
|
2267
|
+
"default": "Europe/Berlin"
|
|
2268
|
+
},
|
|
2269
|
+
"schedule_overlap": {
|
|
2270
|
+
"type": "string",
|
|
2271
|
+
"enum": [
|
|
2272
|
+
"skip"
|
|
2273
|
+
],
|
|
2274
|
+
"default": "skip",
|
|
2275
|
+
"description": "Behavior when the previous scheduled run is still active"
|
|
2276
|
+
},
|
|
2277
|
+
"secrets": {
|
|
2278
|
+
"type": "array",
|
|
2279
|
+
"items": {
|
|
2280
|
+
"type": "string"
|
|
2281
|
+
},
|
|
2282
|
+
"deprecated": true,
|
|
2283
|
+
"description": "DEPRECATED and ignored — functions receive the app's full effective option keyspace (sensitive values included) via input.app_options. Kept for manifest compatibility.\n"
|
|
2284
|
+
}
|
|
2285
|
+
}
|
|
2286
|
+
},
|
|
2076
2287
|
"Author": {
|
|
2077
2288
|
"type": "object",
|
|
2078
2289
|
"required": [
|
|
@@ -2159,6 +2370,13 @@
|
|
|
2159
2370
|
},
|
|
2160
2371
|
"description": "List of options for the app component"
|
|
2161
2372
|
},
|
|
2373
|
+
"uses_options": {
|
|
2374
|
+
"type": "array",
|
|
2375
|
+
"items": {
|
|
2376
|
+
"type": "string"
|
|
2377
|
+
},
|
|
2378
|
+
"description": "Keys of app-level options this component uses. Narrows which options are\nfolded back into `options` for legacy consumers (e.g. which values a journey\nblock receives in its public args) — a scoping hint, never a security\nboundary. Stamped automatically by the component-options migration; may also\nbe declared by the app developer.\n"
|
|
2379
|
+
},
|
|
2162
2380
|
"surfaces": {
|
|
2163
2381
|
"type": "object"
|
|
2164
2382
|
}
|
|
@@ -2486,7 +2704,7 @@
|
|
|
2486
2704
|
}
|
|
2487
2705
|
]
|
|
2488
2706
|
},
|
|
2489
|
-
"
|
|
2707
|
+
"FunctionRefCustomActionConfig": {
|
|
2490
2708
|
"allOf": [
|
|
2491
2709
|
{
|
|
2492
2710
|
"$ref": "#/components/schemas/BaseCustomActionConfig"
|
|
@@ -2497,41 +2715,37 @@
|
|
|
2497
2715
|
"type": {
|
|
2498
2716
|
"type": "string",
|
|
2499
2717
|
"enum": [
|
|
2500
|
-
"
|
|
2718
|
+
"function"
|
|
2501
2719
|
]
|
|
2502
2720
|
},
|
|
2503
|
-
"
|
|
2504
|
-
"type": "
|
|
2505
|
-
"
|
|
2506
|
-
"code": {
|
|
2507
|
-
"type": "string",
|
|
2508
|
-
"description": "JavaScript code to execute for the sandbox action. Maximum size: 300KB (hard limit). Code is stored as raw JavaScript and will be syntax-validated on save. Security restrictions: eval() and Function() constructor are not allowed.\n",
|
|
2509
|
-
"maxLength": 307200
|
|
2510
|
-
}
|
|
2511
|
-
}
|
|
2721
|
+
"function_name": {
|
|
2722
|
+
"type": "string",
|
|
2723
|
+
"description": "Name of a `workflow`-type function of the same app version. The component provides the org-facing contract (name, options, config surface); the referenced function provides the code.\n"
|
|
2512
2724
|
}
|
|
2513
2725
|
},
|
|
2514
2726
|
"required": [
|
|
2515
|
-
"type"
|
|
2727
|
+
"type",
|
|
2728
|
+
"function_name"
|
|
2516
2729
|
]
|
|
2517
2730
|
}
|
|
2518
2731
|
]
|
|
2519
2732
|
},
|
|
2520
2733
|
"CustomFlowConfig": {
|
|
2521
2734
|
"type": "object",
|
|
2735
|
+
"description": "Configuration of a flow action component. `external_integration` calls an external HTTP endpoint; `function` runs a workflow-type app function in the epilot sandbox.\n",
|
|
2522
2736
|
"oneOf": [
|
|
2523
2737
|
{
|
|
2524
2738
|
"$ref": "#/components/schemas/ExternalIntegrationCustomActionConfig"
|
|
2525
2739
|
},
|
|
2526
2740
|
{
|
|
2527
|
-
"$ref": "#/components/schemas/
|
|
2741
|
+
"$ref": "#/components/schemas/FunctionRefCustomActionConfig"
|
|
2528
2742
|
}
|
|
2529
2743
|
],
|
|
2530
2744
|
"discriminator": {
|
|
2531
2745
|
"propertyName": "type",
|
|
2532
2746
|
"mapping": {
|
|
2533
2747
|
"external_integration": "#/components/schemas/ExternalIntegrationCustomActionConfig",
|
|
2534
|
-
"
|
|
2748
|
+
"function": "#/components/schemas/FunctionRefCustomActionConfig"
|
|
2535
2749
|
}
|
|
2536
2750
|
}
|
|
2537
2751
|
},
|
|
@@ -3186,7 +3400,8 @@
|
|
|
3186
3400
|
"PT15M",
|
|
3187
3401
|
"PT1H",
|
|
3188
3402
|
"P1D",
|
|
3189
|
-
"P1M"
|
|
3403
|
+
"P1M",
|
|
3404
|
+
"P1Y"
|
|
3190
3405
|
]
|
|
3191
3406
|
}
|
|
3192
3407
|
},
|
|
@@ -3297,7 +3512,8 @@
|
|
|
3297
3512
|
"PT15M",
|
|
3298
3513
|
"PT1H",
|
|
3299
3514
|
"P1D",
|
|
3300
|
-
"P1M"
|
|
3515
|
+
"P1M",
|
|
3516
|
+
"P1Y"
|
|
3301
3517
|
]
|
|
3302
3518
|
}
|
|
3303
3519
|
},
|
|
@@ -3476,7 +3692,7 @@
|
|
|
3476
3692
|
"additionalProperties": false
|
|
3477
3693
|
},
|
|
3478
3694
|
"PortalExtensionHookVisualizationMetadata": {
|
|
3479
|
-
"description": "Hook that returns runtime metadata describing how a visualization (consumption / price / cost chart) should be rendered for a given portal context (meter, contract, etc). It is invoked by the portal before fetching data, with the same context the data hook would receive, so that the discovery shape can vary per meter/contract. The expected response to the call is:\n - 200 with a JSON body of shape:\n {\n \"type_options\": [\n { \"id\": \"ht\", \"label\": { \"en\": \"High tariff\" }, \"aggregation_group\": \"consumption\", \"statistical_method\": \"sum\", \"unit\": \"kWh\", \"color\": \"primary\", \"precision\": 2 },\n ...\n ],\n \"intervals\": [\"PT15M\", \"PT1H\", \"P1D\", \"P1M\"],\n \"data_range\": { \"from\": \"2024-01-01T00:00:00Z\", \"to\": \"2026-05-01T00:00:00Z\" }\n }\n Each type option carries its own `statistical_method`, which describes the method already applied to that type's data and dictates the chart shape: `sum` is rendered as a bar chart; `min`, `average`, and `max` are rendered as a line chart. A single visualization can therefore mix bar-shaped types with line-shaped types. Defaults to `sum` when omitted.\n Each type option may also customize its rendering: `color` picks a Spark palette color (`primary`, `slate`, `mauve`, `orange`, `red`, `tomato`, `amber`, `green`, `blue`) used to draw the type's series; `precision` sets the number of decimal places to show for that type's values (axis labels, tooltips, summaries). Both are optional — the consumer falls back to its own defaults when they are omitted.\n `aggregation_group` controls how types within a group are visually combined (depends on the per-type `statistical_method`):\n - bar chart (`sum`): same-group types are stacked into a single bar (e.g. ht/nt summed into total consumption); different-group types render side-by-side.\n - line chart (`min` / `average` / `max`): same-group types are rendered as an area chart; different-group types render as separate lines.\n All fields are optional; the consumer falls back to its defaults for whatever the hook does not return.\nThe portal looks up this hook implicitly per extension (one `visualizationMetadata` hook per extension) — there is no need for a data-retrieval hook to reference it explicitly.\n",
|
|
3695
|
+
"description": "Hook that returns runtime metadata describing how a visualization (consumption / price / cost chart) should be rendered for a given portal context (meter, contract, etc). It is invoked by the portal before fetching data, with the same context the data hook would receive, so that the discovery shape can vary per meter/contract. The expected response to the call is:\n - 200 with a JSON body of shape:\n {\n \"type_options\": [\n { \"id\": \"ht\", \"label\": { \"en\": \"High tariff\" }, \"aggregation_group\": \"consumption\", \"statistical_method\": \"sum\", \"unit\": \"kWh\", \"color\": \"primary\", \"precision\": 2 },\n ...\n ],\n \"intervals\": [\"PT15M\", \"PT1H\", \"P1D\", \"P1M\", \"P1Y\"],\n \"data_range\": { \"from\": \"2024-01-01T00:00:00Z\", \"to\": \"2026-05-01T00:00:00Z\" }\n }\n Each type option carries its own `statistical_method`, which describes the method already applied to that type's data and dictates the chart shape: `sum` is rendered as a bar chart; `min`, `average`, and `max` are rendered as a line chart. A single visualization can therefore mix bar-shaped types with line-shaped types. Defaults to `sum` when omitted.\n Each type option may also customize its rendering: `color` picks a Spark palette color (`primary`, `slate`, `mauve`, `orange`, `red`, `tomato`, `amber`, `green`, `blue`) used to draw the type's series; `precision` sets the number of decimal places to show for that type's values (axis labels, tooltips, summaries). Both are optional — the consumer falls back to its own defaults when they are omitted.\n `aggregation_group` controls how types within a group are visually combined (depends on the per-type `statistical_method`):\n - bar chart (`sum`): same-group types are stacked into a single bar (e.g. ht/nt summed into total consumption); different-group types render side-by-side.\n - line chart (`min` / `average` / `max`): same-group types are rendered as an area chart; different-group types render as separate lines.\n All fields are optional; the consumer falls back to its defaults for whatever the hook does not return.\nThe portal looks up this hook implicitly per extension (one `visualizationMetadata` hook per extension) — there is no need for a data-retrieval hook to reference it explicitly.\n",
|
|
3480
3696
|
"type": "object",
|
|
3481
3697
|
"properties": {
|
|
3482
3698
|
"id": {
|
|
@@ -3600,7 +3816,8 @@
|
|
|
3600
3816
|
"PT15M",
|
|
3601
3817
|
"PT1H",
|
|
3602
3818
|
"P1D",
|
|
3603
|
-
"P1M"
|
|
3819
|
+
"P1M",
|
|
3820
|
+
"P1Y"
|
|
3604
3821
|
]
|
|
3605
3822
|
}
|
|
3606
3823
|
},
|
|
@@ -4563,6 +4780,39 @@
|
|
|
4563
4780
|
}
|
|
4564
4781
|
}
|
|
4565
4782
|
},
|
|
4783
|
+
"InternalReview": {
|
|
4784
|
+
"description": "Review entry including app ownership info, used by internal admin endpoints",
|
|
4785
|
+
"allOf": [
|
|
4786
|
+
{
|
|
4787
|
+
"$ref": "#/components/schemas/Review"
|
|
4788
|
+
},
|
|
4789
|
+
{
|
|
4790
|
+
"type": "object",
|
|
4791
|
+
"properties": {
|
|
4792
|
+
"app_id": {
|
|
4793
|
+
"type": "string",
|
|
4794
|
+
"description": "ID of the app configuration",
|
|
4795
|
+
"readOnly": true
|
|
4796
|
+
},
|
|
4797
|
+
"org_id": {
|
|
4798
|
+
"type": "string",
|
|
4799
|
+
"description": "Organization ID of the app owner",
|
|
4800
|
+
"readOnly": true
|
|
4801
|
+
},
|
|
4802
|
+
"reviewed_by": {
|
|
4803
|
+
"type": "string",
|
|
4804
|
+
"description": "Identity of the internal reviewer who approved the review",
|
|
4805
|
+
"readOnly": true
|
|
4806
|
+
},
|
|
4807
|
+
"reviewed_at": {
|
|
4808
|
+
"type": "string",
|
|
4809
|
+
"description": "Timestamp of the approval",
|
|
4810
|
+
"readOnly": true
|
|
4811
|
+
}
|
|
4812
|
+
}
|
|
4813
|
+
}
|
|
4814
|
+
]
|
|
4815
|
+
},
|
|
4566
4816
|
"ConfigurationMetadata": {
|
|
4567
4817
|
"description": "Basic metadata about your app configuration which does not get versioned",
|
|
4568
4818
|
"type": "object",
|
|
@@ -4708,6 +4958,22 @@
|
|
|
4708
4958
|
},
|
|
4709
4959
|
"minItems": 0
|
|
4710
4960
|
},
|
|
4961
|
+
"functions": {
|
|
4962
|
+
"type": "array",
|
|
4963
|
+
"items": {
|
|
4964
|
+
"$ref": "#/components/schemas/FunctionDefinition"
|
|
4965
|
+
},
|
|
4966
|
+
"minItems": 0,
|
|
4967
|
+
"description": "Server-side functions of the app, including scheduled functions"
|
|
4968
|
+
},
|
|
4969
|
+
"options": {
|
|
4970
|
+
"type": "array",
|
|
4971
|
+
"items": {
|
|
4972
|
+
"$ref": "#/components/schemas/Options"
|
|
4973
|
+
},
|
|
4974
|
+
"minItems": 0,
|
|
4975
|
+
"description": "App-level option declarations (with sensitivity) of this version"
|
|
4976
|
+
},
|
|
4711
4977
|
"visibility": {
|
|
4712
4978
|
"type": "string",
|
|
4713
4979
|
"enum": [
|
|
@@ -4816,10 +5082,11 @@
|
|
|
4816
5082
|
"enum": [
|
|
4817
5083
|
"header",
|
|
4818
5084
|
"bearer",
|
|
5085
|
+
"basic",
|
|
4819
5086
|
"oauth2",
|
|
4820
5087
|
"none"
|
|
4821
5088
|
],
|
|
4822
|
-
"description": "Authentication strategy"
|
|
5089
|
+
"description": "Authentication strategy. 'basic' sends an HTTP Basic Authorization header built server-side from the 'username' and 'password' component options."
|
|
4823
5090
|
},
|
|
4824
5091
|
"auth_header": {
|
|
4825
5092
|
"type": "string",
|
|
@@ -4936,6 +5203,22 @@
|
|
|
4936
5203
|
"minLength": 0,
|
|
4937
5204
|
"readOnly": true
|
|
4938
5205
|
},
|
|
5206
|
+
"functions": {
|
|
5207
|
+
"description": "Server-side functions of the installed version, including scheduled functions",
|
|
5208
|
+
"type": "array",
|
|
5209
|
+
"items": {
|
|
5210
|
+
"$ref": "#/components/schemas/FunctionDefinition"
|
|
5211
|
+
},
|
|
5212
|
+
"readOnly": true
|
|
5213
|
+
},
|
|
5214
|
+
"options": {
|
|
5215
|
+
"description": "Effective app-level options of the installation: declared top-level options plus\ncomponent-level options lifted to the app keyspace, each with its configured\n`value`. Values of sensitive options (secrets) are never included — they carry\n`configured` and `value_updated_at` instead.\n",
|
|
5216
|
+
"type": "array",
|
|
5217
|
+
"items": {
|
|
5218
|
+
"$ref": "#/components/schemas/Options"
|
|
5219
|
+
},
|
|
5220
|
+
"readOnly": true
|
|
5221
|
+
},
|
|
4939
5222
|
"installed_version": {
|
|
4940
5223
|
"type": "string",
|
|
4941
5224
|
"description": "Version of the app that is installed",
|
|
@@ -5043,6 +5326,22 @@
|
|
|
5043
5326
|
},
|
|
5044
5327
|
"minItems": 0
|
|
5045
5328
|
},
|
|
5329
|
+
"functions": {
|
|
5330
|
+
"type": "array",
|
|
5331
|
+
"items": {
|
|
5332
|
+
"$ref": "#/components/schemas/FunctionDefinition"
|
|
5333
|
+
},
|
|
5334
|
+
"minItems": 0,
|
|
5335
|
+
"description": "Server-side functions of the app, including scheduled functions"
|
|
5336
|
+
},
|
|
5337
|
+
"options": {
|
|
5338
|
+
"type": "array",
|
|
5339
|
+
"items": {
|
|
5340
|
+
"$ref": "#/components/schemas/Options"
|
|
5341
|
+
},
|
|
5342
|
+
"minItems": 0,
|
|
5343
|
+
"description": "App-level option declarations (with sensitivity) of this version"
|
|
5344
|
+
},
|
|
5046
5345
|
"is_beta": {
|
|
5047
5346
|
"type": "boolean",
|
|
5048
5347
|
"description": "Flag to indicate if the app is in beta.",
|
|
@@ -5293,6 +5592,11 @@
|
|
|
5293
5592
|
"correlation_id": {
|
|
5294
5593
|
"type": "string",
|
|
5295
5594
|
"description": "Filter by correlation ID for tracing"
|
|
5595
|
+
},
|
|
5596
|
+
"search": {
|
|
5597
|
+
"type": "string",
|
|
5598
|
+
"maxLength": 200,
|
|
5599
|
+
"description": "Case-insensitive substring match over event details and component id"
|
|
5296
5600
|
}
|
|
5297
5601
|
}
|
|
5298
5602
|
},
|
|
@@ -5343,6 +5647,11 @@
|
|
|
5343
5647
|
"minimum": 1,
|
|
5344
5648
|
"maximum": 1000,
|
|
5345
5649
|
"default": 100
|
|
5650
|
+
},
|
|
5651
|
+
"before": {
|
|
5652
|
+
"type": "string",
|
|
5653
|
+
"format": "date-time",
|
|
5654
|
+
"description": "Cursor: only return events strictly older than this timestamp. Use the timestamp of the last received event to fetch the next page; more efficient than increasing page/page_size.\n"
|
|
5346
5655
|
}
|
|
5347
5656
|
}
|
|
5348
5657
|
},
|