@epilot/cli 0.1.92 → 0.1.94
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/calendar.json +373 -4
- package/definitions/entity.json +22 -1
- package/definitions/user.json +4 -0
- package/dist/{auth-4HG7B2GC.js → auth-WMXFMPWE.js} +4 -1
- package/dist/{auth-login-7EWYCAZ7.js → auth-login-3AY5U4JU.js} +14 -3
- package/dist/bin/epilot.js +7 -7
- package/dist/{chunk-UHTYLKRI.js → chunk-SOTT5WKJ.js} +4 -1
- package/dist/{completion-5VJZLLZW.js → completion-IGVIBAFM.js} +1 -1
- package/dist/{upgrade-BO7WCFCT.js → upgrade-UQVSUG35.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
{
|
|
18
18
|
"name": "Calendar Events",
|
|
19
19
|
"description": "Calendar events"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Working Hours",
|
|
23
|
+
"description": "Recurring weekly working hours of users"
|
|
20
24
|
}
|
|
21
25
|
],
|
|
22
26
|
"servers": [
|
|
@@ -74,6 +78,20 @@
|
|
|
74
78
|
"default": false
|
|
75
79
|
}
|
|
76
80
|
},
|
|
81
|
+
{
|
|
82
|
+
"in": "query",
|
|
83
|
+
"name": "working_hours_granularity",
|
|
84
|
+
"description": "At what granularity working hours contribute to absence. \"time\" (default): all time outside a user's working windows counts as absent. \"day\": only full days with no working windows count as absent (whole-day granularity, used by thread assignment). Users without a working-hours record never produce working-hours intervals.",
|
|
85
|
+
"schema": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"enum": [
|
|
88
|
+
"time",
|
|
89
|
+
"day"
|
|
90
|
+
],
|
|
91
|
+
"description": "At what granularity working hours contribute to absence. \"time\" (default): all time outside a user's working windows counts as absent. \"day\": only full days with no working windows count as absent (whole-day granularity, used by thread assignment). Users without a working-hours record never produce working-hours intervals.",
|
|
92
|
+
"default": "time"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
77
95
|
{
|
|
78
96
|
"in": "query",
|
|
79
97
|
"name": "query",
|
|
@@ -701,6 +719,20 @@
|
|
|
701
719
|
"description": "Include busy inputs in addition to out-of-office absence. Defaults to false.",
|
|
702
720
|
"default": false
|
|
703
721
|
}
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
"in": "query",
|
|
725
|
+
"name": "working_hours_granularity",
|
|
726
|
+
"description": "At what granularity working hours contribute to absence. \"time\" (default): all time outside a user's working windows counts as absent. \"day\": only full days with no working windows count as absent (whole-day granularity, used by thread assignment). Users without a working-hours record never produce working-hours intervals.",
|
|
727
|
+
"schema": {
|
|
728
|
+
"type": "string",
|
|
729
|
+
"enum": [
|
|
730
|
+
"time",
|
|
731
|
+
"day"
|
|
732
|
+
],
|
|
733
|
+
"description": "At what granularity working hours contribute to absence. \"time\" (default): all time outside a user's working windows counts as absent. \"day\": only full days with no working windows count as absent (whole-day granularity, used by thread assignment). Users without a working-hours record never produce working-hours intervals.",
|
|
734
|
+
"default": "time"
|
|
735
|
+
}
|
|
704
736
|
}
|
|
705
737
|
],
|
|
706
738
|
"responses": {
|
|
@@ -763,6 +795,134 @@
|
|
|
763
795
|
}
|
|
764
796
|
}
|
|
765
797
|
},
|
|
798
|
+
"/v1/calendar/working-hours/users/{user_id}": {
|
|
799
|
+
"get": {
|
|
800
|
+
"operationId": "getWorkingHours",
|
|
801
|
+
"summary": "getWorkingHours",
|
|
802
|
+
"description": "Get the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available.",
|
|
803
|
+
"tags": [
|
|
804
|
+
"Working Hours"
|
|
805
|
+
],
|
|
806
|
+
"parameters": [
|
|
807
|
+
{
|
|
808
|
+
"in": "path",
|
|
809
|
+
"name": "user_id",
|
|
810
|
+
"schema": {
|
|
811
|
+
"type": "string",
|
|
812
|
+
"minLength": 1
|
|
813
|
+
},
|
|
814
|
+
"required": true
|
|
815
|
+
}
|
|
816
|
+
],
|
|
817
|
+
"responses": {
|
|
818
|
+
"200": {
|
|
819
|
+
"description": "Working hours",
|
|
820
|
+
"content": {
|
|
821
|
+
"application/json": {
|
|
822
|
+
"schema": {
|
|
823
|
+
"$ref": "#/components/schemas/WorkingHours"
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
},
|
|
828
|
+
"404": {
|
|
829
|
+
"description": "Not found",
|
|
830
|
+
"content": {
|
|
831
|
+
"application/json": {
|
|
832
|
+
"schema": {
|
|
833
|
+
"$ref": "#/components/schemas/Error"
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
"put": {
|
|
841
|
+
"operationId": "putWorkingHours",
|
|
842
|
+
"summary": "putWorkingHours",
|
|
843
|
+
"description": "Create or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.",
|
|
844
|
+
"tags": [
|
|
845
|
+
"Working Hours"
|
|
846
|
+
],
|
|
847
|
+
"parameters": [
|
|
848
|
+
{
|
|
849
|
+
"in": "path",
|
|
850
|
+
"name": "user_id",
|
|
851
|
+
"schema": {
|
|
852
|
+
"type": "string",
|
|
853
|
+
"minLength": 1
|
|
854
|
+
},
|
|
855
|
+
"required": true
|
|
856
|
+
}
|
|
857
|
+
],
|
|
858
|
+
"requestBody": {
|
|
859
|
+
"required": true,
|
|
860
|
+
"content": {
|
|
861
|
+
"application/json": {
|
|
862
|
+
"schema": {
|
|
863
|
+
"$ref": "#/components/schemas/UpsertWorkingHoursBody"
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
},
|
|
868
|
+
"responses": {
|
|
869
|
+
"200": {
|
|
870
|
+
"description": "Stored working hours",
|
|
871
|
+
"content": {
|
|
872
|
+
"application/json": {
|
|
873
|
+
"schema": {
|
|
874
|
+
"$ref": "#/components/schemas/WorkingHours"
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
},
|
|
879
|
+
"400": {
|
|
880
|
+
"description": "Invalid request body",
|
|
881
|
+
"content": {
|
|
882
|
+
"application/json": {
|
|
883
|
+
"schema": {
|
|
884
|
+
"$ref": "#/components/schemas/Error"
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
},
|
|
891
|
+
"delete": {
|
|
892
|
+
"operationId": "deleteWorkingHours",
|
|
893
|
+
"summary": "deleteWorkingHours",
|
|
894
|
+
"description": "Delete the working hours of a user. The user is then treated as always available again.",
|
|
895
|
+
"tags": [
|
|
896
|
+
"Working Hours"
|
|
897
|
+
],
|
|
898
|
+
"parameters": [
|
|
899
|
+
{
|
|
900
|
+
"in": "path",
|
|
901
|
+
"name": "user_id",
|
|
902
|
+
"schema": {
|
|
903
|
+
"type": "string",
|
|
904
|
+
"minLength": 1
|
|
905
|
+
},
|
|
906
|
+
"required": true
|
|
907
|
+
}
|
|
908
|
+
],
|
|
909
|
+
"responses": {
|
|
910
|
+
"204": {
|
|
911
|
+
"description": "Working hours deleted"
|
|
912
|
+
},
|
|
913
|
+
"404": {
|
|
914
|
+
"description": "Not found",
|
|
915
|
+
"content": {
|
|
916
|
+
"application/json": {
|
|
917
|
+
"schema": {
|
|
918
|
+
"$ref": "#/components/schemas/Error"
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
},
|
|
766
926
|
"/v1/calendar": {
|
|
767
927
|
"get": {
|
|
768
928
|
"operationId": "listCalendars",
|
|
@@ -1004,7 +1164,7 @@
|
|
|
1004
1164
|
"post": {
|
|
1005
1165
|
"operationId": "outlookWebhook",
|
|
1006
1166
|
"summary": "outlookWebhook",
|
|
1007
|
-
"description": "Public Microsoft Graph webhook receiver for per-user Outlook calendar\nsubscriptions. Unauthenticated by design (API Gateway `Authorizer: NONE`):\nGraph calls it with no epilot token.\n\nHandles both the subscription-validation handshake (echoes the\n`validationToken` query param as `text/plain`) and change notifications.\nEach notification is trusted only after its HMAC-signed `clientState` is\nverified and matched against the stored subscription
|
|
1167
|
+
"description": "Public Microsoft Graph webhook receiver for per-user Outlook calendar\nsubscriptions. Unauthenticated by design (API Gateway `Authorizer: NONE`):\nGraph calls it with no epilot token.\n\nHandles both the subscription-validation handshake (echoes the\n`validationToken` query param as `text/plain`) and change notifications.\nEach notification is trusted only after its HMAC-signed `clientState` is\nverified and matched against the stored subscription – identity is never\nread from the request body.",
|
|
1008
1168
|
"tags": [
|
|
1009
1169
|
"Calendars"
|
|
1010
1170
|
],
|
|
@@ -1693,7 +1853,8 @@
|
|
|
1693
1853
|
"type": "string",
|
|
1694
1854
|
"enum": [
|
|
1695
1855
|
"calendar_event",
|
|
1696
|
-
"absence_adjustment"
|
|
1856
|
+
"absence_adjustment",
|
|
1857
|
+
"working_hours"
|
|
1697
1858
|
]
|
|
1698
1859
|
},
|
|
1699
1860
|
"Error": {
|
|
@@ -1746,6 +1907,15 @@
|
|
|
1746
1907
|
"type": "boolean",
|
|
1747
1908
|
"description": "Include busy inputs in addition to out-of-office absence. Defaults to false.",
|
|
1748
1909
|
"default": false
|
|
1910
|
+
},
|
|
1911
|
+
"working_hours_granularity": {
|
|
1912
|
+
"type": "string",
|
|
1913
|
+
"enum": [
|
|
1914
|
+
"time",
|
|
1915
|
+
"day"
|
|
1916
|
+
],
|
|
1917
|
+
"description": "At what granularity working hours contribute to absence. \"time\" (default): all time outside a user's working windows counts as absent. \"day\": only full days with no working windows count as absent (whole-day granularity, used by thread assignment). Users without a working-hours record never produce working-hours intervals.",
|
|
1918
|
+
"default": "time"
|
|
1749
1919
|
}
|
|
1750
1920
|
},
|
|
1751
1921
|
"required": [
|
|
@@ -1771,6 +1941,15 @@
|
|
|
1771
1941
|
"type": "boolean",
|
|
1772
1942
|
"description": "Include busy inputs in addition to out-of-office absence. Defaults to false.",
|
|
1773
1943
|
"default": false
|
|
1944
|
+
},
|
|
1945
|
+
"working_hours_granularity": {
|
|
1946
|
+
"type": "string",
|
|
1947
|
+
"enum": [
|
|
1948
|
+
"time",
|
|
1949
|
+
"day"
|
|
1950
|
+
],
|
|
1951
|
+
"description": "At what granularity working hours contribute to absence. \"time\" (default): all time outside a user's working windows counts as absent. \"day\": only full days with no working windows count as absent (whole-day granularity, used by thread assignment). Users without a working-hours record never produce working-hours intervals.",
|
|
1952
|
+
"default": "time"
|
|
1774
1953
|
}
|
|
1775
1954
|
},
|
|
1776
1955
|
"required": [
|
|
@@ -1838,8 +2017,8 @@
|
|
|
1838
2017
|
"AbsenceStatus": {
|
|
1839
2018
|
"type": "string",
|
|
1840
2019
|
"enum": [
|
|
1841
|
-
"
|
|
1842
|
-
"
|
|
2020
|
+
"oof",
|
|
2021
|
+
"busy"
|
|
1843
2022
|
],
|
|
1844
2023
|
"description": "Calendar status targeted by the absence adjustment."
|
|
1845
2024
|
},
|
|
@@ -1938,6 +2117,196 @@
|
|
|
1938
2117
|
"last_synced_at"
|
|
1939
2118
|
]
|
|
1940
2119
|
},
|
|
2120
|
+
"WorkingHours": {
|
|
2121
|
+
"type": "object",
|
|
2122
|
+
"properties": {
|
|
2123
|
+
"monday": {
|
|
2124
|
+
"type": "array",
|
|
2125
|
+
"items": {
|
|
2126
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2127
|
+
},
|
|
2128
|
+
"maxItems": 6,
|
|
2129
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2130
|
+
},
|
|
2131
|
+
"tuesday": {
|
|
2132
|
+
"type": "array",
|
|
2133
|
+
"items": {
|
|
2134
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2135
|
+
},
|
|
2136
|
+
"maxItems": 6,
|
|
2137
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2138
|
+
},
|
|
2139
|
+
"wednesday": {
|
|
2140
|
+
"type": "array",
|
|
2141
|
+
"items": {
|
|
2142
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2143
|
+
},
|
|
2144
|
+
"maxItems": 6,
|
|
2145
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2146
|
+
},
|
|
2147
|
+
"thursday": {
|
|
2148
|
+
"type": "array",
|
|
2149
|
+
"items": {
|
|
2150
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2151
|
+
},
|
|
2152
|
+
"maxItems": 6,
|
|
2153
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2154
|
+
},
|
|
2155
|
+
"friday": {
|
|
2156
|
+
"type": "array",
|
|
2157
|
+
"items": {
|
|
2158
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2159
|
+
},
|
|
2160
|
+
"maxItems": 6,
|
|
2161
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2162
|
+
},
|
|
2163
|
+
"saturday": {
|
|
2164
|
+
"type": "array",
|
|
2165
|
+
"items": {
|
|
2166
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2167
|
+
},
|
|
2168
|
+
"maxItems": 6,
|
|
2169
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2170
|
+
},
|
|
2171
|
+
"sunday": {
|
|
2172
|
+
"type": "array",
|
|
2173
|
+
"items": {
|
|
2174
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2175
|
+
},
|
|
2176
|
+
"maxItems": 6,
|
|
2177
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2178
|
+
},
|
|
2179
|
+
"timezone": {
|
|
2180
|
+
"type": "string",
|
|
2181
|
+
"description": "IANA timezone the working windows are expressed in."
|
|
2182
|
+
},
|
|
2183
|
+
"user_id": {
|
|
2184
|
+
"type": "string"
|
|
2185
|
+
},
|
|
2186
|
+
"updated_by": {
|
|
2187
|
+
"type": "string"
|
|
2188
|
+
},
|
|
2189
|
+
"created_at": {
|
|
2190
|
+
"type": "string",
|
|
2191
|
+
"format": "date-time"
|
|
2192
|
+
},
|
|
2193
|
+
"updated_at": {
|
|
2194
|
+
"type": "string",
|
|
2195
|
+
"format": "date-time"
|
|
2196
|
+
}
|
|
2197
|
+
},
|
|
2198
|
+
"required": [
|
|
2199
|
+
"monday",
|
|
2200
|
+
"tuesday",
|
|
2201
|
+
"wednesday",
|
|
2202
|
+
"thursday",
|
|
2203
|
+
"friday",
|
|
2204
|
+
"saturday",
|
|
2205
|
+
"sunday",
|
|
2206
|
+
"timezone",
|
|
2207
|
+
"user_id",
|
|
2208
|
+
"updated_by",
|
|
2209
|
+
"created_at",
|
|
2210
|
+
"updated_at"
|
|
2211
|
+
],
|
|
2212
|
+
"description": "Recurring weekly working hours of a user. The absence of a record means the user is treated as always available."
|
|
2213
|
+
},
|
|
2214
|
+
"UpsertWorkingHoursBody": {
|
|
2215
|
+
"type": "object",
|
|
2216
|
+
"properties": {
|
|
2217
|
+
"monday": {
|
|
2218
|
+
"type": "array",
|
|
2219
|
+
"items": {
|
|
2220
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2221
|
+
},
|
|
2222
|
+
"maxItems": 6,
|
|
2223
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2224
|
+
},
|
|
2225
|
+
"tuesday": {
|
|
2226
|
+
"type": "array",
|
|
2227
|
+
"items": {
|
|
2228
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2229
|
+
},
|
|
2230
|
+
"maxItems": 6,
|
|
2231
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2232
|
+
},
|
|
2233
|
+
"wednesday": {
|
|
2234
|
+
"type": "array",
|
|
2235
|
+
"items": {
|
|
2236
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2237
|
+
},
|
|
2238
|
+
"maxItems": 6,
|
|
2239
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2240
|
+
},
|
|
2241
|
+
"thursday": {
|
|
2242
|
+
"type": "array",
|
|
2243
|
+
"items": {
|
|
2244
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2245
|
+
},
|
|
2246
|
+
"maxItems": 6,
|
|
2247
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2248
|
+
},
|
|
2249
|
+
"friday": {
|
|
2250
|
+
"type": "array",
|
|
2251
|
+
"items": {
|
|
2252
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2253
|
+
},
|
|
2254
|
+
"maxItems": 6,
|
|
2255
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2256
|
+
},
|
|
2257
|
+
"saturday": {
|
|
2258
|
+
"type": "array",
|
|
2259
|
+
"items": {
|
|
2260
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2261
|
+
},
|
|
2262
|
+
"maxItems": 6,
|
|
2263
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2264
|
+
},
|
|
2265
|
+
"sunday": {
|
|
2266
|
+
"type": "array",
|
|
2267
|
+
"items": {
|
|
2268
|
+
"$ref": "#/components/schemas/TimeWindow"
|
|
2269
|
+
},
|
|
2270
|
+
"maxItems": 6,
|
|
2271
|
+
"description": "Working windows for a day, sorted and non-overlapping. An empty array means a day off."
|
|
2272
|
+
},
|
|
2273
|
+
"timezone": {
|
|
2274
|
+
"type": "string",
|
|
2275
|
+
"description": "IANA timezone the working windows are expressed in. Defaults to Europe/Berlin.",
|
|
2276
|
+
"default": "Europe/Berlin"
|
|
2277
|
+
}
|
|
2278
|
+
},
|
|
2279
|
+
"required": [
|
|
2280
|
+
"monday",
|
|
2281
|
+
"tuesday",
|
|
2282
|
+
"wednesday",
|
|
2283
|
+
"thursday",
|
|
2284
|
+
"friday",
|
|
2285
|
+
"saturday",
|
|
2286
|
+
"sunday"
|
|
2287
|
+
],
|
|
2288
|
+
"description": "Full replacement of the working-hours record. All weekdays are required; an empty array means a day off. Users without a working-hours record are treated as always available."
|
|
2289
|
+
},
|
|
2290
|
+
"TimeWindow": {
|
|
2291
|
+
"type": "object",
|
|
2292
|
+
"properties": {
|
|
2293
|
+
"start": {
|
|
2294
|
+
"type": "string",
|
|
2295
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
2296
|
+
"description": "24h wall-clock time (\"HH:mm\") in the timezone of the working-hours record."
|
|
2297
|
+
},
|
|
2298
|
+
"end": {
|
|
2299
|
+
"type": "string",
|
|
2300
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
2301
|
+
"description": "24h wall-clock time (\"HH:mm\") in the timezone of the working-hours record."
|
|
2302
|
+
}
|
|
2303
|
+
},
|
|
2304
|
+
"required": [
|
|
2305
|
+
"start",
|
|
2306
|
+
"end"
|
|
2307
|
+
],
|
|
2308
|
+
"description": "A wall-clock working window within a single day."
|
|
2309
|
+
},
|
|
1941
2310
|
"Calendar": {
|
|
1942
2311
|
"type": "object",
|
|
1943
2312
|
"properties": {
|
package/definitions/entity.json
CHANGED
|
@@ -3947,7 +3947,7 @@
|
|
|
3947
3947
|
"description": "ISO 8601 timestamp to filter jobs created after this time (e.g., 2023-01-01T00:00:00Z).",
|
|
3948
3948
|
"type": "string",
|
|
3949
3949
|
"format": "date-time",
|
|
3950
|
-
"example": "2023-01-01T00:00:
|
|
3950
|
+
"example": "2023-01-01T00:00:00Z"
|
|
3951
3951
|
}
|
|
3952
3952
|
},
|
|
3953
3953
|
{
|
|
@@ -7405,6 +7405,24 @@
|
|
|
7405
7405
|
"pattern": "^[a-zA-Z0-9_-]+$",
|
|
7406
7406
|
"example": "contact"
|
|
7407
7407
|
},
|
|
7408
|
+
"AdjustInstallmentCapabilityConfig": {
|
|
7409
|
+
"description": "Configuration for adjusting a contract installment through a Journey.",
|
|
7410
|
+
"type": "object",
|
|
7411
|
+
"additionalProperties": false,
|
|
7412
|
+
"example": {
|
|
7413
|
+
"journey_id": "adjust-installment-flow"
|
|
7414
|
+
},
|
|
7415
|
+
"required": [
|
|
7416
|
+
"journey_id"
|
|
7417
|
+
],
|
|
7418
|
+
"properties": {
|
|
7419
|
+
"journey_id": {
|
|
7420
|
+
"type": "string",
|
|
7421
|
+
"minLength": 1,
|
|
7422
|
+
"description": "ID of the Flow Journey to open when adjusting the installment."
|
|
7423
|
+
}
|
|
7424
|
+
}
|
|
7425
|
+
},
|
|
7408
7426
|
"EntityCapability": {
|
|
7409
7427
|
"description": "Capabilities the Entity has. Turn features on/off for entities.",
|
|
7410
7428
|
"type": "object",
|
|
@@ -7451,6 +7469,9 @@
|
|
|
7451
7469
|
"description": "ID of the app if the capability is provided by an app",
|
|
7452
7470
|
"example": "123e4567-e89b-12d3-a456-426614174000"
|
|
7453
7471
|
},
|
|
7472
|
+
"adjust_installment": {
|
|
7473
|
+
"$ref": "#/components/schemas/AdjustInstallmentCapabilityConfig"
|
|
7474
|
+
},
|
|
7454
7475
|
"ui_config": {
|
|
7455
7476
|
"type": "object",
|
|
7456
7477
|
"properties": {
|
package/definitions/user.json
CHANGED
|
@@ -2443,6 +2443,10 @@
|
|
|
2443
2443
|
"passkey_enabled": {
|
|
2444
2444
|
"type": "boolean",
|
|
2445
2445
|
"description": "Whether passkey login is enabled for this organization"
|
|
2446
|
+
},
|
|
2447
|
+
"passkeys_registered": {
|
|
2448
|
+
"type": "boolean",
|
|
2449
|
+
"description": "Whether the user has at least one passkey registered. Lets the login\nUI offer passkey authentication as an alternative to an MFA code.\nDiscloses nothing that :beginPasskeyAuthentication doesn't already\nreveal for a known email address.\n"
|
|
2446
2450
|
}
|
|
2447
2451
|
}
|
|
2448
2452
|
},
|
|
@@ -21,7 +21,7 @@ var auth_default = defineCommand({
|
|
|
21
21
|
description: "Manage authentication"
|
|
22
22
|
},
|
|
23
23
|
subCommands: {
|
|
24
|
-
login: () => import("./auth-login-
|
|
24
|
+
login: () => import("./auth-login-3AY5U4JU.js").then((m) => m.default),
|
|
25
25
|
token: () => import("./auth-token-APXLIQAO.js").then((m) => m.default),
|
|
26
26
|
logout: defineCommand({
|
|
27
27
|
meta: { name: "logout", description: "Remove stored credentials" },
|
|
@@ -61,6 +61,7 @@ var auth_default = defineCommand({
|
|
|
61
61
|
const tokenUse = claims?.token_use;
|
|
62
62
|
const roles = claims?.assume_roles;
|
|
63
63
|
const readOnly = claims?.read_only === true;
|
|
64
|
+
const anonymize = claims?.anonymize === true;
|
|
64
65
|
if (name) process.stdout.write(` Name: ${name}
|
|
65
66
|
`);
|
|
66
67
|
if (adminEmail && adminEmail !== name) process.stdout.write(` Email: ${adminEmail}
|
|
@@ -76,6 +77,8 @@ var auth_default = defineCommand({
|
|
|
76
77
|
if (roles?.length) process.stdout.write(` Roles: ${roles.join(", ")}
|
|
77
78
|
`);
|
|
78
79
|
process.stdout.write(` Access: ${readOnly ? `${YELLOW}read-only${RESET}` : `${GREEN}read-write${RESET}`}
|
|
80
|
+
`);
|
|
81
|
+
if (anonymize) process.stdout.write(` Data: ${YELLOW}anonymized${RESET}
|
|
79
82
|
`);
|
|
80
83
|
if (creds.expires_at) {
|
|
81
84
|
const expiry = new Date(creds.expires_at);
|
|
@@ -40,6 +40,10 @@ var auth_login_default = defineCommand({
|
|
|
40
40
|
token: { type: "string", description: "Manually provide a token instead of browser login" },
|
|
41
41
|
profile: { type: "string", description: "Save credentials to this profile" },
|
|
42
42
|
readonly: { type: "boolean", description: "Generate a read-only token (cannot perform write actions)" },
|
|
43
|
+
anonymize: {
|
|
44
|
+
type: "boolean",
|
|
45
|
+
description: "Generate an anonymized token (personal data is masked in all API responses)"
|
|
46
|
+
},
|
|
43
47
|
"use-dev": { type: "boolean", description: "Use dev environment (portal.dev.epilot.cloud)" },
|
|
44
48
|
"use-staging": { type: "boolean", description: "Use staging environment (portal.staging.epilot.cloud)" }
|
|
45
49
|
},
|
|
@@ -47,6 +51,7 @@ var auth_login_default = defineCommand({
|
|
|
47
51
|
const profileName = args.profile || process.env.EPILOT_PROFILE;
|
|
48
52
|
const env = resolveEnvironment(args["use-dev"], args["use-staging"]);
|
|
49
53
|
const readonly = Boolean(args.readonly);
|
|
54
|
+
const anonymize = Boolean(args.anonymize);
|
|
50
55
|
if (args.token) {
|
|
51
56
|
saveCredentials({ token: args.token }, profileName);
|
|
52
57
|
const suffix = profileName ? ` to profile "${profileName}"` : "";
|
|
@@ -63,7 +68,7 @@ var auth_login_default = defineCommand({
|
|
|
63
68
|
);
|
|
64
69
|
process.exit(1);
|
|
65
70
|
}
|
|
66
|
-
const token = await browserLogin(profileName, env, readonly);
|
|
71
|
+
const token = await browserLogin(profileName, env, readonly, anonymize);
|
|
67
72
|
if (token) {
|
|
68
73
|
process.stdout.write(`${GREEN}${BOLD}Login successful!${RESET}
|
|
69
74
|
`);
|
|
@@ -74,7 +79,7 @@ var auth_login_default = defineCommand({
|
|
|
74
79
|
}
|
|
75
80
|
}
|
|
76
81
|
});
|
|
77
|
-
var browserLogin = async (profileName, env = "production", readonly = false) => {
|
|
82
|
+
var browserLogin = async (profileName, env = "production", readonly = false, anonymize = false) => {
|
|
78
83
|
const state = randomBytes(32).toString("hex");
|
|
79
84
|
const verificationCode = randomBytes(3).toString("hex").toUpperCase();
|
|
80
85
|
const suffix = profileName ? ` ${DIM}(profile: ${profileName})${RESET}` : "";
|
|
@@ -86,6 +91,12 @@ ${BOLD}epilot CLI Login${RESET}${suffix}
|
|
|
86
91
|
if (readonly) {
|
|
87
92
|
process.stdout.write(
|
|
88
93
|
`${YELLOW}Read-only mode: the CLI session will not be able to perform write actions.${RESET}
|
|
94
|
+
`
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
if (anonymize) {
|
|
98
|
+
process.stdout.write(
|
|
99
|
+
`${YELLOW}Anonymize mode: personal data will be masked in all API responses for this CLI session.${RESET}
|
|
89
100
|
`
|
|
90
101
|
);
|
|
91
102
|
}
|
|
@@ -125,7 +136,7 @@ ${BOLD}epilot CLI Login${RESET}${suffix}
|
|
|
125
136
|
const port = address.port;
|
|
126
137
|
const callbackUrl = `http://localhost:${port}/callback`;
|
|
127
138
|
const portalUrl = getPortalUrl(env);
|
|
128
|
-
const loginUrl = `${portalUrl}/login?cli_callback=${encodeURIComponent(callbackUrl)}&state=${state}&code=${verificationCode}` + (readonly ? `&readonly=true` : "");
|
|
139
|
+
const loginUrl = `${portalUrl}/login?cli_callback=${encodeURIComponent(callbackUrl)}&state=${state}&code=${verificationCode}` + (readonly ? `&readonly=true` : "") + (anonymize ? `&anonymize=true` : "");
|
|
129
140
|
process.stdout.write(`
|
|
130
141
|
${DIM}Login URL: ${loginUrl}${RESET}
|
|
131
142
|
|
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-SOTT5WKJ.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.94",
|
|
15
15
|
description: "CLI for epilot APIs"
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
@@ -27,11 +27,11 @@ var main = defineCommand({
|
|
|
27
27
|
jsonata: { type: "string", description: "JSONata expression" }
|
|
28
28
|
},
|
|
29
29
|
subCommands: {
|
|
30
|
-
auth: () => import("../auth-
|
|
30
|
+
auth: () => import("../auth-WMXFMPWE.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-IGVIBAFM.js").then((m) => m.default),
|
|
34
|
+
upgrade: () => import("../upgrade-UQVSUG35.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.94" : (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-IGVIBAFM.js");
|
|
144
144
|
handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
|
|
145
145
|
process.exit(0);
|
|
146
146
|
}
|
|
@@ -250,7 +250,7 @@ var API_LIST = [
|
|
|
250
250
|
kebabName: "calendar",
|
|
251
251
|
title: "Calendar API",
|
|
252
252
|
serverUrl: "https://calendar.sls.epilot.io",
|
|
253
|
-
operationCount:
|
|
253
|
+
operationCount: 28,
|
|
254
254
|
operationIds: [
|
|
255
255
|
"listUsersAbsence",
|
|
256
256
|
"searchAbsence",
|
|
@@ -261,6 +261,9 @@ var API_LIST = [
|
|
|
261
261
|
"patchAbsenceAdjustment",
|
|
262
262
|
"deleteAbsenceAdjustment",
|
|
263
263
|
"getUserAbsence",
|
|
264
|
+
"getWorkingHours",
|
|
265
|
+
"putWorkingHours",
|
|
266
|
+
"deleteWorkingHours",
|
|
264
267
|
"listCalendars",
|
|
265
268
|
"createCalendar",
|
|
266
269
|
"addOutlookCalendar",
|
|
@@ -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.94";
|
|
76
76
|
try {
|
|
77
77
|
const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
|
|
78
78
|
encoding: "utf-8",
|