anncsu-sdk 0.0.1.dev24__tar.gz → 0.0.1.dev30__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 (400) hide show
  1. anncsu_sdk-0.0.1.dev24/README.md → anncsu_sdk-0.0.1.dev30/PKG-INFO +265 -48
  2. anncsu_sdk-0.0.1.dev24/PKG-INFO → anncsu_sdk-0.0.1.dev30/README.md +249 -62
  3. anncsu_sdk-0.0.1.dev30/docs/CLI.md +422 -0
  4. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/SECURITY.md +384 -37
  5. anncsu_sdk-0.0.1.dev30/docs/speakeasy.md +73 -0
  6. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/pyproject.toml +5 -0
  7. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/scripts/create_client_assertion.py +2 -2
  8. anncsu_sdk-0.0.1.dev30/scripts/post_speakeasy_generation.py +277 -0
  9. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/__init__.py +17 -0
  10. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/app.py +80 -0
  11. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/commands/__init__.py +9 -0
  12. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/commands/assertion.py +214 -0
  13. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/commands/auth.py +361 -0
  14. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/commands/config.py +400 -0
  15. anncsu_sdk-0.0.1.dev30/src/anncsu/cli/models.py +91 -0
  16. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/__init__.py +24 -1
  17. anncsu_sdk-0.0.1.dev30/src/anncsu/common/auth.py +475 -0
  18. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/hooks/__init__.py +9 -0
  19. anncsu_sdk-0.0.1.dev30/src/anncsu/common/hooks/token_validation.py +247 -0
  20. {anncsu_sdk-0.0.1.dev24/src/anncsu/pa/_hooks → anncsu_sdk-0.0.1.dev30/src/anncsu/common/hooks}/types.py +8 -5
  21. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/pdnd_assertion.py +2 -2
  22. anncsu_sdk-0.0.1.dev30/src/anncsu/common/pdnd_token.py +505 -0
  23. anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk/__init__.py +26 -0
  24. {anncsu_sdk-0.0.1.dev24/src/anncsu/pa → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/basesdk.py +19 -9
  25. anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk/protocols.py +33 -0
  26. {anncsu_sdk-0.0.1.dev24/src/anncsu/pa → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/__init__.py +21 -12
  27. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/sdkconfiguration.py +3 -3
  28. anncsu_sdk-0.0.1.dev30/src/anncsu/common/security.py +184 -0
  29. anncsu_sdk-0.0.1.dev30/src/anncsu/common/session.py +144 -0
  30. {anncsu_sdk-0.0.1.dev24/src/anncsu/pa → anncsu_sdk-0.0.1.dev30/src/anncsu/common}/types/__init__.py +7 -4
  31. anncsu_sdk-0.0.1.dev30/src/anncsu/common/utils/__init__.py +110 -0
  32. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/_hooks/__init__.py +1 -1
  33. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/_hooks/registration.py +1 -1
  34. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/_hooks/sdkhooks.py +1 -1
  35. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +1 -1
  36. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +1 -1
  37. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoaccessipostop.py +1 -1
  38. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +1 -1
  39. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +1 -1
  40. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +1 -1
  41. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +1 -1
  42. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +1 -1
  43. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoodonimipostop.py +1 -1
  44. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +1 -1
  45. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +1 -1
  46. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +1 -1
  47. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +1 -1
  48. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +1 -1
  49. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/esisteaccessopostop.py +1 -1
  50. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +1 -1
  51. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +1 -1
  52. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/esisteodonimopostop.py +1 -1
  53. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +1 -1
  54. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +1 -1
  55. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/prognazaccpostop.py +1 -1
  56. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/prognazareagetpathparamop.py +1 -1
  57. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +1 -1
  58. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/prognazareapostop.py +1 -1
  59. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/show_statusop.py +1 -1
  60. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/jsonpost.py +4 -4
  61. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +2 -2
  62. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +2 -2
  63. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoaccessipostop.py +1 -1
  64. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +2 -2
  65. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +2 -2
  66. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoaccessiprogpostop.py +1 -1
  67. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +2 -2
  68. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +2 -2
  69. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoodonimipostop.py +1 -1
  70. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +2 -2
  71. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +2 -2
  72. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/elencoodonimiprogpostop.py +1 -1
  73. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +2 -2
  74. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +2 -2
  75. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/esisteaccessopostop.py +1 -1
  76. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +2 -2
  77. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +2 -2
  78. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/esisteodonimopostop.py +1 -1
  79. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/prognazaccgetpathparamop.py +2 -2
  80. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +2 -2
  81. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/prognazaccpostop.py +1 -1
  82. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/prognazareagetpathparamop.py +2 -2
  83. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/prognazareagetqueryparamop.py +2 -2
  84. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/prognazareapostop.py +1 -1
  85. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/show_statusop.py +1 -1
  86. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/pathparam.py +4 -4
  87. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/queryparam.py +4 -4
  88. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/sdk.py +10 -6
  89. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/sdkconfiguration.py +3 -3
  90. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/status.py +4 -4
  91. anncsu_sdk-0.0.1.dev30/tests/cli/__init__.py +3 -0
  92. anncsu_sdk-0.0.1.dev30/tests/cli/conftest.py +116 -0
  93. anncsu_sdk-0.0.1.dev30/tests/cli/test_assertion.py +428 -0
  94. anncsu_sdk-0.0.1.dev30/tests/cli/test_auth.py +621 -0
  95. anncsu_sdk-0.0.1.dev30/tests/cli/test_config.py +558 -0
  96. anncsu_sdk-0.0.1.dev30/tests/cli/test_main.py +205 -0
  97. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/common/test_cli_env_override.py +28 -6
  98. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/common/test_imports.py +98 -85
  99. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/common/test_pdnd_assertion.py +151 -76
  100. anncsu_sdk-0.0.1.dev30/tests/common/test_pdnd_auth_manager.py +820 -0
  101. anncsu_sdk-0.0.1.dev30/tests/common/test_pdnd_token.py +812 -0
  102. anncsu_sdk-0.0.1.dev30/tests/common/test_security.py +203 -0
  103. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/common/test_security_basemodel.py +3 -3
  104. anncsu_sdk-0.0.1.dev30/tests/common/test_session.py +397 -0
  105. anncsu_sdk-0.0.1.dev30/tests/common/test_token_validation_hook.py +456 -0
  106. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/pa/test_imports.py +24 -22
  107. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/uv.lock +135 -141
  108. anncsu_sdk-0.0.1.dev24/src/anncsu/common/security.py +0 -41
  109. anncsu_sdk-0.0.1.dev24/src/anncsu/common/utils/__init__.py +0 -184
  110. anncsu_sdk-0.0.1.dev24/src/anncsu/common/utils/unmarshal_json_response.py +0 -24
  111. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/types/basemodel.py +0 -39
  112. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/annotations.py +0 -55
  113. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/datetimes.py +0 -23
  114. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/enums.py +0 -85
  115. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/eventstreaming.py +0 -238
  116. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/forms.py +0 -232
  117. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/headers.py +0 -136
  118. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/logger.py +0 -27
  119. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/metadata.py +0 -118
  120. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/queryparams.py +0 -205
  121. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/requestbodies.py +0 -66
  122. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/retries.py +0 -220
  123. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/security.py +0 -174
  124. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/serializers.py +0 -249
  125. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/url.py +0 -155
  126. anncsu_sdk-0.0.1.dev24/src/anncsu/pa/utils/values.py +0 -139
  127. anncsu_sdk-0.0.1.dev24/tests/common/test_security.py +0 -292
  128. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.devcontainer/README.md +0 -0
  129. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.devcontainer/devcontainer.json +0 -0
  130. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.devcontainer/setup.sh +0 -0
  131. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.env.example +0 -0
  132. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.gitattributes +0 -0
  133. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.github/workflows/README.md +0 -0
  134. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.github/workflows/ci.yml +0 -0
  135. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.github/workflows/publish.yml +0 -0
  136. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.gitignore +0 -0
  137. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.pre-commit-config.yaml +0 -0
  138. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.python-version +0 -0
  139. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.speakeasy/gen.lock +0 -0
  140. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.speakeasy/gen.yaml +0 -0
  141. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.speakeasy/out.openapi.yaml +0 -0
  142. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.speakeasy/workflow.yaml +0 -0
  143. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/.vscode/settings.json +0 -0
  144. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/CONTRIBUTING.md +0 -0
  145. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/LICENSE +0 -0
  146. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/USAGE.md +0 -0
  147. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/VALIDATION.md +0 -0
  148. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
  149. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
  150. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
  151. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
  152. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
  153. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
  154. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
  155. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
  156. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
  157. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
  158. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
  159. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
  160. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
  161. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
  162. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
  163. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
  164. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
  165. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
  166. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
  167. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
  168. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
  169. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
  170. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
  171. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
  172. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
  173. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
  174. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
  175. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
  176. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
  177. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
  178. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
  179. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
  180. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
  181. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
  182. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
  183. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
  184. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
  185. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
  186. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
  187. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
  188. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
  189. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
  190. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
  191. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
  192. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
  193. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
  194. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
  195. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
  196. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
  197. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
  198. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
  199. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
  200. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
  201. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
  202. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
  203. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
  204. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
  205. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
  206. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
  207. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
  208. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
  209. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
  210. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
  211. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
  212. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
  213. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
  214. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
  215. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
  216. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
  217. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
  218. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
  219. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
  220. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
  221. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
  222. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
  223. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
  224. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
  225. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
  226. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
  227. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
  228. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
  229. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
  230. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
  231. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
  232. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
  233. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
  234. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
  235. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
  236. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
  237. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
  238. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
  239. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
  240. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
  241. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
  242. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
  243. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccpostinternalservererror.md +0 -0
  244. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
  245. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccpostnotfounderror.md +0 -0
  246. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
  247. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
  248. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
  249. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
  250. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
  251. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
  252. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
  253. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
  254. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
  255. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
  256. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
  257. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareapostbadrequesterror.md +0 -0
  258. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareapostinternalservererror.md +0 -0
  259. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
  260. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareapostnotfounderror.md +0 -0
  261. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
  262. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/errors/serviceunavailableerror.md +0 -0
  263. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessigetpathparamdata.md +0 -0
  264. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
  265. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
  266. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
  267. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
  268. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
  269. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessipostdata.md +0 -0
  270. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessipostrequest.md +0 -0
  271. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessipostresponse.md +0 -0
  272. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
  273. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
  274. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
  275. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
  276. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
  277. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
  278. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiprogpostdata.md +0 -0
  279. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiprogpostrequest.md +0 -0
  280. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoaccessiprogpostresponse.md +0 -0
  281. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimigetpathparamdata.md +0 -0
  282. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
  283. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
  284. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
  285. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
  286. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
  287. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimipostdata.md +0 -0
  288. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimipostrequest.md +0 -0
  289. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimipostresponse.md +0 -0
  290. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
  291. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
  292. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
  293. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
  294. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
  295. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
  296. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiprogpostdata.md +0 -0
  297. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiprogpostrequest.md +0 -0
  298. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/elencoodonimiprogpostresponse.md +0 -0
  299. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
  300. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
  301. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
  302. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
  303. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteaccessopostrequest.md +0 -0
  304. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteaccessopostresponse.md +0 -0
  305. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
  306. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
  307. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
  308. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
  309. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteodonimopostrequest.md +0 -0
  310. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/esisteodonimopostresponse.md +0 -0
  311. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccgetpathparamdata.md +0 -0
  312. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccgetpathparamrequest.md +0 -0
  313. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccgetpathparamresponse.md +0 -0
  314. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccgetqueryparamdata.md +0 -0
  315. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
  316. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
  317. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccpostdata.md +0 -0
  318. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccpostrequest.md +0 -0
  319. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazaccpostresponse.md +0 -0
  320. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareagetpathparamdata.md +0 -0
  321. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareagetpathparamrequest.md +0 -0
  322. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareagetpathparamresponse.md +0 -0
  323. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareagetqueryparamdata.md +0 -0
  324. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareagetqueryparamrequest.md +0 -0
  325. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareagetqueryparamresponse.md +0 -0
  326. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareapostdata.md +0 -0
  327. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareapostrequest.md +0 -0
  328. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/prognazareapostresponse.md +0 -0
  329. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/showstatusresponse.md +0 -0
  330. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/models/utils/retryconfig.md +0 -0
  331. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/sdks/anncsu/README.md +0 -0
  332. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/sdks/jsonpost/README.md +0 -0
  333. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/sdks/pathparam/README.md +0 -0
  334. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/sdks/queryparam/README.md +0 -0
  335. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/docs/sdks/status/README.md +0 -0
  336. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/oas/.spectral.yaml +0 -0
  337. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/oas/README.md +0 -0
  338. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/oas/dev/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  339. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/pylintrc +0 -0
  340. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/scripts/publish.sh +0 -0
  341. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/basesdk.py +0 -0
  342. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/config.py +0 -0
  343. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/errors/__init__.py +0 -0
  344. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/errors/apierror.py +0 -0
  345. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/errors/base.py +0 -0
  346. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/errors/no_response_error.py +0 -0
  347. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
  348. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/hooks/registration.py +0 -0
  349. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/hooks/sdkhooks.py +0 -0
  350. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/httpclient.py +0 -0
  351. {anncsu_sdk-0.0.1.dev24/src/anncsu/pa → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/httpclient.py +0 -0
  352. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/types/__init__.py +0 -0
  353. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/types/basemodel.py +0 -0
  354. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/annotations.py +0 -0
  355. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/datetimes.py +0 -0
  356. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/enums.py +0 -0
  357. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/eventstreaming.py +0 -0
  358. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/forms.py +0 -0
  359. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/headers.py +0 -0
  360. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/logger.py +0 -0
  361. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/metadata.py +0 -0
  362. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/queryparams.py +0 -0
  363. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/requestbodies.py +0 -0
  364. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/retries.py +0 -0
  365. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/security.py +0 -0
  366. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/serializers.py +0 -0
  367. {anncsu_sdk-0.0.1.dev24/src/anncsu/pa → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/unmarshal_json_response.py +0 -0
  368. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/url.py +0 -0
  369. {anncsu_sdk-0.0.1.dev24/src/anncsu/common → anncsu_sdk-0.0.1.dev30/src/anncsu/common/sdk}/utils/values.py +0 -0
  370. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/validation/__init__.py +0 -0
  371. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/validation/examples.py +0 -0
  372. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/validation/response_validator.py +0 -0
  373. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/common/validation/validators.py +0 -0
  374. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/__init__.py +0 -0
  375. {anncsu_sdk-0.0.1.dev24/src/anncsu/common/hooks → anncsu_sdk-0.0.1.dev30/src/anncsu/pa/_hooks}/types.py +0 -0
  376. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/_version.py +0 -0
  377. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/__init__.py +0 -0
  378. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/anncsuerror.py +0 -0
  379. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/apierror.py +0 -0
  380. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/no_response_error.py +0 -0
  381. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
  382. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/models/__init__.py +0 -0
  383. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/src/anncsu/pa/py.typed +0 -0
  384. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/README.md +0 -0
  385. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/common/__init__.py +0 -0
  386. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/conftest.py +0 -0
  387. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/integration/__init__.py +0 -0
  388. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/integration/test_sdk_instantiation.py +0 -0
  389. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/integration/test_security_in_requests.py +0 -0
  390. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/pa/__init__.py +0 -0
  391. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/ADVANCED_TESTING.md +0 -0
  392. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/README.md +0 -0
  393. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/README_COMPREHENSIVE_TESTS.md +0 -0
  394. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/__init__.py +0 -0
  395. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/test_all_operations_validation.py +0 -0
  396. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/test_model_factories.py +0 -0
  397. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/test_model_factories_comprehensive.py +0 -0
  398. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/test_response_validator.py +0 -0
  399. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/test_validators.py +0 -0
  400. {anncsu_sdk-0.0.1.dev24 → anncsu_sdk-0.0.1.dev30}/tests/validation/test_validators_property.py +0 -0
@@ -1,3 +1,19 @@
1
+ Metadata-Version: 2.4
2
+ Name: anncsu-sdk
3
+ Version: 0.0.1.dev30
4
+ Summary: ANNCSU Software Development Kit for API consumption
5
+ Author-email: Francesco Bartoli <francesco.bartoli@geobeyond.it>
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: authlib>=1.3.0
9
+ Requires-Dist: httpcore>=1.0.9
10
+ Requires-Dist: httpx>=0.28.1
11
+ Requires-Dist: pydantic-settings>=2.12.0
12
+ Requires-Dist: pydantic>=2.12.5
13
+ Requires-Dist: rich>=13.0.0
14
+ Requires-Dist: typer>=0.15.0
15
+ Description-Content-Type: text/markdown
16
+
1
17
  # anncsu-sdk
2
18
  ANNCSU Software Development Kit for API consumption
3
19
 
@@ -37,6 +53,7 @@ ANNCSU REST API: API dei servizi REST di ANNCSU su PDND
37
53
  * [Resource Management](#resource-management)
38
54
  * [Debugging](#debugging)
39
55
  * [Architecture](#architecture)
56
+ * [Command Line Interface](#command-line-interface)
40
57
  * [Development](#development)
41
58
  * [Maturity](#maturity)
42
59
  * [Contributions](#contributions)
@@ -159,86 +176,144 @@ asyncio.run(main())
159
176
 
160
177
  All ANNCSU APIs use PDND (Piattaforma Digitale Nazionale Dati) voucher-based authentication with HTTP Bearer tokens.
161
178
 
162
- ### Basic Authentication
179
+ ### Complete Authentication Flow
180
+
181
+ The SDK supports the complete PDND authentication flow:
182
+
183
+ ```
184
+ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
185
+ │ 1. Create Client │ │ 2. Exchange for │ │ 3. Use Access │
186
+ │ Assertion │────▶│ Access Token │────▶│ Token │
187
+ │ (JWT) │ │ (OAuth2) │ │ (API Calls) │
188
+ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘
189
+ ```
163
190
 
164
191
  ```python
192
+ from pathlib import Path
165
193
  from anncsu.pa import Anncsu
166
- from anncsu.common import Security
194
+ from anncsu.common import (
195
+ # Step 1: Client Assertion
196
+ ClientAssertionConfig,
197
+ create_client_assertion,
198
+ # Step 2: Token Exchange
199
+ TokenConfig,
200
+ get_access_token,
201
+ # Step 3: API Authentication
202
+ Security,
203
+ )
204
+
205
+ # Step 1: Create client assertion (JWT)
206
+ assertion_config = ClientAssertionConfig(
207
+ kid="your-key-id",
208
+ issuer="your-client-id",
209
+ subject="your-client-id",
210
+ audience="auth.uat.interop.pagopa.it/client-assertion",
211
+ purpose_id="your-purpose-id",
212
+ key_path=Path("./private_key.pem"),
213
+ )
214
+ client_assertion = create_client_assertion(assertion_config)
167
215
 
168
- # Create security configuration with your PDND voucher
169
- security = Security(bearer="your-pdnd-voucher-token")
216
+ # Step 2: Exchange for access token
217
+ token_config = TokenConfig(
218
+ client_id="your-client-id",
219
+ client_assertion=client_assertion,
220
+ token_endpoint="https://auth.uat.interop.pagopa.it/token.oauth2",
221
+ )
222
+ token_response = get_access_token(token_config)
170
223
 
171
- # Initialize SDK with security
224
+ # Step 3: Use access token for API calls
225
+ security = Security(bearer=token_response.access_token)
172
226
  sdk = Anncsu(security=security)
173
227
 
174
- # Make authenticated requests
175
228
  response = sdk.queryparam.esiste_odonimo_get_query_param(
176
229
  codcom="H501",
177
230
  denom="VklBIFJPTUE="
178
231
  )
179
232
  ```
180
233
 
181
- ### Key Features
234
+ ### Basic Authentication (with existing token)
182
235
 
183
- - **PDND Voucher**: Uses PDND (Piattaforma Digitale Nazionale Dati) authentication
184
- - **Bearer Token**: JWT format tokens in Authorization header
185
- - **Common Security**: Same `Security` class works across all ANNCSU APIs
186
- - **Type-Safe**: Full type hints with modern Python syntax
187
-
188
- ### Generating Client Assertions Programmatically
189
-
190
- The SDK includes a built-in module for generating PDND client assertions (JWT tokens) at runtime:
236
+ If you already have an access token:
191
237
 
192
238
  ```python
193
- from anncsu.common import ClientAssertionConfig, create_client_assertion
239
+ from anncsu.pa import Anncsu
240
+ from anncsu.common import Security
194
241
 
195
- # Option 1: With private key as bytes
196
- config = ClientAssertionConfig(
197
- kid="your-key-id",
198
- issuer="your-client-id",
199
- subject="your-client-id",
200
- audience="https://auth.interop.pagopa.it/token.oauth2",
201
- purpose_id="your-purpose-id",
202
- private_key=b"-----BEGIN RSA PRIVATE KEY-----\n...",
242
+ security = Security(bearer="your-access-token")
243
+ sdk = Anncsu(security=security)
244
+
245
+ response = sdk.queryparam.esiste_odonimo_get_query_param(
246
+ codcom="H501",
247
+ denom="VklBIFJPTUE="
203
248
  )
204
- token = create_client_assertion(config)
249
+ ```
205
250
 
206
- # Option 2: With private key file path
207
- from pathlib import Path
251
+ ### Token Expiration Validation
208
252
 
209
- config = ClientAssertionConfig(
210
- kid="your-key-id",
211
- issuer="your-client-id",
212
- subject="your-client-id",
213
- audience="https://auth.interop.pagopa.it/token.oauth2",
214
- purpose_id="your-purpose-id",
215
- key_path=Path("./private_key.pem"),
216
- )
217
- token = create_client_assertion(config)
253
+ The `Security` class automatically validates token expiration when initialized. If the token is expired, it raises `TokenExpiredError` instead of letting the API return a confusing 404 error:
218
254
 
219
- # Use the token with the SDK
220
- from anncsu.common import Security
255
+ ```python
256
+ from anncsu.common import Security, TokenExpiredError
257
+
258
+ try:
259
+ security = Security(bearer=token_response.access_token)
260
+ except TokenExpiredError as e:
261
+ print(f"Token expired at {e.expired_at}, current time: {e.current_time}")
262
+ # Obtain a new access token...
263
+ token_response = get_access_token(token_config)
264
+ security = Security(bearer=token_response.access_token)
265
+ ```
221
266
 
222
- security = Security(bearer=token)
223
- sdk = Anncsu(security=security)
267
+ You can also check expiration manually:
268
+
269
+ ```python
270
+ # Check if token is expired
271
+ if security.is_expired():
272
+ print("Token needs refresh!")
273
+
274
+ # Get seconds until expiration (negative if already expired)
275
+ ttl = security.time_until_expiration()
276
+ if ttl and ttl < 60:
277
+ print(f"Token expires in {ttl} seconds, consider refreshing")
278
+ ```
279
+
280
+ To skip validation (not recommended):
281
+
282
+ ```python
283
+ security = Security(bearer=expired_token, validate_expiration=False)
224
284
  ```
225
285
 
286
+ ### Key Features
287
+
288
+ - **Complete Auth Flow**: Generate assertions, exchange for tokens, authenticate API calls
289
+ - **PDND Voucher**: Full PDND (Piattaforma Digitale Nazionale Dati) authentication support
290
+ - **Bearer Token**: JWT format tokens in Authorization header
291
+ - **Sync & Async**: Both `get_access_token` and `get_access_token_async` available
292
+ - **Error Handling**: Dedicated exceptions for token errors (`TokenRequestError`, `TokenResponseError`)
293
+ - **Type-Safe**: Full type hints with modern Python syntax
294
+
226
295
  ### Loading Configuration from Environment Variables
227
296
 
228
297
  The SDK supports loading configuration from environment variables or a `.env` file:
229
298
 
230
299
  ```python
231
300
  from anncsu.common.config import ClientAssertionSettings
232
- from anncsu.common import create_client_assertion, Security
301
+ from anncsu.common import create_client_assertion, TokenConfig, get_access_token, Security
233
302
  from anncsu.pa import Anncsu
234
303
 
235
304
  # Automatically loads from environment variables or .env file
236
305
  settings = ClientAssertionSettings()
237
- token = create_client_assertion(settings.to_config())
306
+ client_assertion = create_client_assertion(settings.to_config())
307
+
308
+ # Exchange for access token
309
+ token_response = get_access_token(TokenConfig(
310
+ client_id=settings.issuer,
311
+ client_assertion=client_assertion,
312
+ token_endpoint="https://auth.uat.interop.pagopa.it/token.oauth2",
313
+ ))
238
314
 
239
315
  # Use with SDK
240
- security = Security(bearer=token)
241
- sdk = Anncsu(security=security)
316
+ sdk = Anncsu(security=Security(bearer=token_response.access_token))
242
317
  ```
243
318
 
244
319
  #### Required Environment Variables (prefix: `PDND_`)
@@ -248,7 +323,7 @@ sdk = Anncsu(security=security)
248
323
  | `PDND_KID` | Key ID (kid) header parameter |
249
324
  | `PDND_ISSUER` | Issuer claim - your client_id |
250
325
  | `PDND_SUBJECT` | Subject claim - your client_id |
251
- | `PDND_AUDIENCE` | Audience claim - PDND token endpoint |
326
+ | `PDND_AUDIENCE` | Audience claim - must end with `/client-assertion` |
252
327
  | `PDND_PURPOSE_ID` | Purpose ID for the request |
253
328
  | `PDND_PRIVATE_KEY` | Private key content (or use `PDND_KEY_PATH`) |
254
329
  | `PDND_KEY_PATH` | Path to private key file (or use `PDND_PRIVATE_KEY`) |
@@ -259,7 +334,7 @@ sdk = Anncsu(security=security)
259
334
  PDND_KID=my-key-id
260
335
  PDND_ISSUER=my-client-id
261
336
  PDND_SUBJECT=my-client-id
262
- PDND_AUDIENCE=https://auth.interop.pagopa.it/token.oauth2
337
+ PDND_AUDIENCE=auth.uat.interop.pagopa.it/client-assertion
263
338
  PDND_PURPOSE_ID=my-purpose-id
264
339
  PDND_KEY_PATH=./private_key.pem
265
340
  ```
@@ -267,10 +342,10 @@ PDND_KEY_PATH=./private_key.pem
267
342
  ### Documentation
268
343
 
269
344
  For comprehensive security documentation including:
270
- - PDND voucher format and JWT structure
345
+ - Complete authentication flow (3 steps)
346
+ - Token exchange parameters and error handling
271
347
  - Client assertion generation
272
348
  - Token refresh strategies
273
- - Error handling (401/403)
274
349
  - Best practices and security checklist
275
350
  - Testing with security
276
351
 
@@ -564,6 +639,119 @@ with Anncsu(
564
639
  print(res)
565
640
 
566
641
  ```
642
+
643
+ ### UAT Environment Configuration
644
+
645
+ When working with the UAT (User Acceptance Testing) environment, you may need to configure a different server URL and handle SSL certificate issues.
646
+
647
+ #### Basic UAT Configuration
648
+
649
+ ```python
650
+ from anncsu.pa import Anncsu
651
+ from anncsu.common import Security
652
+
653
+ sdk = Anncsu(
654
+ security=Security(bearer_auth=token_response.access_token),
655
+ server_url="https://modipa-uat.agenziaentrate.gov.it/govway/rest/in/AgenziaEntrate-PDND/anncsu-consultazione/v1",
656
+ )
657
+ ```
658
+
659
+ #### Disabling SSL Verification (UAT Only)
660
+
661
+ The UAT environment may use certificates that are not trusted by your system's certificate store. To bypass SSL verification **for testing purposes only**:
662
+
663
+ ```python
664
+ import httpx
665
+ from anncsu.pa import Anncsu
666
+ from anncsu.common import Security
667
+
668
+ # Create HTTP client with SSL verification disabled
669
+ client = httpx.Client(verify=False)
670
+
671
+ sdk = Anncsu(
672
+ security=Security(bearer_auth=token_response.access_token),
673
+ server_url="https://modipa-uat.agenziaentrate.gov.it/govway/rest/in/AgenziaEntrate-PDND/anncsu-consultazione/v1",
674
+ client=client,
675
+ )
676
+
677
+ # Make API calls
678
+ response = sdk.queryparam.esiste_odonimo_get_query_param(
679
+ codcom="H501",
680
+ denom="VklBIFJPTUE="
681
+ )
682
+ ```
683
+
684
+ For async operations, also configure the async client:
685
+
686
+ ```python
687
+ import httpx
688
+ from anncsu.pa import Anncsu
689
+ from anncsu.common import Security
690
+
691
+ client = httpx.Client(verify=False)
692
+ async_client = httpx.AsyncClient(verify=False)
693
+
694
+ sdk = Anncsu(
695
+ security=Security(bearer_auth=token_response.access_token),
696
+ server_url="https://modipa-uat.agenziaentrate.gov.it/govway/rest/in/AgenziaEntrate-PDND/anncsu-consultazione/v1",
697
+ client=client,
698
+ async_client=async_client,
699
+ )
700
+ ```
701
+
702
+ > **Warning**: Never disable SSL verification in production! This should only be used for UAT/testing environments where the server uses self-signed or untrusted certificates.
703
+
704
+ #### Complete UAT Example
705
+
706
+ Here's a complete example for UAT environment with PDND authentication:
707
+
708
+ ```python
709
+ import httpx
710
+ from pathlib import Path
711
+ from anncsu.pa import Anncsu
712
+ from anncsu.common import (
713
+ ClientAssertionConfig,
714
+ create_client_assertion,
715
+ TokenConfig,
716
+ get_access_token,
717
+ Security,
718
+ )
719
+
720
+ # Step 1: Create client assertion for UAT
721
+ assertion_config = ClientAssertionConfig(
722
+ kid="your-key-id",
723
+ issuer="your-client-id",
724
+ subject="your-client-id",
725
+ audience="auth.uat.interop.pagopa.it/client-assertion", # UAT audience
726
+ purpose_id="your-purpose-id",
727
+ key_path=Path("./private_key.pem"),
728
+ )
729
+ client_assertion = create_client_assertion(assertion_config)
730
+
731
+ # Step 2: Exchange for access token (UAT token endpoint)
732
+ token_config = TokenConfig(
733
+ client_id="your-client-id",
734
+ client_assertion=client_assertion,
735
+ token_endpoint="https://auth.uat.interop.pagopa.it/token.oauth2", # UAT endpoint
736
+ )
737
+ token_response = get_access_token(token_config)
738
+
739
+ # Step 3: Create SDK with UAT configuration
740
+ client = httpx.Client(verify=False) # Only for UAT!
741
+
742
+ sdk = Anncsu(
743
+ security=Security(bearer_auth=token_response.access_token),
744
+ server_url="https://modipa-uat.agenziaentrate.gov.it/govway/rest/in/AgenziaEntrate-PDND/anncsu-consultazione/v1",
745
+ client=client,
746
+ )
747
+
748
+ # Step 4: Make API calls
749
+ response = sdk.queryparam.esiste_odonimo_get_query_param(
750
+ codcom="H501",
751
+ denom="VklBIFJPTUE="
752
+ )
753
+ print(response)
754
+ ```
567
755
  <!-- End Server Selection [server] -->
568
756
 
569
757
  <!-- Start Custom HTTP Client [http-client] -->
@@ -737,6 +925,35 @@ This architecture allows adding new ANNCSU API specifications (e.g., aggiornamen
737
925
  For more details, see [Refactoring Documentation](./docs/refactoring/REFACTORING_SUMMARY.md).
738
926
  <!-- End Architecture [architecture] -->
739
927
 
928
+ <!-- Start Command Line Interface [cli] -->
929
+ ## Command Line Interface
930
+
931
+ The SDK includes a command-line interface (`anncsu`) for managing PDND authentication and performing common operations without writing code.
932
+
933
+ ### Quick Start
934
+
935
+ ```bash
936
+ # Configure PDND credentials
937
+ anncsu config set --kid YOUR_KEY_ID --issuer YOUR_CLIENT_ID
938
+
939
+ # Login and obtain access token
940
+ anncsu auth login
941
+
942
+ # Check authentication status
943
+ anncsu auth status
944
+ ```
945
+
946
+ ### Key Features
947
+
948
+ - **Authentication Management**: Generate client assertions, obtain and refresh access tokens
949
+ - **Configuration**: Manage PDND credentials via CLI or environment variables
950
+ - **Standalone Utilities**: Create assertions independently for integration with other tools
951
+
952
+ ### Documentation
953
+
954
+ For complete CLI documentation including all commands, options, and examples, see **[docs/CLI.md](docs/CLI.md)**.
955
+ <!-- End Command Line Interface [cli] -->
956
+
740
957
  # Development
741
958
 
742
959
  ## Maturity