@orvello/sdk 0.2.1 → 0.2.3

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/CONTRACT_SHA256 CHANGED
@@ -1 +1 @@
1
- 4efd4e4b669168c9cab5419fa04dd4e26a2029de2d4b10a59918e366189e1072
1
+ d19081d6e7c4efcf54245026a17458d7f8dff002d61ea69cdd8f41c7d0d033ad
package/dist/contract.cjs CHANGED
@@ -3,15 +3,20 @@
3
3
  // src/generated/api/catalog.ts
4
4
  var apiMountPrefixes = {
5
5
  base: [
6
+ "/api-keys",
6
7
  "/api/amp-proxy",
7
8
  "/api/entitlements",
8
9
  "/app-info",
9
10
  "/app-logs",
11
+ "/auth",
12
+ "/docs",
10
13
  "/entitlements",
14
+ "/internal/users",
11
15
  "/oauth",
12
16
  "/permissions",
13
17
  "/role-assignments",
14
18
  "/roles",
19
+ "/security",
15
20
  "/settings",
16
21
  "/user-activity",
17
22
  "/users",
@@ -24,23 +29,35 @@ var apiMountPrefixes = {
24
29
  "/bookkeeping",
25
30
  "/currency-rates",
26
31
  "/customer-companies",
27
- "/docs",
28
32
  "/documents",
29
33
  "/exports",
30
34
  "/invoices",
31
- "/managing-companies"
35
+ "/managing-companies",
36
+ "/oauth"
32
37
  ]
33
38
  };
34
39
  var apiGroups = {
35
40
  base: [
36
41
  {
37
- "key": "api",
38
- "module": "./routes.api"
42
+ "key": "api_keys",
43
+ "module": "./routes.api_keys"
44
+ },
45
+ {
46
+ "key": "app_info",
47
+ "module": "./routes.app_info"
48
+ },
49
+ {
50
+ "key": "auth",
51
+ "module": "./routes.auth"
39
52
  },
40
53
  {
41
54
  "key": "entitlements",
42
55
  "module": "./routes.entitlements"
43
56
  },
57
+ {
58
+ "key": "internal",
59
+ "module": "./routes.internal"
60
+ },
44
61
  {
45
62
  "key": "permissions",
46
63
  "module": "./routes.permissions"
@@ -49,10 +66,18 @@ var apiGroups = {
49
66
  "key": "roles",
50
67
  "module": "./routes.roles"
51
68
  },
69
+ {
70
+ "key": "security",
71
+ "module": "./routes.security"
72
+ },
52
73
  {
53
74
  "key": "settings",
54
75
  "module": "./routes.settings"
55
76
  },
77
+ {
78
+ "key": "user_activity",
79
+ "module": "./routes.user_activity"
80
+ },
56
81
  {
57
82
  "key": "users",
58
83
  "module": "./routes.users"
@@ -71,6 +96,14 @@ var apiGroups = {
71
96
  "key": "bookkeeping",
72
97
  "module": "./routes.bookkeeping"
73
98
  },
99
+ {
100
+ "key": "currency_rates",
101
+ "module": "./routes.currency_rates"
102
+ },
103
+ {
104
+ "key": "customer_companies",
105
+ "module": "./routes.customer_companies"
106
+ },
74
107
  {
75
108
  "key": "documents",
76
109
  "module": "./routes.documents"
@@ -82,6 +115,10 @@ var apiGroups = {
82
115
  {
83
116
  "key": "invoices",
84
117
  "module": "./routes.invoices"
118
+ },
119
+ {
120
+ "key": "managing_companies",
121
+ "module": "./routes.managing_companies"
85
122
  }
86
123
  ],
87
124
  all: [
@@ -90,13 +127,17 @@ var apiGroups = {
90
127
  "module": "./features/routes.admin"
91
128
  },
92
129
  {
93
- "key": "api",
94
- "module": "./base/routes.api"
130
+ "key": "api_keys",
131
+ "module": "./base/routes.api_keys"
95
132
  },
96
133
  {
97
134
  "key": "app_info",
98
135
  "module": "./base/routes.app_info"
99
136
  },
137
+ {
138
+ "key": "auth",
139
+ "module": "./base/routes.auth"
140
+ },
100
141
  {
101
142
  "key": "bookkeeping",
102
143
  "module": "./features/routes.bookkeeping"
@@ -133,6 +174,10 @@ var apiGroups = {
133
174
  "key": "exports",
134
175
  "module": "./features/routes.exports"
135
176
  },
177
+ {
178
+ "key": "internal",
179
+ "module": "./base/routes.internal"
180
+ },
136
181
  {
137
182
  "key": "invoices",
138
183
  "module": "./features/routes.invoices"
@@ -143,7 +188,7 @@ var apiGroups = {
143
188
  },
144
189
  {
145
190
  "key": "logs",
146
- "module": "./features/routes.logs"
191
+ "module": "./base/routes.logs"
147
192
  },
148
193
  {
149
194
  "key": "managing_companies",
@@ -159,11 +204,11 @@ var apiGroups = {
159
204
  },
160
205
  {
161
206
  "key": "oauth2",
162
- "module": "./features/routes.oauth2"
207
+ "module": "./base/routes.oauth2"
163
208
  },
164
209
  {
165
210
  "key": "oauth2_external",
166
- "module": "./features/routes.oauth2_external"
211
+ "module": "./base/routes.oauth2_external"
167
212
  },
168
213
  {
169
214
  "key": "permissions",
@@ -173,6 +218,10 @@ var apiGroups = {
173
218
  "key": "roles",
174
219
  "module": "./base/routes.roles"
175
220
  },
221
+ {
222
+ "key": "security",
223
+ "module": "./base/routes.security"
224
+ },
176
225
  {
177
226
  "key": "settings",
178
227
  "module": "./base/routes.settings"
@@ -259,41 +308,113 @@ var apiRoutes_admin = {
259
308
  }
260
309
  };
261
310
 
262
- // src/generated/api/base/routes.api.ts
263
- var apiRoutes_api = {
264
- "GET__api_amp_proxy__discover": {
311
+ // src/generated/api/base/routes.api_keys.ts
312
+ var apiRoutes_api_keys = {
313
+ "api_keys_meta_capabilities": {
265
314
  method: "GET",
266
- path: "/api/amp-proxy/_discover",
267
- auth: { "type": "public" },
315
+ path: "/api-keys/meta/capabilities",
316
+ auth: { "type": "frontend_bearer_http" },
268
317
  meta: {
269
- tags: ["api"]
318
+ tags: ["api-keys"],
319
+ summary: "API-Key Capabilities f\xFCr UI",
320
+ description: "Pre-flight Check: liefert canCreate / canList / canRevoke / canDelete plus strukturierte Gr\xFCnde (INSUFFICIENT_ROLE, PLAN_LIMIT_REACHED, ...) und das aktuelle Limit/Usage. Das Frontend rendert Buttons enabled/disabled inkl. Tooltip OHNE vorherigen 4xx-Round-Trip.",
321
+ validated: { "params": false, "query": true, "body": false }
270
322
  },
271
323
  types: null
272
324
  },
273
- "GET__api_amp_proxy_key": {
325
+ "api_keys_meta_scopes": {
274
326
  method: "GET",
275
- path: "/api/amp-proxy/:key",
276
- auth: { "type": "public" },
327
+ path: "/api-keys/meta/scopes",
328
+ auth: { "type": "frontend_bearer_http" },
277
329
  meta: {
278
- tags: ["api"]
330
+ tags: ["api-keys"],
331
+ summary: "Scope-Vokabular f\xFCr UI",
332
+ description: "Liefert die vollst\xE4ndige Scope-Liste samt Labels und UI-Gruppen sowie die verf\xFCgbaren Rollen + Environment-Werte. Damit das Frontend Picker rendern kann, ohne irgendetwas zu hardcoden. Auth: jeder eingeloggte User.",
333
+ validated: { "params": false, "query": true, "body": false }
279
334
  },
280
335
  types: null
281
336
  },
282
- "POST__api_amp_proxy_key": {
337
+ "api_keys_create": {
283
338
  method: "POST",
284
- path: "/api/amp-proxy/:key",
285
- auth: { "type": "public" },
339
+ path: "/api-keys/create",
340
+ auth: { "type": "frontend_bearer_http" },
286
341
  meta: {
287
- tags: ["api"]
342
+ tags: ["api-keys"],
343
+ summary: "API-Key erstellen",
344
+ description: "Erstellt einen neuen API-Key im aktiven Workspace. Der Klartext-Schl\xFCssel wird genau einmal in der Response zur\xFCckgegeben \u2014 danach niemals wieder. Capability: api_key.write (admin+). Die gew\xE4hlte Key-Rolle kann nicht h\xF6her sein als die Workspace-Rolle des Aufrufers.",
345
+ validated: { "params": false, "query": false, "body": true }
346
+ },
347
+ types: null
348
+ },
349
+ "api_keys_list": {
350
+ method: "GET",
351
+ path: "/api-keys/list",
352
+ auth: { "type": "frontend_bearer_http" },
353
+ meta: {
354
+ tags: ["api-keys"],
355
+ summary: "API-Keys listen",
356
+ description: "Listet API-Keys des aktiven Workspace paginiert. Capability: api_key.read.",
357
+ validated: { "params": false, "query": true, "body": false }
288
358
  },
289
359
  types: null
290
360
  },
291
- "DELETE__api_amp_proxy_key": {
361
+ "api_keys_by_id": {
362
+ method: "GET",
363
+ path: "/api-keys/byId/:apiKeyId",
364
+ auth: { "type": "frontend_bearer_http" },
365
+ meta: {
366
+ tags: ["api-keys"],
367
+ summary: "API-Key nach ID",
368
+ description: "L\xE4dt einen API-Key (Metadata, ohne Klartext). Capability: api_key.read.",
369
+ validated: { "params": true, "query": false, "body": false }
370
+ },
371
+ types: null
372
+ },
373
+ "api_keys_update": {
374
+ method: "PUT",
375
+ path: "/api-keys/update/:apiKeyId",
376
+ auth: { "type": "frontend_bearer_http" },
377
+ meta: {
378
+ tags: ["api-keys"],
379
+ summary: "API-Key aktualisieren",
380
+ description: "\xC4ndert Name/Rolle/Scopes/IP-Whitelist/Rate-Limit/G\xFCltigkeit. Der eigentliche Key-Wert kann nicht aktualisiert werden \u2014 daf\xFCr einen neuen Key erstellen. Capability: api_key.write.",
381
+ validated: { "params": true, "query": false, "body": true }
382
+ },
383
+ types: null
384
+ },
385
+ "api_keys_revoke": {
386
+ method: "POST",
387
+ path: "/api-keys/revoke/:apiKeyId",
388
+ auth: { "type": "frontend_bearer_http" },
389
+ meta: {
390
+ tags: ["api-keys"],
391
+ summary: "API-Key sperren",
392
+ description: "Setzt isActive=false und revokedAt=now. Der Key bleibt f\xFCr Audit-Zwecke in der Tabelle, ist aber nicht mehr authentifizierbar. Capability: api_key.write.",
393
+ validated: { "params": true, "query": false, "body": true }
394
+ },
395
+ types: null
396
+ },
397
+ "api_keys_delete": {
292
398
  method: "DELETE",
293
- path: "/api/amp-proxy/:key",
294
- auth: { "type": "public" },
399
+ path: "/api-keys/delete/:apiKeyId",
400
+ auth: { "type": "frontend_bearer_http" },
401
+ meta: {
402
+ tags: ["api-keys"],
403
+ summary: "API-Key l\xF6schen",
404
+ description: "L\xF6scht einen API-Key endg\xFCltig (GDPR Right-to-Erasure). Audit-Log-Eintr\xE4ge bleiben mit nullified api_key_id erhalten. Capability: api_key.write.",
405
+ validated: { "params": true, "query": false, "body": false }
406
+ },
407
+ types: null
408
+ },
409
+ "api_keys_audit": {
410
+ method: "GET",
411
+ path: "/api-keys/audit/:apiKeyId",
412
+ auth: { "type": "frontend_bearer_http" },
295
413
  meta: {
296
- tags: ["api"]
414
+ tags: ["api-keys"],
415
+ summary: "Audit-Log eines Keys",
416
+ description: "Listet Authentifizierungs-Versuche dieses Keys (Erfolg + Fehler) paginiert. Capability: api_key.read.",
417
+ validated: { "params": true, "query": true, "body": false }
297
418
  },
298
419
  types: null
299
420
  }
@@ -308,6 +429,7 @@ var apiRoutes_app_info = {
308
429
  meta: {
309
430
  tags: ["app-info"],
310
431
  summary: "Health check",
432
+ description: "Kern-Pruefungen des Prozesses (Datenbank, Speicher, Event-Loop, Verschluesselung). 200 bei healthy/degraded, 503 bei unhealthy.",
311
433
  validated: { "params": false, "query": false, "body": false }
312
434
  },
313
435
  types: null
@@ -347,6 +469,116 @@ var apiRoutes_app_info = {
347
469
  }
348
470
  };
349
471
 
472
+ // src/generated/api/base/routes.auth.ts
473
+ var apiRoutes_auth = {
474
+ "auth_register": {
475
+ method: "POST",
476
+ path: "/auth/register",
477
+ auth: { "type": "public" },
478
+ meta: {
479
+ tags: ["auth"],
480
+ summary: "Register a new direct-auth account",
481
+ bodyContentType: "application/json",
482
+ validated: { "params": false, "query": false, "body": true }
483
+ },
484
+ types: null
485
+ },
486
+ "auth_login": {
487
+ method: "POST",
488
+ path: "/auth/login",
489
+ auth: { "type": "public" },
490
+ meta: {
491
+ tags: ["auth"],
492
+ summary: "Log in with email + password",
493
+ bodyContentType: "application/json",
494
+ validated: { "params": false, "query": false, "body": true }
495
+ },
496
+ types: null
497
+ },
498
+ "auth_refresh": {
499
+ method: "POST",
500
+ path: "/auth/refresh",
501
+ auth: { "type": "public" },
502
+ meta: {
503
+ tags: ["auth"],
504
+ summary: "Rotate access + refresh tokens",
505
+ bodyContentType: "application/json",
506
+ validated: { "params": false, "query": false, "body": true }
507
+ },
508
+ types: null
509
+ },
510
+ "auth_logout": {
511
+ method: "POST",
512
+ path: "/auth/logout",
513
+ auth: { "type": "public" },
514
+ meta: {
515
+ tags: ["auth"],
516
+ summary: "Revoke the current refresh token",
517
+ bodyContentType: "application/json",
518
+ validated: { "params": false, "query": false, "body": true }
519
+ },
520
+ types: null
521
+ },
522
+ "auth_me": {
523
+ method: "GET",
524
+ path: "/auth/me",
525
+ auth: { "type": "frontend_bearer_http" },
526
+ meta: {
527
+ tags: ["auth"],
528
+ summary: "Get the current user incl. roles and isAdmin (Bearer access JWT)",
529
+ validated: { "params": false, "query": true, "body": false }
530
+ },
531
+ types: null
532
+ },
533
+ "auth_push_token_upsert": {
534
+ method: "POST",
535
+ path: "/auth/push-token",
536
+ auth: { "type": "frontend_bearer_http" },
537
+ meta: {
538
+ tags: ["auth"],
539
+ summary: "Register a device push token for the current user",
540
+ bodyContentType: "application/json",
541
+ validated: { "params": false, "query": false, "body": true }
542
+ },
543
+ types: null
544
+ },
545
+ "auth_verify_email_request": {
546
+ method: "POST",
547
+ path: "/auth/verify-email/request",
548
+ auth: { "type": "frontend_bearer_http" },
549
+ meta: {
550
+ tags: ["auth"],
551
+ summary: "Send a fresh email-verification link to the current user",
552
+ bodyContentType: "application/json",
553
+ validated: { "params": false, "query": false, "body": true }
554
+ },
555
+ types: null
556
+ },
557
+ "auth_verify_email_confirm": {
558
+ method: "POST",
559
+ path: "/auth/verify-email/confirm",
560
+ auth: { "type": "public" },
561
+ meta: {
562
+ tags: ["auth"],
563
+ summary: "Confirm an email-verification token (programmatic / deep-link flow)",
564
+ bodyContentType: "application/json",
565
+ validated: { "params": false, "query": false, "body": true }
566
+ },
567
+ types: null
568
+ },
569
+ "auth_verify_email_landing": {
570
+ method: "GET",
571
+ path: "/auth/verify-email",
572
+ auth: { "type": "public" },
573
+ meta: {
574
+ tags: ["auth"],
575
+ summary: "Browser landing page that consumes the verification token",
576
+ validated: { "params": false, "query": true, "body": false }
577
+ },
578
+ types: null
579
+ }
580
+ };
581
+
350
582
  // src/generated/api/features/routes.bookkeeping.ts
351
583
  var apiRoutes_bookkeeping = {
352
584
  "bookkeeping_revenues_search": {
@@ -2796,7 +3028,7 @@ var apiRoutes_entitlements = {
2796
3028
  "entitlements_list": {
2797
3029
  method: "GET",
2798
3030
  path: "/entitlements",
2799
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3031
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2800
3032
  meta: {
2801
3033
  tags: ["entitlements"],
2802
3034
  summary: "List available entitlements",
@@ -2808,7 +3040,7 @@ var apiRoutes_entitlements = {
2808
3040
  "entitlements_assign": {
2809
3041
  method: "POST",
2810
3042
  path: "/entitlements",
2811
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:write"] },
3043
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2812
3044
  meta: {
2813
3045
  tags: ["entitlements"],
2814
3046
  summary: "Assign entitlement to user",
@@ -2821,7 +3053,7 @@ var apiRoutes_entitlements = {
2821
3053
  "entitlements_get_state": {
2822
3054
  method: "GET",
2823
3055
  path: "/entitlements/:userId/:type/:identifier",
2824
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3056
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2825
3057
  meta: {
2826
3058
  tags: ["entitlements"],
2827
3059
  summary: "Get current entitlement state",
@@ -2833,7 +3065,7 @@ var apiRoutes_entitlements = {
2833
3065
  "entitlements_update_state": {
2834
3066
  method: "PUT",
2835
3067
  path: "/entitlements/:userId/:type/:identifier",
2836
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read", "entitlements:write"] },
3068
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2837
3069
  meta: {
2838
3070
  tags: ["entitlements"],
2839
3071
  summary: "Update entitlement validity",
@@ -2846,7 +3078,7 @@ var apiRoutes_entitlements = {
2846
3078
  "entitlements_revoke": {
2847
3079
  method: "DELETE",
2848
3080
  path: "/entitlements/:userId/:type/:identifier",
2849
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:write"] },
3081
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2850
3082
  meta: {
2851
3083
  tags: ["entitlements"],
2852
3084
  summary: "Revoke entitlement from user",
@@ -2858,7 +3090,7 @@ var apiRoutes_entitlements = {
2858
3090
  "entitlements_getAll": {
2859
3091
  method: "GET",
2860
3092
  path: "/entitlements/getAll",
2861
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3093
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2862
3094
  meta: {
2863
3095
  tags: ["entitlements"],
2864
3096
  summary: "Alias for listing entitlements",
@@ -2870,7 +3102,7 @@ var apiRoutes_entitlements = {
2870
3102
  "entitlements_getAssigned": {
2871
3103
  method: "GET",
2872
3104
  path: "/entitlements/assigned",
2873
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3105
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2874
3106
  meta: {
2875
3107
  tags: ["entitlements"],
2876
3108
  summary: "Get role assignments (legacy)",
@@ -2882,7 +3114,7 @@ var apiRoutes_entitlements = {
2882
3114
  "entitlements_getUserEntitlements": {
2883
3115
  method: "GET",
2884
3116
  path: "/entitlements/user/:userId",
2885
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3117
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2886
3118
  meta: {
2887
3119
  tags: ["entitlements"],
2888
3120
  summary: "Get active user entitlements (legacy)",
@@ -2894,7 +3126,7 @@ var apiRoutes_entitlements = {
2894
3126
  "entitlements_context_get_by_shop_assignment": {
2895
3127
  method: "GET",
2896
3128
  path: "/entitlements/context/by-shop-assignment/:shopAssignmentId",
2897
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3129
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2898
3130
  meta: {
2899
3131
  tags: ["entitlements"],
2900
3132
  summary: "Get entitlement sync context by shop assignment id",
@@ -2906,7 +3138,7 @@ var apiRoutes_entitlements = {
2906
3138
  "entitlements_usage_overages_pull": {
2907
3139
  method: "GET",
2908
3140
  path: "/entitlements/usage-overages",
2909
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3141
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2910
3142
  meta: {
2911
3143
  tags: ["entitlements"],
2912
3144
  summary: "Pull usage overages",
@@ -2918,7 +3150,7 @@ var apiRoutes_entitlements = {
2918
3150
  "entitlements_getById": {
2919
3151
  method: "GET",
2920
3152
  path: "/entitlements/:id",
2921
- auth: { "type": "unified_bearer", "allowUserSession": false, "scopes": ["entitlements:read"] },
3153
+ auth: { "type": "unified_bearer", "allowUserSession": false, "allowOAuth2": false, "allowApiKey": true },
2922
3154
  meta: {
2923
3155
  tags: ["entitlements"],
2924
3156
  summary: "Get entitlement by role id (legacy)",
@@ -2955,6 +3187,45 @@ var apiRoutes_exports = {
2955
3187
  }
2956
3188
  };
2957
3189
 
3190
+ // src/generated/api/base/routes.internal.ts
3191
+ var apiRoutes_internal = {
3192
+ "internal_users_provision": {
3193
+ method: "POST",
3194
+ path: "/internal/users/provision",
3195
+ auth: { "type": "x_api_key_https" },
3196
+ meta: {
3197
+ tags: ["internal", "users"],
3198
+ summary: "Idempotente Provisionierung: User-Anlage (oder Link via E-Mail-Match), Startrolle und App-Extras.",
3199
+ bodyContentType: "application/json",
3200
+ validated: { "params": false, "query": false, "body": true }
3201
+ },
3202
+ types: null
3203
+ },
3204
+ "internal_users_sync": {
3205
+ method: "POST",
3206
+ path: "/internal/users/sync",
3207
+ auth: { "type": "x_api_key_https" },
3208
+ meta: {
3209
+ tags: ["internal", "users"],
3210
+ summary: "Update der Profil-Felder (Email/Name/Verify). Out-of-order-gesch\xFCtzt via sourceUpdatedAt-Vergleich.",
3211
+ bodyContentType: "application/json",
3212
+ validated: { "params": false, "query": false, "body": true }
3213
+ },
3214
+ types: null
3215
+ },
3216
+ "internal_users_delete": {
3217
+ method: "DELETE",
3218
+ path: "/internal/users/:externalUserId",
3219
+ auth: { "type": "x_api_key_https" },
3220
+ meta: {
3221
+ tags: ["internal", "users"],
3222
+ summary: "DSGVO Art. 17 Hard-Delete. Cascade \xFCber vorhandene FK-Constraints. Idempotent (200 mit deleted:false bei not-found).",
3223
+ validated: { "params": true, "query": false, "body": false }
3224
+ },
3225
+ types: null
3226
+ }
3227
+ };
3228
+
2958
3229
  // src/generated/api/features/routes.invoices.ts
2959
3230
  var apiRoutes_invoices = {
2960
3231
  "invoice_dunning_suggestions": {
@@ -3409,7 +3680,7 @@ var apiRoutes_invoices_external = {
3409
3680
  }
3410
3681
  };
3411
3682
 
3412
- // src/generated/api/features/routes.logs.ts
3683
+ // src/generated/api/base/routes.logs.ts
3413
3684
  var apiRoutes_logs = {
3414
3685
  "logs_search": {
3415
3686
  method: "GET",
@@ -4204,7 +4475,7 @@ var apiRoutes_managing_company_logos = {
4204
4475
  }
4205
4476
  };
4206
4477
 
4207
- // src/generated/api/features/routes.oauth2.ts
4478
+ // src/generated/api/base/routes.oauth2.ts
4208
4479
  var apiRoutes_oauth2 = {
4209
4480
  "oauth2_token": {
4210
4481
  method: "POST",
@@ -4288,7 +4559,7 @@ var apiRoutes_oauth2 = {
4288
4559
  }
4289
4560
  };
4290
4561
 
4291
- // src/generated/api/features/routes.oauth2_external.ts
4562
+ // src/generated/api/base/routes.oauth2_external.ts
4292
4563
  var apiRoutes_oauth2_external = {
4293
4564
  "oauth2_external_clients_list": {
4294
4565
  method: "GET",
@@ -4559,6 +4830,19 @@ var apiRoutes_roles = {
4559
4830
  }
4560
4831
  };
4561
4832
 
4833
+ // src/generated/api/base/routes.security.ts
4834
+ var apiRoutes_security = {
4835
+ "GET__security_public": {
4836
+ method: "GET",
4837
+ path: "/security/public",
4838
+ auth: { "type": "public" },
4839
+ meta: {
4840
+ tags: ["security"]
4841
+ },
4842
+ types: null
4843
+ }
4844
+ };
4845
+
4562
4846
  // src/generated/api/base/routes.settings.ts
4563
4847
  var apiRoutes_settings = {
4564
4848
  "settings_list": {
@@ -4721,13 +5005,13 @@ var apiRoutes_users = {
4721
5005
 
4722
5006
  // src/generated/api/base/routes.webhooks.ts
4723
5007
  var apiRoutes_webhooks = {
4724
- "webhooks_list": {
5008
+ "webhooks_search": {
4725
5009
  method: "GET",
4726
- path: "/webhooks/getAll",
5010
+ path: "/webhooks/search",
4727
5011
  auth: { "type": "frontend_permission_http", "permission": "webhook_view" },
4728
5012
  meta: {
4729
5013
  tags: ["webhooks"],
4730
- summary: "List webhooks",
5014
+ summary: "Search webhooks (paginated)",
4731
5015
  validated: { "params": false, "query": true, "body": false }
4732
5016
  },
4733
5017
  types: null
@@ -4906,8 +5190,9 @@ var apiRoutes_work_tracking = {
4906
5190
  // src/generated/api/index.ts
4907
5191
  var apiRoutes = {
4908
5192
  ...apiRoutes_admin,
4909
- ...apiRoutes_api,
5193
+ ...apiRoutes_api_keys,
4910
5194
  ...apiRoutes_app_info,
5195
+ ...apiRoutes_auth,
4911
5196
  ...apiRoutes_bookkeeping,
4912
5197
  ...apiRoutes_currency_rates,
4913
5198
  ...apiRoutes_customer_companies,
@@ -4917,6 +5202,7 @@ var apiRoutes = {
4917
5202
  ...apiRoutes_enterprise,
4918
5203
  ...apiRoutes_entitlements,
4919
5204
  ...apiRoutes_exports,
5205
+ ...apiRoutes_internal,
4920
5206
  ...apiRoutes_invoices,
4921
5207
  ...apiRoutes_invoices_external,
4922
5208
  ...apiRoutes_logs,
@@ -4927,6 +5213,7 @@ var apiRoutes = {
4927
5213
  ...apiRoutes_oauth2_external,
4928
5214
  ...apiRoutes_permissions,
4929
5215
  ...apiRoutes_roles,
5216
+ ...apiRoutes_security,
4930
5217
  ...apiRoutes_settings,
4931
5218
  ...apiRoutes_user_activity,
4932
5219
  ...apiRoutes_users,
@@ -4938,8 +5225,9 @@ exports.apiGroups = apiGroups;
4938
5225
  exports.apiMountPrefixes = apiMountPrefixes;
4939
5226
  exports.apiRoutes = apiRoutes;
4940
5227
  exports.apiRoutes_admin = apiRoutes_admin;
4941
- exports.apiRoutes_api = apiRoutes_api;
5228
+ exports.apiRoutes_api_keys = apiRoutes_api_keys;
4942
5229
  exports.apiRoutes_app_info = apiRoutes_app_info;
5230
+ exports.apiRoutes_auth = apiRoutes_auth;
4943
5231
  exports.apiRoutes_bookkeeping = apiRoutes_bookkeeping;
4944
5232
  exports.apiRoutes_currency_rates = apiRoutes_currency_rates;
4945
5233
  exports.apiRoutes_customer_companies = apiRoutes_customer_companies;
@@ -4949,6 +5237,7 @@ exports.apiRoutes_dunning_external = apiRoutes_dunning_external;
4949
5237
  exports.apiRoutes_enterprise = apiRoutes_enterprise;
4950
5238
  exports.apiRoutes_entitlements = apiRoutes_entitlements;
4951
5239
  exports.apiRoutes_exports = apiRoutes_exports;
5240
+ exports.apiRoutes_internal = apiRoutes_internal;
4952
5241
  exports.apiRoutes_invoices = apiRoutes_invoices;
4953
5242
  exports.apiRoutes_invoices_external = apiRoutes_invoices_external;
4954
5243
  exports.apiRoutes_logs = apiRoutes_logs;
@@ -4959,6 +5248,7 @@ exports.apiRoutes_oauth2 = apiRoutes_oauth2;
4959
5248
  exports.apiRoutes_oauth2_external = apiRoutes_oauth2_external;
4960
5249
  exports.apiRoutes_permissions = apiRoutes_permissions;
4961
5250
  exports.apiRoutes_roles = apiRoutes_roles;
5251
+ exports.apiRoutes_security = apiRoutes_security;
4962
5252
  exports.apiRoutes_settings = apiRoutes_settings;
4963
5253
  exports.apiRoutes_user_activity = apiRoutes_user_activity;
4964
5254
  exports.apiRoutes_users = apiRoutes_users;