centra-sdk 0.1.52.dev2__tar.gz → 0.1.53__tar.gz

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.
Files changed (74) hide show
  1. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/PKG-INFO +35 -1
  2. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/README.md +34 -0
  3. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/pyproject.toml +1 -1
  4. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/dependencies.py +1 -1
  5. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/main.py +1 -1
  6. centra_sdk-0.1.53/src/centra_sdk/models/connector/__init__.py +3 -0
  7. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/__init__.py +3 -0
  8. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/common/__init__.py +3 -0
  9. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/common/common.py +2 -2
  10. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/common/inventory.py +2 -2
  11. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/config/__init__.py +3 -0
  12. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/config/switches.py +2 -2
  13. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/consumer/__init__.py +3 -0
  14. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/consumer/agents.py +2 -2
  15. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/consumer/enforcement.py +2 -2
  16. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/k8s/__init__.py +3 -0
  17. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/k8s/k8s_inventory.py +2 -2
  18. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/operations/__init__.py +3 -0
  19. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/operations/aws/__init__.py +3 -0
  20. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/aws/accounts.py +2 -2
  21. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/aws/flowlogs.py +2 -2
  22. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/operations/azure/__init__.py +3 -0
  23. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/azure/setup.py +2 -2
  24. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/config.py +2 -2
  25. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/operations/gcp/__init__.py +3 -0
  26. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/gcp/setup.py +2 -2
  27. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/health.py +2 -2
  28. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/info.py +2 -2
  29. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/log.py +2 -2
  30. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/operations/onboard.py +2 -2
  31. centra_sdk-0.1.53/src/centra_sdk/models/connector/v1/provider/__init__.py +3 -0
  32. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/provider/inventory.py +17 -17
  33. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/provider/lookup.py +2 -2
  34. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/provider/networks.py +2 -2
  35. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/provider/reveal.py +2 -2
  36. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/v1/provider/switch_observability.py +2 -2
  37. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/models/connector/version.py +2 -2
  38. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/account.py +1 -1
  39. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/agents.py +1 -1
  40. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/authentication.py +1 -1
  41. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/control.py +1 -1
  42. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/enforcement.py +1 -1
  43. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/flow_logs.py +1 -1
  44. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/health.py +1 -1
  45. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/info.py +1 -1
  46. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/inventory.py +1 -1
  47. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/logging.py +1 -1
  48. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/onboarding.py +1 -1
  49. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/operations.py +1 -1
  50. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/setup.py +1 -1
  51. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/switch_observability.py +1 -1
  52. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/routers/switches.py +1 -1
  53. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/gc_cli.py +167 -2
  54. centra_sdk-0.1.53/src/centra_sdk/utils/sdk_version.py +107 -0
  55. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/__init__.py +0 -3
  56. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/__init__.py +0 -3
  57. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/common/__init__.py +0 -3
  58. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/config/__init__.py +0 -3
  59. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/consumer/__init__.py +0 -3
  60. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/k8s/__init__.py +0 -3
  61. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/operations/__init__.py +0 -3
  62. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/operations/aws/__init__.py +0 -3
  63. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/operations/azure/__init__.py +0 -3
  64. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/operations/gcp/__init__.py +0 -3
  65. centra_sdk-0.1.52.dev2/src/centra_sdk/models/connector/v1/provider/__init__.py +0 -3
  66. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/__init__.py +0 -0
  67. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/auth.py +0 -0
  68. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/config_masking.py +0 -0
  69. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/context.py +0 -0
  70. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/gc_handler.py +0 -0
  71. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/gc_serializer.py +0 -0
  72. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/handler_registry.py +0 -0
  73. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/log_handling.py +0 -0
  74. {centra_sdk-0.1.52.dev2 → centra_sdk-0.1.53}/src/centra_sdk/utils/option_values_handler.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: centra-sdk
3
- Version: 0.1.52.dev2
3
+ Version: 0.1.53
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: ivasylenko
@@ -33,6 +33,7 @@ The **Centra SDK** is a UNOFFICIAL FastAPI-based SDK designed to simplify the in
33
33
  - [Quick Start](#quick-start)
34
34
  - [Router Modules](#router-modules)
35
35
  - [Models and Data Types](#models-and-data-types)
36
+ - [Aggregator Compatibility](#aggregator-compatibility-min_aggregator_sdk_version)
36
37
  - [API Documentation](#api-documentation)
37
38
 
38
39
  ## Overview
@@ -383,6 +384,39 @@ def validate_k8s_service_port(v, handler, info):
383
384
 
384
385
  ```
385
386
 
387
+ ## Aggregator Compatibility (`min_aggregator_sdk_version`)
388
+
389
+ Every integration built with this SDK declares the **minimum centra-sdk version
390
+ its aggregator must be running** to host it. ILM uses this to gate
391
+ distribution: an environment whose aggregators run an older centra-sdk than the
392
+ floor simply isn't offered the integration (shown in ILM as *"aggregator SDK too
393
+ old (needs vX)"* — expected, not an error). The value is reported, with the
394
+ SDK version the integration was built with, by the `discover-sdk-compat` CLI
395
+ command that every connector exposes:
396
+
397
+ ```bash
398
+ $ cli discover-sdk-compat --format json
399
+ {"status": "okay", "sdk_version": "0.1.52", "min_aggregator_sdk_version": "0.1.45"}
400
+ ```
401
+
402
+ ### Adjusting the floor
403
+
404
+ The floor is a single constant — **`MIN_AGGREGATOR_SDK_VERSION` in
405
+ [`utils/sdk_version.py`](utils/sdk_version.py)**. That file's module docstring is
406
+ the authoritative, step-by-step guide (`HOW TO ADJUST`). In short:
407
+
408
+ - **When:** bump it **only** when a change in this SDK genuinely requires a newer
409
+ aggregator runtime (a new aggregator-side endpoint/field/protocol the
410
+ integration depends on). Purely integration-side changes (helpers, bugfixes,
411
+ fields the aggregator ignores) must **not** raise it — a too-high floor needlessly
412
+ locks integrations out of older-but-still-capable environments.
413
+ - **How:** set the constant to the *released* centra-sdk version that added the
414
+ required aggregator-side support (e.g. `"0.1.45"`), bump `version` in
415
+ `sdk/pyproject.toml` as usual, and commit. Nothing else to wire — the CLI
416
+ reports it and ILM gates on it automatically.
417
+ - **Rules of thumb:** keep `MIN_AGGREGATOR_SDK_VERSION` ≤ this package's own
418
+ version; only ever raise it; when in doubt, leave it.
419
+
386
420
  ## API Documentation
387
421
 
388
422
  Once your application is running, you can access:
@@ -10,6 +10,7 @@ The **Centra SDK** is a UNOFFICIAL FastAPI-based SDK designed to simplify the in
10
10
  - [Quick Start](#quick-start)
11
11
  - [Router Modules](#router-modules)
12
12
  - [Models and Data Types](#models-and-data-types)
13
+ - [Aggregator Compatibility](#aggregator-compatibility-min_aggregator_sdk_version)
13
14
  - [API Documentation](#api-documentation)
14
15
 
15
16
  ## Overview
@@ -360,6 +361,39 @@ def validate_k8s_service_port(v, handler, info):
360
361
 
361
362
  ```
362
363
 
364
+ ## Aggregator Compatibility (`min_aggregator_sdk_version`)
365
+
366
+ Every integration built with this SDK declares the **minimum centra-sdk version
367
+ its aggregator must be running** to host it. ILM uses this to gate
368
+ distribution: an environment whose aggregators run an older centra-sdk than the
369
+ floor simply isn't offered the integration (shown in ILM as *"aggregator SDK too
370
+ old (needs vX)"* — expected, not an error). The value is reported, with the
371
+ SDK version the integration was built with, by the `discover-sdk-compat` CLI
372
+ command that every connector exposes:
373
+
374
+ ```bash
375
+ $ cli discover-sdk-compat --format json
376
+ {"status": "okay", "sdk_version": "0.1.52", "min_aggregator_sdk_version": "0.1.45"}
377
+ ```
378
+
379
+ ### Adjusting the floor
380
+
381
+ The floor is a single constant — **`MIN_AGGREGATOR_SDK_VERSION` in
382
+ [`utils/sdk_version.py`](utils/sdk_version.py)**. That file's module docstring is
383
+ the authoritative, step-by-step guide (`HOW TO ADJUST`). In short:
384
+
385
+ - **When:** bump it **only** when a change in this SDK genuinely requires a newer
386
+ aggregator runtime (a new aggregator-side endpoint/field/protocol the
387
+ integration depends on). Purely integration-side changes (helpers, bugfixes,
388
+ fields the aggregator ignores) must **not** raise it — a too-high floor needlessly
389
+ locks integrations out of older-but-still-capable environments.
390
+ - **How:** set the constant to the *released* centra-sdk version that added the
391
+ required aggregator-side support (e.g. `"0.1.45"`), bump `version` in
392
+ `sdk/pyproject.toml` as usual, and commit. Nothing else to wire — the CLI
393
+ reports it and ILM gates on it automatically.
394
+ - **Rules of thumb:** keep `MIN_AGGREGATOR_SDK_VERSION` ≤ this package's own
395
+ version; only ever raise it; when in doubt, leave it.
396
+
363
397
  ## API Documentation
364
398
 
365
399
  Once your application is running, you can access:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "centra-sdk"
3
- version = "0.1.52.dev2"
3
+ version = "0.1.53"
4
4
  description = ""
5
5
  authors = [
6
6
  {name = "ivasylenko", email = "ivasylen@akamai.com"}
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -0,0 +1,3 @@
1
+ # generated by fastapi-codegen:
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -23,6 +23,21 @@ class NetworkConnections(BaseModel, GcSerializer):
23
23
  reachable_networks: List[str] = Field(..., alias='reachable-networks')
24
24
 
25
25
 
26
+ class Labels(RootModel[List[Label]]):
27
+ model_config = ConfigDict(
28
+ populate_by_name=True,
29
+ from_attributes=True,
30
+ )
31
+ root: List[Label]
32
+
33
+ def __getattr__(self, attr: str):
34
+ return getattr(self.root, attr)
35
+
36
+ def __iter__(self):
37
+ for item in self.root:
38
+ yield item
39
+
40
+
26
41
  class InventoryAssetType(Enum):
27
42
  VMS = 'vms'
28
43
  K8S_SERVICES = 'k8s_services'
@@ -69,21 +84,6 @@ class NetworkTopology(RootModel[List[NetworkConnections]]):
69
84
  yield item
70
85
 
71
86
 
72
- class Labels(RootModel[List[Label]]):
73
- model_config = ConfigDict(
74
- populate_by_name=True,
75
- from_attributes=True,
76
- )
77
- root: List[Label]
78
-
79
- def __getattr__(self, attr: str):
80
- return getattr(self.root, attr)
81
-
82
- def __iter__(self):
83
- for item in self.root:
84
- yield item
85
-
86
-
87
87
  class Inventory(RootModel[List[InventoryItem]]):
88
88
  model_config = ConfigDict(
89
89
  populate_by_name=True,
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
2
+ # filename: /home/circleci/project/guardicore/connector
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by fastapi-codegen:
2
2
  # filename: connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
3
+ # timestamp: 2026-06-01T04:15:31+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -25,6 +25,7 @@ from rich.table import Table
25
25
 
26
26
  from centra_sdk.models.connector.v1.operations.config import ConfigOpts
27
27
  from centra_sdk.models.connector.v1.operations.onboard import IntegrationCapabilities, InfraCapabilities
28
+ from centra_sdk.utils.sdk_version import MIN_AGGREGATOR_SDK_VERSION, installed_sdk_version
28
29
 
29
30
  # Constants
30
31
  OUTPUT_FORMAT_TABLE = 'table'
@@ -363,6 +364,116 @@ class DiscoverIntegrationCapabilitiesResponse(CliResponse):
363
364
 
364
365
  return self.value
365
366
 
367
+
368
+ @dataclass
369
+ class DiscoverSdkCompatResponse(CliResponse):
370
+ """Response wrapper for SDK-compatibility discovery operations.
371
+
372
+ Reports the centra-sdk version this integration was built with and the
373
+ minimum centra-sdk version an aggregator runtime must have to run it.
374
+
375
+ Attributes:
376
+ sdk_version: The installed centra-sdk version (built-with), or None
377
+ min_aggregator_sdk_version: The aggregator-runtime floor for this SDK
378
+ """
379
+ sdk_version: Optional[str] = None
380
+ min_aggregator_sdk_version: Optional[str] = None
381
+
382
+ @property
383
+ def title(self) -> str:
384
+ """Get the title for table display.
385
+
386
+ Returns:
387
+ Title string for SDK-compatibility table output
388
+ """
389
+ return "SDK Compatibility"
390
+
391
+ @classmethod
392
+ def success(cls, sdk_version: Optional[str], min_aggregator_sdk_version: Optional[str]) -> 'DiscoverSdkCompatResponse':
393
+ """Create a successful SDK-compatibility discovery response.
394
+
395
+ Args:
396
+ sdk_version: The installed centra-sdk version (may be None if unresolvable)
397
+ min_aggregator_sdk_version: The declared aggregator-runtime floor
398
+
399
+ Returns:
400
+ DiscoverSdkCompatResponse instance with success status
401
+ """
402
+ return cls(
403
+ status=STATUS_OK,
404
+ message="SDK compatibility discovery successful",
405
+ sdk_version=sdk_version,
406
+ min_aggregator_sdk_version=min_aggregator_sdk_version
407
+ )
408
+
409
+ @classmethod
410
+ def error(cls, error_message: str) -> 'DiscoverSdkCompatResponse':
411
+ """Create an error SDK-compatibility discovery response.
412
+
413
+ Args:
414
+ error_message: Description of the error that occurred
415
+
416
+ Returns:
417
+ DiscoverSdkCompatResponse instance with error status
418
+ """
419
+ return cls(
420
+ status=STATUS_ERROR,
421
+ message=error_message
422
+ )
423
+
424
+ @property
425
+ def value(self) -> Dict[str, Any]:
426
+ """Get the SDK-compatibility result as serializable data.
427
+
428
+ Returns:
429
+ Dictionary containing status, sdk_version, and the aggregator floor
430
+ """
431
+ if self.status == STATUS_ERROR:
432
+ return {"status": self.status, "message": self.message}
433
+
434
+ return {
435
+ "status": self.status,
436
+ "message": self.message,
437
+ "sdk_version": self.sdk_version,
438
+ "min_aggregator_sdk_version": self.min_aggregator_sdk_version
439
+ }
440
+
441
+ def print(self, format: str = 'json'):
442
+ """Print the response in the specified format.
443
+
444
+ Args:
445
+ format: Output format ('json' or 'table')
446
+ """
447
+ response_fmt = self.format(format)
448
+ if isinstance(response_fmt, Table):
449
+ rprint(response_fmt)
450
+ else:
451
+ print(response_fmt)
452
+
453
+ def format(self, output_format: OutputFormat) -> Union[Table, str]:
454
+ """Format the SDK-compatibility info based on the requested output format.
455
+
456
+ Args:
457
+ output_format: Desired output format
458
+
459
+ Returns:
460
+ Formatted output as Table or JSON string
461
+ """
462
+ if output_format == OUTPUT_FORMAT_JSON:
463
+ return json.dumps(self.value)
464
+
465
+ # table format
466
+ if output_format == OUTPUT_FORMAT_TABLE:
467
+ if self.status == STATUS_ERROR:
468
+ return self.format_table([{"status": self.status, "message": self.message}])
469
+ return self.format_table([{
470
+ "sdk_version": str(self.sdk_version),
471
+ "min_aggregator_sdk_version": str(self.min_aggregator_sdk_version)
472
+ }])
473
+
474
+ return self.value
475
+
476
+
366
477
  @dataclass
367
478
  class DiscoverInfraCapabilitiesResponse(CliResponse):
368
479
  """Response wrapper for infrastructure capabilities discovery operations.
@@ -545,6 +656,28 @@ class CliHandler(ABC):
545
656
  except Exception as e:
546
657
  return DiscoverMetadataResponse.error(f"Error during metadata discovery: {e}")
547
658
 
659
+ def discover_sdk_compat(self) -> DiscoverSdkCompatResponse:
660
+ """Handle SDK-compatibility discovery command.
661
+
662
+ Reports the centra-sdk version this integration was built with (the
663
+ installed package version inside the image) and the minimum centra-sdk
664
+ version an aggregator runtime must have to run it. Concrete on the base
665
+ handler so every integration reports automatically with no author
666
+ changes.
667
+
668
+ If the installed version cannot be resolved, the response is still a
669
+ success with ``sdk_version`` set to ``None`` -- the declared floor
670
+ (``min_aggregator_sdk_version``) is the authoritative gate value, so an
671
+ unresolvable installed version must not turn this into an error.
672
+
673
+ Returns:
674
+ DiscoverSdkCompatResponse with the installed and minimum versions
675
+ """
676
+ return DiscoverSdkCompatResponse.success(
677
+ sdk_version=installed_sdk_version(),
678
+ min_aggregator_sdk_version=MIN_AGGREGATOR_SDK_VERSION,
679
+ )
680
+
548
681
  @staticmethod
549
682
  def _validate_metadata_folder(source_folder):
550
683
  """Validate that the source folder contains required files."""
@@ -737,6 +870,37 @@ def _discover_infra_capabilities_command():
737
870
  return discover_infra_capabilities
738
871
 
739
872
 
873
+ def _discover_sdk_compat_command():
874
+ """Create the discover-sdk-compat command function."""
875
+ @click.command()
876
+ @click.option('--format', 'output_format', type=click.Choice([OUTPUT_FORMAT_TABLE, OUTPUT_FORMAT_JSON]),
877
+ default=OUTPUT_FORMAT_JSON, help='Output format')
878
+ @pass_context
879
+ def discover_sdk_compat(ctx, output_format: OutputFormat):
880
+ """Discover and display the SDK-compatibility information.
881
+
882
+ This command reports the centra-sdk version this integration was built
883
+ with and the minimum centra-sdk version an aggregator runtime must have
884
+ to run it. The output can be formatted as either a human-readable table
885
+ or machine-parseable JSON.
886
+
887
+ Examples:
888
+ # Display SDK compatibility in JSON format
889
+ cli discover-sdk-compat --format json
890
+
891
+ # Display SDK compatibility in table format
892
+ cli discover-sdk-compat --format table
893
+ """
894
+ try:
895
+ ret = CliHandler.from_context(ctx).discover_sdk_compat()
896
+ ret.print(output_format)
897
+ except Exception as e:
898
+ ret = DiscoverSdkCompatResponse.error(f"Error while discovering SDK compatibility: {e}")
899
+ ret.print(OUTPUT_FORMAT_JSON)
900
+ sys.exit(1)
901
+ return discover_sdk_compat
902
+
903
+
740
904
  def get_default_commands() -> List[click.Command]:
741
905
  """Get the default CLI commands.
742
906
 
@@ -754,7 +918,8 @@ def get_default_commands() -> List[click.Command]:
754
918
  _health_check_command(),
755
919
  _discover_metadata_command(),
756
920
  _discover_integration_capabilities_command(),
757
- _discover_infra_capabilities_command()
921
+ _discover_infra_capabilities_command(),
922
+ _discover_sdk_compat_command()
758
923
  ]
759
924
 
760
925
 
@@ -779,7 +944,7 @@ def create_cli(handler: 'CliHandler', prog_name: str = "cli", commands: Optional
779
944
  app = create_cli(handler, "my-cli", commands=custom_commands)
780
945
  """
781
946
  @click.group(name="cli")
782
- @click.version_option(version="1.0.0", prog_name=prog_name)
947
+ @click.version_option(version=installed_sdk_version() or "1.0.0", prog_name=prog_name)
783
948
  @pass_context
784
949
  def cli_group(ctx):
785
950
  ctx.ensure_object(dict)
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env python3
2
+ """centra-sdk version helpers for SDK-compatibility discovery.
3
+
4
+ This module exposes the two values used by the ``discover-sdk-compat`` CLI
5
+ command (see :mod:`centra_sdk.utils.gc_cli`), which ILM reads to decide whether
6
+ an integration built with this SDK can run on a given Centra environment:
7
+
8
+ * ``MIN_AGGREGATOR_SDK_VERSION`` -- the aggregator-runtime floor (see the big
9
+ "HOW TO ADJUST" block below).
10
+ * ``installed_sdk_version()`` -- the centra-sdk version actually installed in
11
+ the integration image at runtime.
12
+
13
+ This file ships in the SDK source and survives codegen because ``sdk/utils/``
14
+ is copied verbatim into ``src/centra_sdk/utils/`` by ``sdk/scripts/generate.py``.
15
+
16
+ ────────────────────────────────────────────────────────────────────────────
17
+ HOW TO ADJUST ``MIN_AGGREGATOR_SDK_VERSION`` (read this before changing it)
18
+ ────────────────────────────────────────────────────────────────────────────
19
+
20
+ WHAT IT MEANS
21
+ "An aggregator must have **at least** this centra-sdk version installed in
22
+ its runtime to run integrations built with THIS release of the SDK."
23
+ ILM compares it against every aggregator's reported installed centra-sdk
24
+ version. If an environment's newest aggregator is older than this floor,
25
+ ILM will NOT distribute integrations built with this SDK to that
26
+ environment -- it surfaces them in the UI as "aggregator SDK too old
27
+ (needs vX)". That is expected behaviour, not an error.
28
+
29
+ WHEN TO BUMP IT (rare -- most releases do NOT touch this)
30
+ Bump it ONLY when a change in this SDK makes an integration unable to run
31
+ on an older aggregator runtime, e.g. you:
32
+ • call a new aggregator-side gRPC/HTTP endpoint or field that older
33
+ aggregators don't implement;
34
+ • rely on aggregator behaviour/protocol added in a specific centra-sdk
35
+ version;
36
+ • change the wire contract in a way the aggregator must understand.
37
+ If your change is purely integration-side (a new helper, a bugfix, a new
38
+ model field the aggregator ignores), DO NOT bump it -- a higher floor
39
+ needlessly locks integrations out of older-but-still-capable environments.
40
+
41
+ HOW TO BUMP IT (one line + the usual version bump)
42
+ 1. Set the value below to the *released* centra-sdk version in which the
43
+ aggregator gained the support your change depends on (e.g. "0.1.45").
44
+ Use a real published version string, MAJOR.MINOR.PATCH.
45
+ 2. Bump ``version`` in ``sdk/pyproject.toml`` as usual (every PR does this).
46
+ 3. Commit. That's it -- nothing else to wire:
47
+ • ``discover-sdk-compat`` reports the new floor automatically;
48
+ • ILM's extractor persists it and gates distribution on it.
49
+
50
+ RULES OF THUMB
51
+ • Keep ``MIN_AGGREGATOR_SDK_VERSION`` <= this package's own version. You
52
+ can't require an aggregator runtime newer than the SDK that declares it.
53
+ • Only ever raise it, and only to a version that has actually shipped to
54
+ aggregators. Lowering it is almost never correct (it would claim older
55
+ aggregators can run integrations that in fact need newer support).
56
+ • When in doubt, leave it. A too-low floor lets a genuinely-incompatible
57
+ install through; a too-high floor just delays rollout to older
58
+ environments.
59
+
60
+ WORKED EXAMPLE
61
+ You add a call to an aggregator endpoint that only exists from centra-sdk
62
+ 0.1.45 onward, and you're releasing this as 0.1.52::
63
+
64
+ MIN_AGGREGATOR_SDK_VERSION = "0.1.45" # <- raise from "0.1.39"
65
+ # sdk/pyproject.toml: version = "0.1.52"
66
+
67
+ Result: ILM distributes 0.1.52-built integrations only to environments
68
+ whose aggregators run centra-sdk >= 0.1.45; older environments show
69
+ "needs Centra SDK >= 0.1.45" until their aggregators are upgraded.
70
+ ────────────────────────────────────────────────────────────────────────────
71
+ """
72
+
73
+ from importlib.metadata import PackageNotFoundError, version as _pkg_version
74
+ from typing import Optional
75
+
76
+ # Distribution name on PyPI (import name is ``centra_sdk``).
77
+ _PACKAGE_NAME = "centra-sdk"
78
+
79
+ # ===========================================================================
80
+ # The aggregator-runtime floor for integrations built with THIS release.
81
+ #
82
+ # >>> To change this, read the "HOW TO ADJUST MIN_AGGREGATOR_SDK_VERSION"
83
+ # block in this module's docstring (just above). <<<
84
+ #
85
+ # Short version: bump ONLY when this SDK needs a newer aggregator runtime; set
86
+ # it to the released centra-sdk version that added the required aggregator-side
87
+ # support; keep it <= this package's own version; otherwise leave it alone.
88
+ # ===========================================================================
89
+ # Current floor: 0.1.39 -- the aggregator's actual baseline centra-sdk runtime.
90
+ MIN_AGGREGATOR_SDK_VERSION: str = "0.1.39"
91
+
92
+
93
+ def installed_sdk_version() -> Optional[str]:
94
+ """Return the installed centra-sdk package version, or ``None``.
95
+
96
+ Resolves ``importlib.metadata.version("centra-sdk")``. When the package
97
+ metadata is not available (``PackageNotFoundError`` -- typically a source
98
+ checkout that was never installed), returns ``None`` rather than raising so
99
+ that callers can degrade gracefully.
100
+
101
+ Returns:
102
+ The installed centra-sdk version string, or ``None`` if unresolvable.
103
+ """
104
+ try:
105
+ return _pkg_version(_PACKAGE_NAME)
106
+ except PackageNotFoundError:
107
+ return None
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00
@@ -1,3 +0,0 @@
1
- # generated by fastapi-codegen:
2
- # filename: /Users/ivasylen/Code/contracts/guardicore/connector
3
- # timestamp: 2026-05-29T10:08:16+00:00