codemie-sdk-python 0.1.589__tar.gz → 0.1.591__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 (69) hide show
  1. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/__init__.py +2 -0
  4. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/client/client.py +4 -0
  5. codemie_sdk_python-0.1.591/src/codemie_sdk/services/customer_config_service.py +105 -0
  6. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/README.md +0 -0
  7. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/auth/__init__.py +0 -0
  8. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/auth/credentials.py +0 -0
  9. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/client/__init__.py +0 -0
  10. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/exceptions.py +0 -0
  11. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/__init__.py +0 -0
  12. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/activity_event.py +0 -0
  13. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/admin.py +0 -0
  14. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/analytics.py +0 -0
  15. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/assistant.py +0 -0
  16. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/categories.py +0 -0
  17. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/common.py +0 -0
  18. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/conversation.py +0 -0
  19. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/datasource.py +0 -0
  20. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/errors.py +0 -0
  21. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/file_operation.py +0 -0
  22. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/guardrails.py +0 -0
  23. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/integration.py +0 -0
  24. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/llm.py +0 -0
  25. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/mcp_config.py +0 -0
  26. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/mermaid.py +0 -0
  27. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/project.py +0 -0
  28. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/skill.py +0 -0
  29. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/task.py +0 -0
  30. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/user.py +0 -0
  31. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  32. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  33. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  34. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/vendor_runtime.py +0 -0
  35. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  36. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/workflow.py +0 -0
  37. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  38. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/workflow_state.py +0 -0
  39. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  40. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/models/workflow_transition.py +0 -0
  41. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/activity_event.py +0 -0
  42. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/admin.py +0 -0
  43. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/analytics.py +0 -0
  44. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/assistant.py +0 -0
  45. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/categories.py +0 -0
  46. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
  47. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/conversation.py +0 -0
  48. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/datasource.py +0 -0
  49. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/dynamic_config.py +0 -0
  50. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/files.py +0 -0
  51. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/integration.py +0 -0
  52. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/llm.py +0 -0
  53. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/mcp_configs.py +0 -0
  54. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/mermaid.py +0 -0
  55. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/project.py +0 -0
  56. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/skill.py +0 -0
  57. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/task.py +0 -0
  58. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/user.py +0 -0
  59. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  60. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  61. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  62. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/vendor_runtime.py +0 -0
  63. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  64. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/webhook.py +0 -0
  65. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/workflow.py +0 -0
  66. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/workflow_execution.py +0 -0
  67. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  68. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/utils/__init__.py +0 -0
  69. {codemie_sdk_python-0.1.589 → codemie_sdk_python-0.1.591}/src/codemie_sdk/utils/http.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codemie-sdk-python
3
- Version: 0.1.589
3
+ Version: 0.1.591
4
4
  Summary: CodeMie SDK for Python
5
5
  Author: Vadym Vlasenko
6
6
  Author-email: vadym_vlasenko@epam.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemie-sdk-python"
3
- version = "0.1.589"
3
+ version = "0.1.591"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = [
6
6
  "Vadym Vlasenko <vadym_vlasenko@epam.com>",
@@ -94,6 +94,7 @@ from .models.analytics import (
94
94
  AnalyticsQueryParams,
95
95
  PaginatedAnalyticsQueryParams,
96
96
  )
97
+ from .services.customer_config_service import CustomerConfigService
97
98
  from .services.vendor_assistant import VendorAssistantService
98
99
  from .services.vendor_workflow import VendorWorkflowService
99
100
  from .services.vendor_knowledgebase import VendorKnowledgeBaseService
@@ -252,6 +253,7 @@ __all__ = [
252
253
  "AnalyticsQueryParams",
253
254
  "PaginatedAnalyticsQueryParams",
254
255
  "AnalyticsService",
256
+ "CustomerConfigService",
255
257
  "MermaidDiagramRequest",
256
258
  "MermaidDiagramResponse",
257
259
  "ContentType",
@@ -28,6 +28,7 @@ from ..services.activity_event import ActivityEventService
28
28
  from ..services.codemie_guardrails import CodemieGuardrailService
29
29
  from ..services.dynamic_config import DynamicConfigService
30
30
  from ..services.mcp_configs import MCPConfigsService
31
+ from ..services.customer_config_service import CustomerConfigService
31
32
 
32
33
 
33
34
  class CodeMieClient:
@@ -169,6 +170,9 @@ class CodeMieClient:
169
170
  self.dynamic_config = DynamicConfigService(
170
171
  self._api_domain, _token_source, verify_ssl=self._verify_ssl
171
172
  )
173
+ self.customer_config = CustomerConfigService(
174
+ self._api_domain, _token_source, verify_ssl=self._verify_ssl
175
+ )
172
176
 
173
177
  @property
174
178
  def token(self) -> str:
@@ -0,0 +1,105 @@
1
+ """Customer config service implementation.
2
+
3
+ Wraps four endpoints introduced in EPMCDME-13983:
4
+ GET /v1/config/declarations — list dynamic-config declarations (admin/maintainer)
5
+ PUT /v1/config/declarations/{id} — save override settings for a component
6
+ DELETE /v1/config/declarations/{id} — reset component to YAML default (idempotent)
7
+ GET /v1/config — merged component values (anonymous)
8
+ """
9
+
10
+ from ..utils.http import ApiRequestHandler, TokenSource
11
+
12
+
13
+ class CustomerConfigService:
14
+ """Service for managing customer configuration overrides via the admin endpoint."""
15
+
16
+ def __init__(self, api_domain: str, token: TokenSource, verify_ssl: bool = True):
17
+ """Initialize the customer config service.
18
+
19
+ Args:
20
+ api_domain: Base URL for the CodeMie API
21
+ token: Authentication token source
22
+ verify_ssl: Whether to verify SSL certificates. Default: True
23
+ """
24
+ self._api = ApiRequestHandler(api_domain, token, verify_ssl)
25
+
26
+ def list_declarations(self) -> list[dict]:
27
+ """GET /v1/config/declarations — list all registered setting declarations.
28
+
29
+ Requires admin or maintainer role. Read path bypasses the TTL cache so
30
+ the response always reflects the current DB state.
31
+
32
+ Returns:
33
+ List of declaration dicts, each containing:
34
+ ``component_id``, ``label``, ``description``, ``overridden``,
35
+ ``value`` (current merged value), ``fields`` (field metadata).
36
+
37
+ Raises:
38
+ requests.HTTPError: On non-2xx response (e.g. 403 for non-admin).
39
+ """
40
+ return self._api.get(
41
+ "/v1/config/declarations",
42
+ list[dict],
43
+ wrap_response=False,
44
+ )
45
+
46
+ def get_config(self) -> list[dict]:
47
+ """GET /v1/config — merged component values (anonymous access).
48
+
49
+ Returns the merged list of all active components with their current
50
+ settings (YAML defaults merged with any dynamic overrides). The
51
+ writing pod invalidates its own cache immediately after a PUT or
52
+ DELETE, so a same-pod GET reflects the change right away (AC-20).
53
+
54
+ Returns:
55
+ List of component dicts, each with ``id`` and ``settings``.
56
+ """
57
+ return self._api.get(
58
+ "/v1/config",
59
+ list[dict],
60
+ wrap_response=False,
61
+ )
62
+
63
+ def save_setting(self, component_id: str, settings: dict) -> dict:
64
+ """PUT /v1/config/declarations/{component_id} — persist a settings override.
65
+
66
+ Validates and sanitises the payload on the server side; rejects block-level
67
+ Markdown and ``javascript:`` URLs. Audits the change to the activity log.
68
+ Invalidates the writing-pod TTL cache immediately.
69
+
70
+ Args:
71
+ component_id: Component identifier, e.g. ``"chatDisclaimer"``.
72
+ settings: Key/value map of field names to new values,
73
+ e.g. ``{"enabled": True, "text": "Notice [link](https://...)"}``.
74
+
75
+ Returns:
76
+ Response dict with ``component_id`` and ``settings`` as persisted.
77
+
78
+ Raises:
79
+ requests.HTTPError: 400 on validation failure, 403 for non-admin callers.
80
+ """
81
+ return self._api.put(
82
+ f"/v1/config/declarations/{component_id}",
83
+ dict,
84
+ json_data={"settings": settings},
85
+ wrap_response=False,
86
+ )
87
+
88
+ def reset_setting(self, component_id: str) -> None:
89
+ """DELETE /v1/config/declarations/{component_id} — reset to YAML default.
90
+
91
+ Removes the dynamic-config override row; the component reverts to its
92
+ YAML default on the next config read. Idempotent — 204 even when no
93
+ override row exists. Audits the reset to the activity log.
94
+
95
+ Args:
96
+ component_id: Component identifier, e.g. ``"chatDisclaimer"``.
97
+
98
+ Raises:
99
+ requests.HTTPError: On non-2xx / non-204 response.
100
+ """
101
+ self._api.delete(
102
+ f"/v1/config/declarations/{component_id}",
103
+ dict,
104
+ wrap_response=False,
105
+ )