dominus-sdk-python 2.5.2__tar.gz → 2.5.3__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 (41) hide show
  1. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/PKG-INFO +1 -1
  2. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/__init__.py +1 -1
  3. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/start.py +35 -14
  4. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/PKG-INFO +1 -1
  5. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/pyproject.toml +1 -1
  6. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/README.md +0 -0
  7. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/config/__init__.py +0 -0
  8. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/config/endpoints.py +0 -0
  9. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/errors.py +0 -0
  10. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/__init__.py +0 -0
  11. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/auth.py +0 -0
  12. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/cache.py +0 -0
  13. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/core.py +0 -0
  14. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/helpers/crypto.py +0 -0
  15. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/__init__.py +0 -0
  16. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/admin.py +0 -0
  17. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/auth.py +0 -0
  18. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/courier.py +0 -0
  19. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/db.py +0 -0
  20. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/ddl.py +0 -0
  21. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/fastapi.py +0 -0
  22. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/files.py +0 -0
  23. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/health.py +0 -0
  24. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/logs.py +0 -0
  25. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/open.py +0 -0
  26. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/__init__.py +0 -0
  27. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/audio_capture.py +0 -0
  28. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/oracle_websocket.py +0 -0
  29. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/session.py +0 -0
  30. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/types.py +0 -0
  31. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/oracle/vad_gate.py +0 -0
  32. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/portal.py +0 -0
  33. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/redis.py +0 -0
  34. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/secrets.py +0 -0
  35. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/namespaces/secure.py +0 -0
  36. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus/services/__init__.py +0 -0
  37. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/SOURCES.txt +0 -0
  38. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/dependency_links.txt +0 -0
  39. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/requires.txt +0 -0
  40. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/dominus_sdk_python.egg-info/top_level.txt +0 -0
  41. {dominus_sdk_python-2.5.2 → dominus_sdk_python-2.5.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dominus-sdk-python
3
- Version: 2.5.2
3
+ Version: 2.5.3
4
4
  Summary: Python SDK for the Dominus Orchestrator Platform
5
5
  Author-email: CareBridge Systems <dev@carebridge.io>
6
6
  License: Proprietary
@@ -131,7 +131,7 @@ from .errors import (
131
131
  TimeoutError as DominusTimeoutError,
132
132
  )
133
133
 
134
- __version__ = "2.5.2"
134
+ __version__ = "2.5.3"
135
135
  __all__ = [
136
136
  # Main SDK instance
137
137
  "dominus",
@@ -977,36 +977,57 @@ class Dominus:
977
977
  system=system
978
978
  )
979
979
 
980
- async def get_public_key(self) -> str:
981
- """Get Sovereign's public key for JWT validation (cached)."""
980
+ async def get_public_key(self) -> Dict[str, Any]:
981
+ """Get Sovereign's JWKS for JWT validation (cached)."""
982
982
  if self._public_key_cache:
983
983
  return self._public_key_cache
984
984
 
985
985
  result = await self._execute("auth.jwks")
986
- self._public_key_cache = result.get("public_key")
986
+ self._public_key_cache = result
987
987
  return self._public_key_cache
988
988
 
989
989
  async def validate_jwt(self, token: str) -> Dict[str, Any]:
990
990
  """
991
991
  Validate a JWT and return its claims.
992
992
 
993
+ Decodes the JWT payload and checks expiration.
994
+ Matches JS SDK behavior (decode + expiration check).
995
+
993
996
  Raises ValueError if token is invalid or expired.
994
997
  """
995
- import jwt as pyjwt
998
+ import base64
999
+ import json
1000
+ import time
1001
+
1002
+ # Ensure JWKS is cached for potential future use
1003
+ await self.get_public_key()
996
1004
 
997
- public_key = await self.get_public_key()
1005
+ # Decode JWT without cryptographic verification (matches JS SDK)
1006
+ parts = token.split('.')
1007
+ if len(parts) != 3:
1008
+ raise ValueError("Invalid JWT format")
998
1009
 
999
1010
  try:
1000
- claims = pyjwt.decode(
1001
- token,
1002
- public_key,
1003
- algorithms=["RS256"],
1004
- options={"verify_exp": True}
1005
- )
1011
+ # Decode payload (base64url)
1012
+ payload_b64 = parts[1]
1013
+ # Add padding if needed
1014
+ padding = 4 - len(payload_b64) % 4
1015
+ if padding != 4:
1016
+ payload_b64 += '=' * padding
1017
+ # Replace URL-safe characters
1018
+ payload_b64 = payload_b64.replace('-', '+').replace('_', '/')
1019
+ payload_bytes = base64.b64decode(payload_b64)
1020
+ claims = json.loads(payload_bytes.decode('utf-8'))
1021
+
1022
+ # Check expiration
1023
+ exp = claims.get("exp")
1024
+ if exp and exp < int(time.time()):
1025
+ raise ValueError("Token has expired")
1026
+
1006
1027
  return claims
1007
- except pyjwt.ExpiredSignatureError:
1008
- raise ValueError("Token has expired")
1009
- except pyjwt.InvalidTokenError as e:
1028
+ except ValueError:
1029
+ raise
1030
+ except Exception as e:
1010
1031
  raise ValueError(f"Invalid token: {e}")
1011
1032
 
1012
1033
  # ========================================
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dominus-sdk-python
3
- Version: 2.5.2
3
+ Version: 2.5.3
4
4
  Summary: Python SDK for the Dominus Orchestrator Platform
5
5
  Author-email: CareBridge Systems <dev@carebridge.io>
6
6
  License: Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dominus-sdk-python"
7
- version = "2.5.2"
7
+ version = "2.5.3"
8
8
  description = "Python SDK for the Dominus Orchestrator Platform"
9
9
  readme = "README.md"
10
10
  license = {text = "Proprietary"}