@epilot/cli 0.1.75 → 0.1.77
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/README.md +1 -1
- package/definitions/app.json +458 -3
- package/definitions/integration-toolkit.json +290 -3
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-ILDXCHBW.js → chunk-P2TAWLHV.js} +8 -3
- package/dist/{completion-RJBGSMR2.js → completion-FAY7S3QS.js} +1 -1
- package/dist/{upgrade-IYLXBGRO.js → upgrade-OX7DIITI.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/definitions/app.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
|
},
|
|
@@ -2651,7 +2750,10 @@
|
|
|
2651
2750
|
"dataExport": "#/components/schemas/PortalExtensionHookDataExport",
|
|
2652
2751
|
"costDataRetrieval": "#/components/schemas/PortalExtensionHookCostDataRetrieval",
|
|
2653
2752
|
"meterReadingPlausibilityCheck": "#/components/schemas/PortalExtensionHookMeterReadingPlausibilityCheck",
|
|
2654
|
-
"visualizationMetadata": "#/components/schemas/PortalExtensionHookVisualizationMetadata"
|
|
2753
|
+
"visualizationMetadata": "#/components/schemas/PortalExtensionHookVisualizationMetadata",
|
|
2754
|
+
"changeEmail": "#/components/schemas/PortalExtensionHookChangeEmail",
|
|
2755
|
+
"changePassword": "#/components/schemas/PortalExtensionHookChangePassword",
|
|
2756
|
+
"deleteAccount": "#/components/schemas/PortalExtensionHookDeleteAccount"
|
|
2655
2757
|
}
|
|
2656
2758
|
},
|
|
2657
2759
|
"oneOf": [
|
|
@@ -2678,6 +2780,15 @@
|
|
|
2678
2780
|
},
|
|
2679
2781
|
{
|
|
2680
2782
|
"$ref": "#/components/schemas/PortalExtensionHookVisualizationMetadata"
|
|
2783
|
+
},
|
|
2784
|
+
{
|
|
2785
|
+
"$ref": "#/components/schemas/PortalExtensionHookChangeEmail"
|
|
2786
|
+
},
|
|
2787
|
+
{
|
|
2788
|
+
"$ref": "#/components/schemas/PortalExtensionHookChangePassword"
|
|
2789
|
+
},
|
|
2790
|
+
{
|
|
2791
|
+
"$ref": "#/components/schemas/PortalExtensionHookDeleteAccount"
|
|
2681
2792
|
}
|
|
2682
2793
|
]
|
|
2683
2794
|
}
|
|
@@ -3571,6 +3682,344 @@
|
|
|
3571
3682
|
],
|
|
3572
3683
|
"additionalProperties": false
|
|
3573
3684
|
},
|
|
3685
|
+
"PortalExtensionHookChangeEmail": {
|
|
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",
|
|
3687
|
+
"type": "object",
|
|
3688
|
+
"properties": {
|
|
3689
|
+
"id": {
|
|
3690
|
+
"type": "string",
|
|
3691
|
+
"pattern": "^[a-zA-Z0-9_-]+$",
|
|
3692
|
+
"description": "Identifier of the hook. Should not change between updates."
|
|
3693
|
+
},
|
|
3694
|
+
"name": {
|
|
3695
|
+
"$ref": "#/components/schemas/TranslatedString"
|
|
3696
|
+
},
|
|
3697
|
+
"type": {
|
|
3698
|
+
"type": "string",
|
|
3699
|
+
"enum": [
|
|
3700
|
+
"changeEmail"
|
|
3701
|
+
]
|
|
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
|
+
},
|
|
3712
|
+
"require_password_confirmation": {
|
|
3713
|
+
"type": "boolean",
|
|
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",
|
|
3715
|
+
"default": true
|
|
3716
|
+
},
|
|
3717
|
+
"explanation": {
|
|
3718
|
+
"type": "object",
|
|
3719
|
+
"properties": {
|
|
3720
|
+
"en": {
|
|
3721
|
+
"type": "string",
|
|
3722
|
+
"description": "Explanation of the functionality shown to the end user.",
|
|
3723
|
+
"example": "You will receive an email with instructions to confirm your new email address."
|
|
3724
|
+
}
|
|
3725
|
+
},
|
|
3726
|
+
"additionalProperties": {
|
|
3727
|
+
"type": "string",
|
|
3728
|
+
"description": "Explanation of the functionality in language denoted by ISO 3166-1 alpha-2 code."
|
|
3729
|
+
},
|
|
3730
|
+
"required": [
|
|
3731
|
+
"en"
|
|
3732
|
+
],
|
|
3733
|
+
"description": "Optional explanation shown to the user in the change email confirmation dialog."
|
|
3734
|
+
},
|
|
3735
|
+
"auth": {
|
|
3736
|
+
"$ref": "#/components/schemas/PortalExtensionAuthBlock"
|
|
3737
|
+
},
|
|
3738
|
+
"call": {
|
|
3739
|
+
"type": "object",
|
|
3740
|
+
"properties": {
|
|
3741
|
+
"method": {
|
|
3742
|
+
"type": "string",
|
|
3743
|
+
"description": "HTTP method to use for the call",
|
|
3744
|
+
"default": "POST"
|
|
3745
|
+
},
|
|
3746
|
+
"url": {
|
|
3747
|
+
"type": "string",
|
|
3748
|
+
"description": "URL to call. Supports variable interpolation."
|
|
3749
|
+
},
|
|
3750
|
+
"params": {
|
|
3751
|
+
"type": "object",
|
|
3752
|
+
"description": "Parameters to append to the URL. Supports variable interpolation.",
|
|
3753
|
+
"additionalProperties": {
|
|
3754
|
+
"type": "string"
|
|
3755
|
+
},
|
|
3756
|
+
"default": {}
|
|
3757
|
+
},
|
|
3758
|
+
"headers": {
|
|
3759
|
+
"type": "object",
|
|
3760
|
+
"description": "Headers to use. Supports variable interpolation.",
|
|
3761
|
+
"additionalProperties": {
|
|
3762
|
+
"type": "string"
|
|
3763
|
+
},
|
|
3764
|
+
"default": {}
|
|
3765
|
+
},
|
|
3766
|
+
"body": {
|
|
3767
|
+
"type": "object",
|
|
3768
|
+
"description": "Optional JSON body to use for the call. Defaults to an object with the requested new email and portal user context, e.g. `{\"new_email\": \"...\", \"old_email\": \"...\", \"portal_user_id\": \"...\"}`. The requested new email is available as `{{Input.new_email}}` and the current account email as `{{Input.old_email}}`. Supports variable interpolation."
|
|
3769
|
+
}
|
|
3770
|
+
},
|
|
3771
|
+
"required": [
|
|
3772
|
+
"url",
|
|
3773
|
+
"headers"
|
|
3774
|
+
],
|
|
3775
|
+
"additionalProperties": false
|
|
3776
|
+
},
|
|
3777
|
+
"resolved": {
|
|
3778
|
+
"type": "object",
|
|
3779
|
+
"properties": {
|
|
3780
|
+
"error_message_path": {
|
|
3781
|
+
"type": "string",
|
|
3782
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
3783
|
+
"example": "error.message"
|
|
3784
|
+
}
|
|
3785
|
+
},
|
|
3786
|
+
"additionalProperties": false
|
|
3787
|
+
},
|
|
3788
|
+
"secure_proxy": {
|
|
3789
|
+
"$ref": "#/components/schemas/PortalExtensionSecureProxy"
|
|
3790
|
+
}
|
|
3791
|
+
},
|
|
3792
|
+
"required": [
|
|
3793
|
+
"id",
|
|
3794
|
+
"type",
|
|
3795
|
+
"call"
|
|
3796
|
+
],
|
|
3797
|
+
"additionalProperties": false
|
|
3798
|
+
},
|
|
3799
|
+
"PortalExtensionHookChangePassword": {
|
|
3800
|
+
"description": "Hook that replaces the built-in change password functionality for portal users. When configured, the portal does not change the user's password itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the password change (most likely by sending the user instructions to complete the process).\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",
|
|
3801
|
+
"type": "object",
|
|
3802
|
+
"properties": {
|
|
3803
|
+
"id": {
|
|
3804
|
+
"type": "string",
|
|
3805
|
+
"pattern": "^[a-zA-Z0-9_-]+$",
|
|
3806
|
+
"description": "Identifier of the hook. Should not change between updates."
|
|
3807
|
+
},
|
|
3808
|
+
"name": {
|
|
3809
|
+
"$ref": "#/components/schemas/TranslatedString"
|
|
3810
|
+
},
|
|
3811
|
+
"type": {
|
|
3812
|
+
"type": "string",
|
|
3813
|
+
"enum": [
|
|
3814
|
+
"changePassword"
|
|
3815
|
+
]
|
|
3816
|
+
},
|
|
3817
|
+
"require_new_password": {
|
|
3818
|
+
"type": "boolean",
|
|
3819
|
+
"description": "Whether the portal user must provide a new password. When false, the portal only asks the user to confirm (showing the configured explanation) and no new password is collected; the third-party system is expected to handle the password change. When true, the portal collects a new password and passes it to the third-party system as `{{Input.new_password}}`.\n",
|
|
3820
|
+
"default": false
|
|
3821
|
+
},
|
|
3822
|
+
"explanation": {
|
|
3823
|
+
"type": "object",
|
|
3824
|
+
"properties": {
|
|
3825
|
+
"en": {
|
|
3826
|
+
"type": "string",
|
|
3827
|
+
"description": "Explanation of the functionality shown to the end user.",
|
|
3828
|
+
"example": "You will receive an email with instructions to reset your password."
|
|
3829
|
+
}
|
|
3830
|
+
},
|
|
3831
|
+
"additionalProperties": {
|
|
3832
|
+
"type": "string",
|
|
3833
|
+
"description": "Explanation of the functionality in language denoted by ISO 3166-1 alpha-2 code."
|
|
3834
|
+
},
|
|
3835
|
+
"required": [
|
|
3836
|
+
"en"
|
|
3837
|
+
],
|
|
3838
|
+
"description": "Optional explanation shown to the user in the change password confirmation dialog."
|
|
3839
|
+
},
|
|
3840
|
+
"auth": {
|
|
3841
|
+
"$ref": "#/components/schemas/PortalExtensionAuthBlock"
|
|
3842
|
+
},
|
|
3843
|
+
"call": {
|
|
3844
|
+
"type": "object",
|
|
3845
|
+
"properties": {
|
|
3846
|
+
"method": {
|
|
3847
|
+
"type": "string",
|
|
3848
|
+
"description": "HTTP method to use for the call",
|
|
3849
|
+
"default": "POST"
|
|
3850
|
+
},
|
|
3851
|
+
"url": {
|
|
3852
|
+
"type": "string",
|
|
3853
|
+
"description": "URL to call. Supports variable interpolation."
|
|
3854
|
+
},
|
|
3855
|
+
"params": {
|
|
3856
|
+
"type": "object",
|
|
3857
|
+
"description": "Parameters to append to the URL. Supports variable interpolation.",
|
|
3858
|
+
"additionalProperties": {
|
|
3859
|
+
"type": "string"
|
|
3860
|
+
},
|
|
3861
|
+
"default": {}
|
|
3862
|
+
},
|
|
3863
|
+
"headers": {
|
|
3864
|
+
"type": "object",
|
|
3865
|
+
"description": "Headers to use. Supports variable interpolation.",
|
|
3866
|
+
"additionalProperties": {
|
|
3867
|
+
"type": "string"
|
|
3868
|
+
},
|
|
3869
|
+
"default": {}
|
|
3870
|
+
},
|
|
3871
|
+
"body": {
|
|
3872
|
+
"type": "object",
|
|
3873
|
+
"description": "Optional JSON body to use for the call. Defaults to an object with portal user context (and the new password as `{{Input.new_password}}` when `require_new_password` is true). Supports variable interpolation."
|
|
3874
|
+
}
|
|
3875
|
+
},
|
|
3876
|
+
"required": [
|
|
3877
|
+
"url",
|
|
3878
|
+
"headers"
|
|
3879
|
+
],
|
|
3880
|
+
"additionalProperties": false
|
|
3881
|
+
},
|
|
3882
|
+
"resolved": {
|
|
3883
|
+
"type": "object",
|
|
3884
|
+
"properties": {
|
|
3885
|
+
"error_message_path": {
|
|
3886
|
+
"type": "string",
|
|
3887
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
3888
|
+
"example": "error.message"
|
|
3889
|
+
}
|
|
3890
|
+
},
|
|
3891
|
+
"additionalProperties": false
|
|
3892
|
+
},
|
|
3893
|
+
"secure_proxy": {
|
|
3894
|
+
"$ref": "#/components/schemas/PortalExtensionSecureProxy"
|
|
3895
|
+
}
|
|
3896
|
+
},
|
|
3897
|
+
"required": [
|
|
3898
|
+
"id",
|
|
3899
|
+
"type",
|
|
3900
|
+
"call"
|
|
3901
|
+
],
|
|
3902
|
+
"additionalProperties": false
|
|
3903
|
+
},
|
|
3904
|
+
"PortalExtensionHookDeleteAccount": {
|
|
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",
|
|
3906
|
+
"type": "object",
|
|
3907
|
+
"properties": {
|
|
3908
|
+
"id": {
|
|
3909
|
+
"type": "string",
|
|
3910
|
+
"pattern": "^[a-zA-Z0-9_-]+$",
|
|
3911
|
+
"description": "Identifier of the hook. Should not change between updates."
|
|
3912
|
+
},
|
|
3913
|
+
"name": {
|
|
3914
|
+
"$ref": "#/components/schemas/TranslatedString"
|
|
3915
|
+
},
|
|
3916
|
+
"type": {
|
|
3917
|
+
"type": "string",
|
|
3918
|
+
"enum": [
|
|
3919
|
+
"deleteAccount"
|
|
3920
|
+
]
|
|
3921
|
+
},
|
|
3922
|
+
"deletion_mode": {
|
|
3923
|
+
"type": "string",
|
|
3924
|
+
"enum": [
|
|
3925
|
+
"synchronous",
|
|
3926
|
+
"asynchronous"
|
|
3927
|
+
],
|
|
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",
|
|
3929
|
+
"default": "synchronous"
|
|
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
|
+
},
|
|
3941
|
+
"explanation": {
|
|
3942
|
+
"type": "object",
|
|
3943
|
+
"properties": {
|
|
3944
|
+
"en": {
|
|
3945
|
+
"type": "string",
|
|
3946
|
+
"description": "Explanation of the functionality shown to the end user.",
|
|
3947
|
+
"example": "Your account deletion will be processed by our system. This may take a few days."
|
|
3948
|
+
}
|
|
3949
|
+
},
|
|
3950
|
+
"additionalProperties": {
|
|
3951
|
+
"type": "string",
|
|
3952
|
+
"description": "Explanation of the functionality in language denoted by ISO 3166-1 alpha-2 code."
|
|
3953
|
+
},
|
|
3954
|
+
"required": [
|
|
3955
|
+
"en"
|
|
3956
|
+
],
|
|
3957
|
+
"description": "Optional explanation shown to the user in the delete account confirmation dialog."
|
|
3958
|
+
},
|
|
3959
|
+
"auth": {
|
|
3960
|
+
"$ref": "#/components/schemas/PortalExtensionAuthBlock"
|
|
3961
|
+
},
|
|
3962
|
+
"call": {
|
|
3963
|
+
"type": "object",
|
|
3964
|
+
"properties": {
|
|
3965
|
+
"method": {
|
|
3966
|
+
"type": "string",
|
|
3967
|
+
"description": "HTTP method to use for the call",
|
|
3968
|
+
"default": "POST"
|
|
3969
|
+
},
|
|
3970
|
+
"url": {
|
|
3971
|
+
"type": "string",
|
|
3972
|
+
"description": "URL to call. Supports variable interpolation."
|
|
3973
|
+
},
|
|
3974
|
+
"params": {
|
|
3975
|
+
"type": "object",
|
|
3976
|
+
"description": "Parameters to append to the URL. Supports variable interpolation.",
|
|
3977
|
+
"additionalProperties": {
|
|
3978
|
+
"type": "string"
|
|
3979
|
+
},
|
|
3980
|
+
"default": {}
|
|
3981
|
+
},
|
|
3982
|
+
"headers": {
|
|
3983
|
+
"type": "object",
|
|
3984
|
+
"description": "Headers to use. Supports variable interpolation.",
|
|
3985
|
+
"additionalProperties": {
|
|
3986
|
+
"type": "string"
|
|
3987
|
+
},
|
|
3988
|
+
"default": {}
|
|
3989
|
+
},
|
|
3990
|
+
"body": {
|
|
3991
|
+
"type": "object",
|
|
3992
|
+
"description": "Optional JSON body to use for the call. Defaults to an object with portal user context, e.g. `{\"portal_user_id\": \"...\", \"email\": \"...\"}`. Supports variable interpolation."
|
|
3993
|
+
}
|
|
3994
|
+
},
|
|
3995
|
+
"required": [
|
|
3996
|
+
"url",
|
|
3997
|
+
"headers"
|
|
3998
|
+
],
|
|
3999
|
+
"additionalProperties": false
|
|
4000
|
+
},
|
|
4001
|
+
"resolved": {
|
|
4002
|
+
"type": "object",
|
|
4003
|
+
"properties": {
|
|
4004
|
+
"error_message_path": {
|
|
4005
|
+
"type": "string",
|
|
4006
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
4007
|
+
"example": "error.message"
|
|
4008
|
+
}
|
|
4009
|
+
},
|
|
4010
|
+
"additionalProperties": false
|
|
4011
|
+
},
|
|
4012
|
+
"secure_proxy": {
|
|
4013
|
+
"$ref": "#/components/schemas/PortalExtensionSecureProxy"
|
|
4014
|
+
}
|
|
4015
|
+
},
|
|
4016
|
+
"required": [
|
|
4017
|
+
"id",
|
|
4018
|
+
"type",
|
|
4019
|
+
"call"
|
|
4020
|
+
],
|
|
4021
|
+
"additionalProperties": false
|
|
4022
|
+
},
|
|
3574
4023
|
"PortalExtensionSeamlessLink": {
|
|
3575
4024
|
"type": "object",
|
|
3576
4025
|
"properties": {
|
|
@@ -4358,8 +4807,7 @@
|
|
|
4358
4807
|
},
|
|
4359
4808
|
"target": {
|
|
4360
4809
|
"type": "string",
|
|
4361
|
-
"
|
|
4362
|
-
"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).",
|
|
4363
4811
|
"pattern": "^https://"
|
|
4364
4812
|
},
|
|
4365
4813
|
"auth_type": {
|
|
@@ -4381,6 +4829,13 @@
|
|
|
4381
4829
|
"format": "uri",
|
|
4382
4830
|
"description": "OAuth2 token endpoint URL",
|
|
4383
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
|
+
}
|
|
4384
4839
|
}
|
|
4385
4840
|
}
|
|
4386
4841
|
},
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.0.3",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Integration Toolkit API",
|
|
5
|
-
"version": "1.5.
|
|
5
|
+
"version": "1.5.12",
|
|
6
6
|
"description": "API for integrating with external systems in a standardised way."
|
|
7
7
|
},
|
|
8
8
|
"tags": [
|
|
@@ -279,6 +279,9 @@
|
|
|
279
279
|
"401": {
|
|
280
280
|
"$ref": "#/components/responses/Unauthorized"
|
|
281
281
|
},
|
|
282
|
+
"404": {
|
|
283
|
+
"$ref": "#/components/responses/NotFound"
|
|
284
|
+
},
|
|
282
285
|
"500": {
|
|
283
286
|
"$ref": "#/components/responses/InternalServerError"
|
|
284
287
|
}
|
|
@@ -332,6 +335,9 @@
|
|
|
332
335
|
"401": {
|
|
333
336
|
"$ref": "#/components/responses/Unauthorized"
|
|
334
337
|
},
|
|
338
|
+
"404": {
|
|
339
|
+
"$ref": "#/components/responses/NotFound"
|
|
340
|
+
},
|
|
335
341
|
"500": {
|
|
336
342
|
"$ref": "#/components/responses/InternalServerError"
|
|
337
343
|
}
|
|
@@ -3228,6 +3234,122 @@
|
|
|
3228
3234
|
}
|
|
3229
3235
|
}
|
|
3230
3236
|
},
|
|
3237
|
+
"/v2/integrations/{integrationId}/monitoring/external-events": {
|
|
3238
|
+
"post": {
|
|
3239
|
+
"operationId": "ingestExternalMonitoringEvents",
|
|
3240
|
+
"summary": "ingestExternalMonitoringEvents",
|
|
3241
|
+
"description": "Ingest monitoring spans produced by an EXTERNAL system (e.g. an integration\nmiddleware), so the Integration Hub is the central monitoring point and the\ncross-system event trace spans both the external system and epilot's own\nprocessing.\n\nEach span is validated, assigned a server-controlled `EXTERNAL_*` taxonomy code\nderived from its `level` (the client never supplies a code — this marks\nprovenance and prevents spoofing an epilot code), has its `use_case_slug`\nresolved against the integration's configured use cases, and is republished onto\nthe same monitoring event bus as epilot's own spans — so external spans are\nfirst-class to the trace view, stats, alerting and digests.\n\nSpans link to the epilot trace via `correlation_id` (the trace id): the middleware\nmust stamp the same `correlation_id` here and on the event it forwards to the\ninbound endpoint. Invalid spans in a batch are reported per-item and do not fail\nthe whole batch.\n",
|
|
3242
|
+
"tags": [
|
|
3243
|
+
"monitoring",
|
|
3244
|
+
"integrations"
|
|
3245
|
+
],
|
|
3246
|
+
"parameters": [
|
|
3247
|
+
{
|
|
3248
|
+
"name": "integrationId",
|
|
3249
|
+
"in": "path",
|
|
3250
|
+
"required": true,
|
|
3251
|
+
"description": "The integration ID",
|
|
3252
|
+
"schema": {
|
|
3253
|
+
"type": "string",
|
|
3254
|
+
"format": "uuid"
|
|
3255
|
+
}
|
|
3256
|
+
}
|
|
3257
|
+
],
|
|
3258
|
+
"requestBody": {
|
|
3259
|
+
"required": true,
|
|
3260
|
+
"content": {
|
|
3261
|
+
"application/json": {
|
|
3262
|
+
"schema": {
|
|
3263
|
+
"$ref": "#/components/schemas/IngestExternalMonitoringEventsRequest"
|
|
3264
|
+
}
|
|
3265
|
+
}
|
|
3266
|
+
}
|
|
3267
|
+
},
|
|
3268
|
+
"responses": {
|
|
3269
|
+
"202": {
|
|
3270
|
+
"description": "Batch accepted (some spans may have been rejected — see counts).",
|
|
3271
|
+
"content": {
|
|
3272
|
+
"application/json": {
|
|
3273
|
+
"schema": {
|
|
3274
|
+
"$ref": "#/components/schemas/IngestExternalMonitoringEventsResponse"
|
|
3275
|
+
}
|
|
3276
|
+
}
|
|
3277
|
+
}
|
|
3278
|
+
},
|
|
3279
|
+
"400": {
|
|
3280
|
+
"$ref": "#/components/responses/BadRequest"
|
|
3281
|
+
},
|
|
3282
|
+
"401": {
|
|
3283
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
3284
|
+
},
|
|
3285
|
+
"403": {
|
|
3286
|
+
"$ref": "#/components/responses/Forbidden"
|
|
3287
|
+
},
|
|
3288
|
+
"404": {
|
|
3289
|
+
"$ref": "#/components/responses/NotFound"
|
|
3290
|
+
},
|
|
3291
|
+
"500": {
|
|
3292
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
3293
|
+
}
|
|
3294
|
+
}
|
|
3295
|
+
}
|
|
3296
|
+
},
|
|
3297
|
+
"/v2/integrations/{integrationId}/monitoring/traces/{correlationId}": {
|
|
3298
|
+
"get": {
|
|
3299
|
+
"operationId": "getMonitoringTraceByCorrelation",
|
|
3300
|
+
"summary": "getMonitoringTraceByCorrelation",
|
|
3301
|
+
"description": "Returns the cross-system event trace for a `correlation_id`: every monitoring\nspan sharing it — external spans (middleware) plus epilot's own processing spans\n— ordered chronologically, with a rolled-up status and the epilot inbound event\n\"head\" attached. This is the correlation-grouped counterpart to\n`…/events/{eventId}/associated` (which groups a single epilot event's fan-out by\nevent_id). Origin is distinguished by the `EXTERNAL_*` code prefix on external\nspans. Freshness is near-real-time (spans land as they are produced/ingested).\n",
|
|
3302
|
+
"tags": [
|
|
3303
|
+
"monitoring",
|
|
3304
|
+
"integrations"
|
|
3305
|
+
],
|
|
3306
|
+
"parameters": [
|
|
3307
|
+
{
|
|
3308
|
+
"name": "integrationId",
|
|
3309
|
+
"in": "path",
|
|
3310
|
+
"required": true,
|
|
3311
|
+
"description": "The integration ID",
|
|
3312
|
+
"schema": {
|
|
3313
|
+
"type": "string",
|
|
3314
|
+
"format": "uuid"
|
|
3315
|
+
}
|
|
3316
|
+
},
|
|
3317
|
+
{
|
|
3318
|
+
"name": "correlationId",
|
|
3319
|
+
"in": "path",
|
|
3320
|
+
"required": true,
|
|
3321
|
+
"description": "The trace id (correlation_id) shared across systems",
|
|
3322
|
+
"schema": {
|
|
3323
|
+
"type": "string"
|
|
3324
|
+
}
|
|
3325
|
+
}
|
|
3326
|
+
],
|
|
3327
|
+
"responses": {
|
|
3328
|
+
"200": {
|
|
3329
|
+
"description": "The assembled cross-system trace.",
|
|
3330
|
+
"content": {
|
|
3331
|
+
"application/json": {
|
|
3332
|
+
"schema": {
|
|
3333
|
+
"$ref": "#/components/schemas/MonitoringTraceResponse"
|
|
3334
|
+
}
|
|
3335
|
+
}
|
|
3336
|
+
}
|
|
3337
|
+
},
|
|
3338
|
+
"400": {
|
|
3339
|
+
"$ref": "#/components/responses/BadRequest"
|
|
3340
|
+
},
|
|
3341
|
+
"401": {
|
|
3342
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
3343
|
+
},
|
|
3344
|
+
"404": {
|
|
3345
|
+
"$ref": "#/components/responses/NotFound"
|
|
3346
|
+
},
|
|
3347
|
+
"500": {
|
|
3348
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
3349
|
+
}
|
|
3350
|
+
}
|
|
3351
|
+
}
|
|
3352
|
+
},
|
|
3231
3353
|
"/v1/integrations/secure-proxies": {
|
|
3232
3354
|
"get": {
|
|
3233
3355
|
"operationId": "listSecureProxies",
|
|
@@ -4003,6 +4125,11 @@
|
|
|
4003
4125
|
"description": "Optional unique identifier for idempotency - prevents duplicate processing of the same event within 24 hours in context of the same integration. Must contain only alphanumeric characters, hyphens, and underscores.\n",
|
|
4004
4126
|
"example": "evt-2025-05-01-12345-create-bp"
|
|
4005
4127
|
},
|
|
4128
|
+
"correlation_id": {
|
|
4129
|
+
"type": "string",
|
|
4130
|
+
"description": "Optional per-event trace id for cross-system tracing (unique per business operation). Overrides the request-level meta.correlation_id for THIS event. When absent, the event inherits the request-level correlation_id; when both are absent, epilot mints its own event_id and the trace is epilot-only. Orthogonal to deduplication_id (idempotency).\n",
|
|
4131
|
+
"example": "bp-8f3a2c-7d4e-4b1a-9c2f-1e6d5a4b3c21"
|
|
4132
|
+
},
|
|
4006
4133
|
"use_case_id": {
|
|
4007
4134
|
"type": "string",
|
|
4008
4135
|
"nullable": true,
|
|
@@ -4109,6 +4236,12 @@
|
|
|
4109
4236
|
"maxLength": 255,
|
|
4110
4237
|
"description": "Optional unique identifier for idempotency - prevents duplicate processing of the same event within 24 hours in context of the same integration. Must contain only alphanumeric characters, hyphens, and underscores.\n",
|
|
4111
4238
|
"example": "evt-2025-05-01-12345-bp"
|
|
4239
|
+
},
|
|
4240
|
+
"group_id": {
|
|
4241
|
+
"type": "string",
|
|
4242
|
+
"description": "Optional per-event ordering group. Overrides the request-level `group_id` for THIS event; when absent, the event inherits the request-level `group_id` (or the default strict per-integration ordering). Use it when a single batch carries events for unrelated business objects that may be processed in parallel. See the request-level `group_id` for semantics.\n",
|
|
4243
|
+
"maxLength": 128,
|
|
4244
|
+
"example": "customer-42"
|
|
4112
4245
|
}
|
|
4113
4246
|
}
|
|
4114
4247
|
},
|
|
@@ -4130,7 +4263,7 @@
|
|
|
4130
4263
|
},
|
|
4131
4264
|
"group_id": {
|
|
4132
4265
|
"type": "string",
|
|
4133
|
-
"description": "Controls ordering and parallelism for this request's events.\n\nBy default, all events for a given `integration_id` are processed\n**strictly in order, one at a time**. For high-volume integrations this\ncan become a throughput bottleneck.\n\nSet `group_id` to opt into **parallel processing**:\n- Events sharing the same `group_id` are processed in the order received.\n- Events with different `group_id` values are processed in parallel.\n\nTypical usage is to derive `group_id` from a logical partition key in\nyour payload — for example the customer ID, contract ID, or meter ID —\nso updates to the same business object remain ordered while unrelated\nobjects are processed concurrently.\n\nNotes:\n- Up to 20 groups per integration are processed concurrently. Using\n more distinct values than that yields no additional parallelism.\n- Omit this field if strict per-integration ordering is required.\n",
|
|
4266
|
+
"description": "Controls ordering and parallelism for this request's events.\n\nBy default, all events for a given `integration_id` are processed\n**strictly in order, one at a time**. For high-volume integrations this\ncan become a throughput bottleneck.\n\nSet `group_id` to opt into **parallel processing**:\n- Events sharing the same `group_id` are processed in the order received.\n- Events with different `group_id` values are processed in parallel.\n\nTypical usage is to derive `group_id` from a logical partition key in\nyour payload — for example the customer ID, contract ID, or meter ID —\nso updates to the same business object remain ordered while unrelated\nobjects are processed concurrently.\n\nNotes:\n- Individual events may set their own `group_id`, which overrides this\n request-level value for that event only.\n- Up to 20 groups per integration are processed concurrently. Using\n more distinct values than that yields no additional parallelism.\n- Omit this field if strict per-integration ordering is required.\n",
|
|
4134
4267
|
"maxLength": 128,
|
|
4135
4268
|
"example": "customer-42"
|
|
4136
4269
|
},
|
|
@@ -7074,7 +7207,7 @@
|
|
|
7074
7207
|
"prevent_indirect_serving": {
|
|
7075
7208
|
"type": "boolean",
|
|
7076
7209
|
"default": false,
|
|
7077
|
-
"description": "When `true`,
|
|
7210
|
+
"description": "When `true`, this use case is served via the streaming endpoint: mapped file URLs\nare built as `/stream/download`, files of any size are streamed inline over HTTP\nresponse streaming, and buffered `/download` requests for oversize files are\n307-redirected to `/stream`. Files never transit epilot's temporary S3 storage on\nthe streaming path. Defaults to `false` (small files are served directly and large\nfiles are transparently served via a temporary S3 redirect).\n"
|
|
7078
7211
|
}
|
|
7079
7212
|
}
|
|
7080
7213
|
},
|
|
@@ -9255,6 +9388,160 @@
|
|
|
9255
9388
|
}
|
|
9256
9389
|
}
|
|
9257
9390
|
},
|
|
9391
|
+
"ExternalMonitoringSpan": {
|
|
9392
|
+
"type": "object",
|
|
9393
|
+
"properties": {
|
|
9394
|
+
"correlation_id": {
|
|
9395
|
+
"type": "string",
|
|
9396
|
+
"description": "Trace id — links this span to the epilot trace. Unique per business operation. Required."
|
|
9397
|
+
},
|
|
9398
|
+
"level": {
|
|
9399
|
+
"type": "string",
|
|
9400
|
+
"description": "Span outcome level — one of success | error | warning | info. Drives the server-assigned EXTERNAL_* code, coloring, and alerting. Required.\n"
|
|
9401
|
+
},
|
|
9402
|
+
"use_case_slug": {
|
|
9403
|
+
"type": "string",
|
|
9404
|
+
"description": "Business use case slug (e.g. \"business_partner\"). Resolved server-side against the integration's configured use cases to a use_case_id/use_case_type; stored as the grouping dimension. Portable — no epilot-internal UUIDs required.\n"
|
|
9405
|
+
},
|
|
9406
|
+
"occurred_at": {
|
|
9407
|
+
"type": "string",
|
|
9408
|
+
"format": "date-time",
|
|
9409
|
+
"description": "External clock time the span occurred; stored as created_at."
|
|
9410
|
+
},
|
|
9411
|
+
"message": {
|
|
9412
|
+
"type": "string",
|
|
9413
|
+
"description": "Human-readable line shown in the trace and event tables."
|
|
9414
|
+
},
|
|
9415
|
+
"detail": {
|
|
9416
|
+
"type": "object",
|
|
9417
|
+
"additionalProperties": true,
|
|
9418
|
+
"nullable": true,
|
|
9419
|
+
"description": "Free-form context (step, http_status, reason, …). The place for external-system specificity — the taxonomy code stays clean (EXTERNAL_*).\n"
|
|
9420
|
+
}
|
|
9421
|
+
},
|
|
9422
|
+
"description": "A single monitoring span produced by an external system. `correlation_id`, `level`, `use_case_slug`, `occurred_at` and `message` are all required and `level` must be one of success|error|warning|info — but these are validated PER SPAN at ingest and reported in the per-item `results[]`, so one malformed span never fails the whole batch (the fields are intentionally not marked `required`/`enum` at the schema level to preserve that partial-acceptance behavior). The client does NOT send a `code` (server-assigned from `level`), a `source` (origin is the EXTERNAL_* code prefix), or span/event ids (the external system owns its own identity and dedup).\n"
|
|
9423
|
+
},
|
|
9424
|
+
"IngestExternalMonitoringEventsRequest": {
|
|
9425
|
+
"type": "object",
|
|
9426
|
+
"required": [
|
|
9427
|
+
"events"
|
|
9428
|
+
],
|
|
9429
|
+
"properties": {
|
|
9430
|
+
"events": {
|
|
9431
|
+
"type": "array",
|
|
9432
|
+
"minItems": 1,
|
|
9433
|
+
"maxItems": 100,
|
|
9434
|
+
"items": {
|
|
9435
|
+
"$ref": "#/components/schemas/ExternalMonitoringSpan"
|
|
9436
|
+
},
|
|
9437
|
+
"description": "Batch of external monitoring spans (max 100 per request)."
|
|
9438
|
+
}
|
|
9439
|
+
}
|
|
9440
|
+
},
|
|
9441
|
+
"IngestExternalMonitoringEventsResponse": {
|
|
9442
|
+
"type": "object",
|
|
9443
|
+
"required": [
|
|
9444
|
+
"accepted",
|
|
9445
|
+
"rejected"
|
|
9446
|
+
],
|
|
9447
|
+
"properties": {
|
|
9448
|
+
"accepted": {
|
|
9449
|
+
"type": "integer",
|
|
9450
|
+
"description": "Number of spans accepted and republished onto the monitoring bus."
|
|
9451
|
+
},
|
|
9452
|
+
"rejected": {
|
|
9453
|
+
"type": "integer",
|
|
9454
|
+
"description": "Number of spans rejected in validation. See `results` for reasons."
|
|
9455
|
+
},
|
|
9456
|
+
"results": {
|
|
9457
|
+
"type": "array",
|
|
9458
|
+
"description": "Per-span results; present for rejections in a mixed batch.",
|
|
9459
|
+
"items": {
|
|
9460
|
+
"type": "object",
|
|
9461
|
+
"required": [
|
|
9462
|
+
"index",
|
|
9463
|
+
"status"
|
|
9464
|
+
],
|
|
9465
|
+
"properties": {
|
|
9466
|
+
"index": {
|
|
9467
|
+
"type": "integer",
|
|
9468
|
+
"description": "Zero-based index of the span in the request `events` array."
|
|
9469
|
+
},
|
|
9470
|
+
"status": {
|
|
9471
|
+
"type": "string",
|
|
9472
|
+
"enum": [
|
|
9473
|
+
"accepted",
|
|
9474
|
+
"rejected"
|
|
9475
|
+
]
|
|
9476
|
+
},
|
|
9477
|
+
"reason": {
|
|
9478
|
+
"type": "string",
|
|
9479
|
+
"description": "Rejection reason (present when status is rejected)."
|
|
9480
|
+
}
|
|
9481
|
+
}
|
|
9482
|
+
}
|
|
9483
|
+
}
|
|
9484
|
+
}
|
|
9485
|
+
},
|
|
9486
|
+
"MonitoringTraceResponse": {
|
|
9487
|
+
"type": "object",
|
|
9488
|
+
"required": [
|
|
9489
|
+
"correlation_id",
|
|
9490
|
+
"status",
|
|
9491
|
+
"span_count",
|
|
9492
|
+
"truncated",
|
|
9493
|
+
"spans"
|
|
9494
|
+
],
|
|
9495
|
+
"properties": {
|
|
9496
|
+
"correlation_id": {
|
|
9497
|
+
"type": "string",
|
|
9498
|
+
"description": "The trace id these spans share."
|
|
9499
|
+
},
|
|
9500
|
+
"status": {
|
|
9501
|
+
"type": "string",
|
|
9502
|
+
"enum": [
|
|
9503
|
+
"success",
|
|
9504
|
+
"error",
|
|
9505
|
+
"warning",
|
|
9506
|
+
"info"
|
|
9507
|
+
],
|
|
9508
|
+
"description": "Rolled-up status across all spans (error > warning > success > info)."
|
|
9509
|
+
},
|
|
9510
|
+
"started_at": {
|
|
9511
|
+
"type": "string",
|
|
9512
|
+
"format": "date-time",
|
|
9513
|
+
"nullable": true,
|
|
9514
|
+
"description": "created_at of the earliest span (null when the trace is empty)."
|
|
9515
|
+
},
|
|
9516
|
+
"ended_at": {
|
|
9517
|
+
"type": "string",
|
|
9518
|
+
"format": "date-time",
|
|
9519
|
+
"nullable": true,
|
|
9520
|
+
"description": "created_at of the latest returned span (null when the trace is empty)."
|
|
9521
|
+
},
|
|
9522
|
+
"span_count": {
|
|
9523
|
+
"type": "integer",
|
|
9524
|
+
"description": "Number of spans RETURNED (== spans.length; capped)."
|
|
9525
|
+
},
|
|
9526
|
+
"truncated": {
|
|
9527
|
+
"type": "boolean",
|
|
9528
|
+
"description": "True when the trace has more spans than the cap; the returned window is the earliest spans, so ended_at/status reflect only that window.\n"
|
|
9529
|
+
},
|
|
9530
|
+
"spans": {
|
|
9531
|
+
"type": "array",
|
|
9532
|
+
"items": {
|
|
9533
|
+
"$ref": "#/components/schemas/MonitoringEventV2"
|
|
9534
|
+
},
|
|
9535
|
+
"description": "All spans sharing the correlation_id, chronological. External-origin spans carry an EXTERNAL_* code; epilot spans carry an epilot code or empty (success).\n"
|
|
9536
|
+
},
|
|
9537
|
+
"inbound_event": {
|
|
9538
|
+
"type": "object",
|
|
9539
|
+
"nullable": true,
|
|
9540
|
+
"additionalProperties": true,
|
|
9541
|
+
"description": "The epilot inbound event \"head\" (raw payload), when present."
|
|
9542
|
+
}
|
|
9543
|
+
}
|
|
9544
|
+
},
|
|
9258
9545
|
"MonitoringEventV2": {
|
|
9259
9546
|
"type": "object",
|
|
9260
9547
|
"required": [
|
package/dist/bin/epilot.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
API_LIST
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-P2TAWLHV.js";
|
|
5
5
|
|
|
6
6
|
// bin/epilot.ts
|
|
7
7
|
import { runMain } from "citty";
|
|
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
|
|
|
11
11
|
var main = defineCommand({
|
|
12
12
|
meta: {
|
|
13
13
|
name: "epilot",
|
|
14
|
-
version: "0.1.
|
|
14
|
+
version: "0.1.77",
|
|
15
15
|
description: "CLI for epilot APIs"
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
@@ -30,8 +30,8 @@ var main = defineCommand({
|
|
|
30
30
|
auth: () => import("../auth-4HG7B2GC.js").then((m) => m.default),
|
|
31
31
|
profile: () => import("../profile-OZJL5ZPT.js").then((m) => m.default),
|
|
32
32
|
config: () => import("../config-DGZIMLZK.js").then((m) => m.default),
|
|
33
|
-
completion: () => import("../completion-
|
|
34
|
-
upgrade: () => import("../upgrade-
|
|
33
|
+
completion: () => import("../completion-FAY7S3QS.js").then((m) => m.default),
|
|
34
|
+
upgrade: () => import("../upgrade-OX7DIITI.js").then((m) => m.default),
|
|
35
35
|
"access-token": () => import("../access-token-WWE6BDJH.js").then((m) => m.default),
|
|
36
36
|
address: () => import("../address-EH3C4CVB.js").then((m) => m.default),
|
|
37
37
|
"address-suggestions": () => import("../address-suggestions-RRSLOBFW.js").then((m) => m.default),
|
|
@@ -134,13 +134,13 @@ process.stderr.on("error", (err) => {
|
|
|
134
134
|
if (err.code === "EPIPE") process.exit(0);
|
|
135
135
|
throw err;
|
|
136
136
|
});
|
|
137
|
-
var VERSION = true ? "0.1.
|
|
137
|
+
var VERSION = true ? "0.1.77" : (await null).default.version;
|
|
138
138
|
var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
|
|
139
139
|
process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
|
|
140
140
|
var args = process.argv.slice(2);
|
|
141
141
|
var completionsIdx = args.indexOf("--_completions");
|
|
142
142
|
if (completionsIdx >= 0) {
|
|
143
|
-
const { handleCompletions } = await import("../completion-
|
|
143
|
+
const { handleCompletions } = await import("../completion-FAY7S3QS.js");
|
|
144
144
|
handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
|
|
145
145
|
process.exit(0);
|
|
146
146
|
}
|
|
@@ -69,7 +69,7 @@ var API_LIST = [
|
|
|
69
69
|
kebabName: "app",
|
|
70
70
|
title: "App API",
|
|
71
71
|
serverUrl: "https://app.sls.epilot.io",
|
|
72
|
-
operationCount:
|
|
72
|
+
operationCount: 35,
|
|
73
73
|
operationIds: [
|
|
74
74
|
"getPublicFacingComponent",
|
|
75
75
|
"listConfigurations",
|
|
@@ -102,7 +102,10 @@ var API_LIST = [
|
|
|
102
102
|
"promoteVersion",
|
|
103
103
|
"ingestEvent",
|
|
104
104
|
"publicProxyGet",
|
|
105
|
-
"publicProxyPost"
|
|
105
|
+
"publicProxyPost",
|
|
106
|
+
"publicProxyPut",
|
|
107
|
+
"publicProxyPatch",
|
|
108
|
+
"publicProxyDelete"
|
|
106
109
|
]
|
|
107
110
|
},
|
|
108
111
|
{
|
|
@@ -796,7 +799,7 @@ var API_LIST = [
|
|
|
796
799
|
kebabName: "integration-toolkit",
|
|
797
800
|
title: "Integration Toolkit API",
|
|
798
801
|
serverUrl: "https://integration-toolkit.sls.epilot.io",
|
|
799
|
-
operationCount:
|
|
802
|
+
operationCount: 56,
|
|
800
803
|
operationIds: [
|
|
801
804
|
"acknowledgeTracking",
|
|
802
805
|
"triggerErp",
|
|
@@ -846,6 +849,8 @@ var API_LIST = [
|
|
|
846
849
|
"getMonitoringStatsV2",
|
|
847
850
|
"getMonitoringTimeSeriesV2",
|
|
848
851
|
"getAssociatedMonitoringEvents",
|
|
852
|
+
"ingestExternalMonitoringEvents",
|
|
853
|
+
"getMonitoringTraceByCorrelation",
|
|
849
854
|
"listSecureProxies",
|
|
850
855
|
"secureProxy",
|
|
851
856
|
"managedCallExecute",
|
|
@@ -72,7 +72,7 @@ ${GREEN}${BOLD}Upgraded to @epilot/cli@${latest}${RESET}
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
var getCurrentVersion = () => {
|
|
75
|
-
if (true) return "0.1.
|
|
75
|
+
if (true) return "0.1.77";
|
|
76
76
|
try {
|
|
77
77
|
const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
|
|
78
78
|
encoding: "utf-8",
|