elements-api 2025.11.4.dev0__tar.gz → 2025.11.5__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 (159) hide show
  1. {elements_api-2025.11.4.dev0/src/py/elements_api.egg-info → elements_api-2025.11.5}/PKG-INFO +1 -1
  2. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/elements_base_api.py +12 -12
  3. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5/src/py/elements_api.egg-info}/PKG-INFO +1 -1
  4. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/LICENSE +0 -0
  5. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/README.md +0 -0
  6. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/pyproject.toml +0 -0
  7. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/setup.cfg +0 -0
  8. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/setup.py +0 -0
  9. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/__init__.py +0 -0
  10. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/async_client.py +0 -0
  11. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/async_interceptors.py +0 -0
  12. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/__init__.py +0 -0
  13. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_computation_execution_pb2.py +0 -0
  14. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_computation_execution_pb2.pyi +0 -0
  15. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_computation_pb2.py +0 -0
  16. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_computation_pb2.pyi +0 -0
  17. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_config_pb2.py +0 -0
  18. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_config_pb2.pyi +0 -0
  19. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_manifest_pb2.py +0 -0
  20. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_manifest_pb2.pyi +0 -0
  21. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_pb2.py +0 -0
  22. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_pb2.pyi +0 -0
  23. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_version_pb2.py +0 -0
  24. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/algorithm_version_pb2.pyi +0 -0
  25. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_computation_pb2.py +0 -0
  26. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_computation_pb2.pyi +0 -0
  27. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_config_pb2.py +0 -0
  28. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_config_pb2.pyi +0 -0
  29. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_pb2.py +0 -0
  30. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_pb2.pyi +0 -0
  31. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_version_pb2.py +0 -0
  32. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/analysis_version_pb2.pyi +0 -0
  33. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_catalog_pb2.py +0 -0
  34. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_catalog_pb2.pyi +0 -0
  35. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_collection_pb2.py +0 -0
  36. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_collection_pb2.pyi +0 -0
  37. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_export_pb2.py +0 -0
  38. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_export_pb2.pyi +0 -0
  39. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_pb2.py +0 -0
  40. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_pb2.pyi +0 -0
  41. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_transaction_pb2.py +0 -0
  42. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_transaction_pb2.pyi +0 -0
  43. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_version_pb2.py +0 -0
  44. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/aoi_version_pb2.pyi +0 -0
  45. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/common_models_pb2.py +0 -0
  46. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/common_models_pb2.pyi +0 -0
  47. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/credit_pb2.py +0 -0
  48. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/credit_pb2.pyi +0 -0
  49. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/data_source_pb2.py +0 -0
  50. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/data_source_pb2.pyi +0 -0
  51. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/data_tracking_pb2.py +0 -0
  52. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/data_tracking_pb2.pyi +0 -0
  53. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/data_type_pb2.py +0 -0
  54. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/data_type_pb2.pyi +0 -0
  55. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/filter_pb2.py +0 -0
  56. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/filter_pb2.pyi +0 -0
  57. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/forgot_password_pb2.py +0 -0
  58. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/forgot_password_pb2.pyi +0 -0
  59. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/notification_pb2.py +0 -0
  60. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/notification_pb2.pyi +0 -0
  61. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/order_pb2.py +0 -0
  62. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/order_pb2.pyi +0 -0
  63. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/order_recommendation_pb2.py +0 -0
  64. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/order_recommendation_pb2.pyi +0 -0
  65. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/permission_pb2.py +0 -0
  66. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/permission_pb2.pyi +0 -0
  67. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_analysis_config_pb2.py +0 -0
  68. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_analysis_config_pb2.pyi +0 -0
  69. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_aoi_pb2.py +0 -0
  70. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_aoi_pb2.pyi +0 -0
  71. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_collaborator_pb2.py +0 -0
  72. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_collaborator_pb2.pyi +0 -0
  73. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_filter_pb2.py +0 -0
  74. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_filter_pb2.pyi +0 -0
  75. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_group_pb2.py +0 -0
  76. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_group_pb2.pyi +0 -0
  77. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_pb2.py +0 -0
  78. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_pb2.pyi +0 -0
  79. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_result_pb2.py +0 -0
  80. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/project_result_pb2.pyi +0 -0
  81. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/provider_quotas_pb2.py +0 -0
  82. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/provider_quotas_pb2.pyi +0 -0
  83. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/resource_pb2.py +0 -0
  84. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/resource_pb2.pyi +0 -0
  85. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/result_pb2.py +0 -0
  86. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/result_pb2.pyi +0 -0
  87. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/s3_pb2.py +0 -0
  88. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/s3_pb2.pyi +0 -0
  89. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/subject_pb2.py +0 -0
  90. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/subject_pb2.pyi +0 -0
  91. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/system_pb2.py +0 -0
  92. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/system_pb2.pyi +0 -0
  93. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/tasking_order_pb2.py +0 -0
  94. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/tasking_order_pb2.pyi +0 -0
  95. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/tile_pb2.py +0 -0
  96. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/tile_pb2.pyi +0 -0
  97. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/toi_pb2.py +0 -0
  98. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/toi_pb2.pyi +0 -0
  99. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/token_pb2.py +0 -0
  100. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/token_pb2.pyi +0 -0
  101. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/user_collection_pb2.py +0 -0
  102. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/user_collection_pb2.pyi +0 -0
  103. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/user_pb2.py +0 -0
  104. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/user_pb2.pyi +0 -0
  105. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/visualization_pb2.py +0 -0
  106. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/models/visualization_pb2.pyi +0 -0
  107. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/__init__.py +0 -0
  108. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/algorithm_computation_execution_pb2_grpc.py +0 -0
  109. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/algorithm_computation_pb2_grpc.py +0 -0
  110. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/algorithm_config_pb2_grpc.py +0 -0
  111. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/algorithm_manifest_pb2_grpc.py +0 -0
  112. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/algorithm_pb2_grpc.py +0 -0
  113. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/algorithm_version_pb2_grpc.py +0 -0
  114. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/analysis_computation_pb2_grpc.py +0 -0
  115. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/analysis_config_pb2_grpc.py +0 -0
  116. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/analysis_pb2_grpc.py +0 -0
  117. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/analysis_version_pb2_grpc.py +0 -0
  118. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/aoi_catalog_pb2_grpc.py +0 -0
  119. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/aoi_collection_pb2_grpc.py +0 -0
  120. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/aoi_export_pb2_grpc.py +0 -0
  121. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/aoi_pb2_grpc.py +0 -0
  122. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/aoi_transaction_pb2_grpc.py +0 -0
  123. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/aoi_version_pb2_grpc.py +0 -0
  124. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/common_models_pb2_grpc.py +0 -0
  125. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/credit_pb2_grpc.py +0 -0
  126. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/data_source_pb2_grpc.py +0 -0
  127. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/data_tracking_pb2_grpc.py +0 -0
  128. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/data_type_pb2_grpc.py +0 -0
  129. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/filter_pb2_grpc.py +0 -0
  130. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/forgot_password_pb2_grpc.py +0 -0
  131. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/notification_pb2_grpc.py +0 -0
  132. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/order_pb2_grpc.py +0 -0
  133. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/order_recommendation_pb2_grpc.py +0 -0
  134. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/permission_pb2_grpc.py +0 -0
  135. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_analysis_config_pb2_grpc.py +0 -0
  136. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_aoi_pb2_grpc.py +0 -0
  137. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_collaborator_pb2_grpc.py +0 -0
  138. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_filter_pb2_grpc.py +0 -0
  139. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_group_pb2_grpc.py +0 -0
  140. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_pb2_grpc.py +0 -0
  141. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/project_result_pb2_grpc.py +0 -0
  142. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/provider_quotas_pb2_grpc.py +0 -0
  143. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/resource_pb2_grpc.py +0 -0
  144. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/result_pb2_grpc.py +0 -0
  145. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/s3_pb2_grpc.py +0 -0
  146. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/subject_pb2_grpc.py +0 -0
  147. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/system_pb2_grpc.py +0 -0
  148. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/tasking_order_pb2_grpc.py +0 -0
  149. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/tile_pb2_grpc.py +0 -0
  150. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/toi_pb2_grpc.py +0 -0
  151. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/token_pb2_grpc.py +0 -0
  152. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/user_collection_pb2_grpc.py +0 -0
  153. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/user_pb2_grpc.py +0 -0
  154. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/stubs/visualization_pb2_grpc.py +0 -0
  155. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api/sync_client.py +0 -0
  156. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api.egg-info/SOURCES.txt +0 -0
  157. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api.egg-info/dependency_links.txt +0 -0
  158. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api.egg-info/requires.txt +0 -0
  159. {elements_api-2025.11.4.dev0 → elements_api-2025.11.5}/src/py/elements_api.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: elements-api
3
- Version: 2025.11.4.dev0
3
+ Version: 2025.11.5
4
4
  Summary: Elements API Client
5
5
  License-File: LICENSE
6
6
  Requires-Dist: grpcio
@@ -31,16 +31,21 @@ def json_from_jwt(jwt_token: str) -> dict[str, object]:
31
31
  return {}
32
32
 
33
33
 
34
- def is_token_expiring(jwt_token_str, within_secs=300) -> bool:
35
- claims = json_from_jwt(jwt_token_str)
34
+ def is_token_expiring(jwt_token: str, within_secs=300) -> bool:
35
+ claims = json_from_jwt(jwt_token)
36
36
  return claims.get('exp') < time.time() + within_secs
37
37
 
38
38
 
39
- def is_offline_token(jwt_token_str) -> bool:
40
- claims = json_from_jwt(jwt_token_str)
39
+ def is_offline_token(jwt_token: str) -> bool:
40
+ claims = json_from_jwt(jwt_token)
41
41
  return claims.get('typ') == 'Offline'
42
42
 
43
43
 
44
+ def get_token_issuing_client(jwt_token: str):
45
+ claims = json_from_jwt(jwt_token)
46
+ return claims.get('azp')
47
+
48
+
44
49
  def check_access_token(func) -> bool:
45
50
  # decorator
46
51
  @wraps(func)
@@ -62,10 +67,8 @@ class ElementsBaseApi(ABC):
62
67
  self._root_certificates_file = root_certificates_file
63
68
  self._channel = None
64
69
  self.api_token: Optional[str] = os.environ.get(API_TOKEN, "").strip() if api_token is None else api_token.strip()
65
-
66
70
  # check if this is an offline token, which is a refresh token, and obtain access tokens from it periodically
67
- self.is_offline_token: bool = is_offline_token(self.api_token)
68
- self.access_token: Optional[str] = self.api_token if not is_offline_token else None
71
+ self.access_token: Optional[str] = self.api_token if not is_offline_token(self.api_token) else None
69
72
  self.access_token_expiration_threshold = int(os.getenv('ACCESS_TOKEN_EXPIRATION_THRESHOLD', '300'))
70
73
  # (token will be renewed when it has less than this threshhold before expiry)
71
74
  self.options = [('grpc.max_send_message_length', -1),
@@ -158,7 +161,6 @@ class ElementsBaseApi(ABC):
158
161
  if self.api_token and not is_offline_token(self.api_token):
159
162
  return False # in which case it is an access token, and it was not refreshed
160
163
  # check expiration on the access_token
161
-
162
164
  if self.access_token and not is_token_expiring(
163
165
  self.access_token,
164
166
  within_secs=self.access_token_expiration_threshold
@@ -174,8 +176,8 @@ class ElementsBaseApi(ABC):
174
176
  f'{oidc_base_url}/realms/{oidc_realm}/protocol/openid-connect/token')
175
177
 
176
178
  # note: api token is an offline token, which is a special refresh token.
177
- oidc_client_id = os.getenv('OIDC_CLIENT_ID', 'login-ui')
178
- oidc_client_secret = os.getenv('OIDC_CLIENT_SECRET')
179
+ oidc_client_id = get_token_issuing_client(self.api_token)
180
+ # there will be no secret since typically a login client issues this token
179
181
 
180
182
  request_json = {
181
183
  'refresh_token': self.api_token,
@@ -183,8 +185,6 @@ class ElementsBaseApi(ABC):
183
185
  'grant_type': 'refresh_token',
184
186
  'scope': 'openid offline_access'
185
187
  }
186
- if oidc_client_secret:
187
- request_json['client_secret'] = oidc_client_secret
188
188
 
189
189
  response = requests.post(
190
190
  oidc_token_endpoint,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: elements-api
3
- Version: 2025.11.4.dev0
3
+ Version: 2025.11.5
4
4
  Summary: Elements API Client
5
5
  License-File: LICENSE
6
6
  Requires-Dist: grpcio