anncsu-sdk 0.0.10.dev3__tar.gz → 0.0.10.dev4__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 (527) hide show
  1. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/PKG-INFO +1 -1
  2. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/CLI.md +33 -13
  3. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/VALIDATION.md +2 -0
  4. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdk-odonimi.md +29 -1
  5. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/odonimo.py +48 -3
  6. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/__init__.py +6 -0
  7. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/odonimo_validation.py +60 -0
  8. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/validated.py +70 -7
  9. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_odonimo.py +292 -0
  10. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/odonimi/test_odonimo_validation.py +180 -3
  11. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.devcontainer/README.md +0 -0
  12. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.devcontainer/devcontainer.json +0 -0
  13. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.devcontainer/setup.sh +0 -0
  14. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.gitattributes +0 -0
  15. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.github/workflows/README.md +0 -0
  16. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.github/workflows/ci.yml +0 -0
  17. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.github/workflows/publish.yml +0 -0
  18. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.gitignore +0 -0
  19. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.pre-commit-config.yaml +0 -0
  20. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.python-version +0 -0
  21. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/gen.lock +0 -0
  22. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/gen.yaml +0 -0
  23. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.accessi.openapi.yaml +0 -0
  24. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.coordinate.openapi.yaml +0 -0
  25. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.odonimi.openapi.yaml +0 -0
  26. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.openapi.yaml +0 -0
  27. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/workflow.lock +0 -0
  28. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.speakeasy/workflow.yaml +0 -0
  29. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/.vscode/settings.json +0 -0
  30. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/CONTRIBUTING.md +0 -0
  31. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/LICENSE +0 -0
  32. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/README.md +0 -0
  33. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/USAGE.md +0 -0
  34. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/SECURITY.md +0 -0
  35. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
  36. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
  37. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
  38. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
  39. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
  40. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
  41. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
  42. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
  43. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
  44. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
  45. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
  46. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
  47. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
  48. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
  49. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
  50. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
  51. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
  52. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
  53. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
  54. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
  55. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
  56. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
  57. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
  58. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
  59. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
  60. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
  61. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
  62. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
  63. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
  64. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
  65. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
  66. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
  67. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
  68. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
  69. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
  70. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
  71. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
  72. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
  73. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
  74. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
  75. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
  76. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
  77. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
  78. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
  79. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
  80. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
  81. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
  82. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
  83. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
  84. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
  85. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
  86. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
  87. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
  88. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
  89. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
  90. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
  91. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
  92. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
  93. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
  94. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
  95. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
  96. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
  97. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
  98. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
  99. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
  100. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
  101. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
  102. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
  103. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
  104. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
  105. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
  106. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
  107. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
  108. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
  109. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
  110. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
  111. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
  112. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
  113. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
  114. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
  115. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
  116. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
  117. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
  118. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
  119. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
  120. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
  121. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
  122. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
  123. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
  124. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
  125. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
  126. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
  127. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
  128. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
  129. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
  130. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostinternalservererror.md +0 -0
  131. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
  132. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostnotfounderror.md +0 -0
  133. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
  134. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
  135. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
  136. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
  137. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
  138. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
  139. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
  140. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
  141. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
  142. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
  143. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
  144. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostbadrequesterror.md +0 -0
  145. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostinternalservererror.md +0 -0
  146. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
  147. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostnotfounderror.md +0 -0
  148. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
  149. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/errors/serviceunavailableerror.md +0 -0
  150. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetpathparamdata.md +0 -0
  151. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
  152. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
  153. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
  154. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
  155. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
  156. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessipostdata.md +0 -0
  157. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessipostrequest.md +0 -0
  158. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessipostresponse.md +0 -0
  159. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
  160. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
  161. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
  162. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
  163. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
  164. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
  165. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiprogpostdata.md +0 -0
  166. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiprogpostrequest.md +0 -0
  167. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiprogpostresponse.md +0 -0
  168. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetpathparamdata.md +0 -0
  169. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
  170. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
  171. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
  172. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
  173. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
  174. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimipostdata.md +0 -0
  175. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimipostrequest.md +0 -0
  176. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimipostresponse.md +0 -0
  177. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
  178. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
  179. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
  180. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
  181. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
  182. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
  183. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiprogpostdata.md +0 -0
  184. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiprogpostrequest.md +0 -0
  185. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiprogpostresponse.md +0 -0
  186. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
  187. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
  188. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
  189. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
  190. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessopostrequest.md +0 -0
  191. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessopostresponse.md +0 -0
  192. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
  193. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
  194. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
  195. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
  196. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimopostrequest.md +0 -0
  197. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimopostresponse.md +0 -0
  198. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetpathparamdata.md +0 -0
  199. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetpathparamrequest.md +0 -0
  200. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetpathparamresponse.md +0 -0
  201. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetqueryparamdata.md +0 -0
  202. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
  203. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
  204. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccpostdata.md +0 -0
  205. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccpostrequest.md +0 -0
  206. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccpostresponse.md +0 -0
  207. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetpathparamdata.md +0 -0
  208. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetpathparamrequest.md +0 -0
  209. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetpathparamresponse.md +0 -0
  210. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetqueryparamdata.md +0 -0
  211. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetqueryparamrequest.md +0 -0
  212. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetqueryparamresponse.md +0 -0
  213. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareapostdata.md +0 -0
  214. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareapostrequest.md +0 -0
  215. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareapostresponse.md +0 -0
  216. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/showstatusresponse.md +0 -0
  217. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/models/utils/retryconfig.md +0 -0
  218. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdk-accessi.md +0 -0
  219. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdk-coordinate.md +0 -0
  220. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdk-pa.md +0 -0
  221. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdks/anncsu/README.md +0 -0
  222. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdks/jsonpost/README.md +0 -0
  223. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdks/pathparam/README.md +0 -0
  224. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdks/queryparam/README.md +0 -0
  225. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/sdks/status/README.md +0 -0
  226. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/docs/speakeasy.md +0 -0
  227. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/.spectral.yaml +0 -0
  228. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/README.md +0 -0
  229. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento accessi.yaml +0 -0
  230. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate massivo.yml +0 -0
  231. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate.yml +0 -0
  232. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento odonimi.yaml +0 -0
  233. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  234. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/oas/prod/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  235. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/pylintrc +0 -0
  236. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/pyproject.toml +0 -0
  237. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/scripts/create_client_assertion.py +0 -0
  238. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/scripts/post_speakeasy_generation.py +0 -0
  239. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/scripts/publish.sh +0 -0
  240. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/__init__.py +0 -0
  241. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/_version.py +0 -0
  242. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/accessi.py +0 -0
  243. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/__init__.py +0 -0
  244. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/accesso_validation.py +0 -0
  245. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/anncsuerror.py +0 -0
  246. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/apierror.py +0 -0
  247. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/no_response_error.py +0 -0
  248. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/responsevalidationerror.py +0 -0
  249. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/rispostaerrore.py +0 -0
  250. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/show_statusop.py +0 -0
  251. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/__init__.py +0 -0
  252. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/richiestaoperazione.py +0 -0
  253. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/rispostaoperazione.py +0 -0
  254. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/security.py +0 -0
  255. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/show_statusop.py +0 -0
  256. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/validated.py +0 -0
  257. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/py.typed +0 -0
  258. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/sdk.py +0 -0
  259. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/sdkconfiguration.py +0 -0
  260. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/status.py +0 -0
  261. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/__init__.py +0 -0
  262. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/app.py +0 -0
  263. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/__init__.py +0 -0
  264. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/accesso.py +0 -0
  265. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/assertion.py +0 -0
  266. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/auth.py +0 -0
  267. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/bulk.py +0 -0
  268. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/config.py +0 -0
  269. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/constants.py +0 -0
  270. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/coordinate.py +0 -0
  271. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/pa.py +0 -0
  272. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/models.py +0 -0
  273. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/__init__.py +0 -0
  274. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/auth.py +0 -0
  275. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/basesdk.py +0 -0
  276. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/config.py +0 -0
  277. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/__init__.py +0 -0
  278. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/apierror.py +0 -0
  279. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/audience_mismatch.py +0 -0
  280. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/base.py +0 -0
  281. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/digest_serialization_mismatch.py +0 -0
  282. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/no_response_error.py +0 -0
  283. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
  284. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/__init__.py +0 -0
  285. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/modi_hook.py +0 -0
  286. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/registration.py +0 -0
  287. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/sdkhooks.py +0 -0
  288. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/token_validation.py +0 -0
  289. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/types.py +0 -0
  290. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/httpclient.py +0 -0
  291. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/modi.py +0 -0
  292. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/pdnd_assertion.py +0 -0
  293. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/pdnd_token.py +0 -0
  294. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/__init__.py +0 -0
  295. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/basesdk.py +0 -0
  296. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/httpclient.py +0 -0
  297. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/protocols.py +0 -0
  298. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/types/__init__.py +0 -0
  299. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/types/basemodel.py +0 -0
  300. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/__init__.py +0 -0
  301. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/annotations.py +0 -0
  302. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/datetimes.py +0 -0
  303. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/dynamic_imports.py +0 -0
  304. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/enums.py +0 -0
  305. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/eventstreaming.py +0 -0
  306. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/forms.py +0 -0
  307. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/headers.py +0 -0
  308. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/logger.py +0 -0
  309. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/metadata.py +0 -0
  310. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/queryparams.py +0 -0
  311. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/requestbodies.py +0 -0
  312. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/retries.py +0 -0
  313. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/security.py +0 -0
  314. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/serializers.py +0 -0
  315. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/unmarshal_json_response.py +0 -0
  316. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/url.py +0 -0
  317. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/values.py +0 -0
  318. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdkconfiguration.py +0 -0
  319. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/security.py +0 -0
  320. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/session.py +0 -0
  321. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/types/__init__.py +0 -0
  322. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/utils/__init__.py +0 -0
  323. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/__init__.py +0 -0
  324. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/examples.py +0 -0
  325. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/response_validator.py +0 -0
  326. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/validators.py +0 -0
  327. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/__init__.py +0 -0
  328. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/_version.py +0 -0
  329. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/__init__.py +0 -0
  330. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/db.py +0 -0
  331. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/dryrun.py +0 -0
  332. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/executor.py +0 -0
  333. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/importer.py +0 -0
  334. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/reporter.py +0 -0
  335. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/__init__.py +0 -0
  336. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/anncsuerror.py +0 -0
  337. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/apierror.py +0 -0
  338. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/coordinate_validation.py +0 -0
  339. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/no_response_error.py +0 -0
  340. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/responsevalidationerror.py +0 -0
  341. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/risposta_validation.py +0 -0
  342. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/rispostaerrore.py +0 -0
  343. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/show_statusop.py +0 -0
  344. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/jsonpost.py +0 -0
  345. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/__init__.py +0 -0
  346. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/richiestaoperazione.py +0 -0
  347. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/rispostaoperazione.py +0 -0
  348. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/security.py +0 -0
  349. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/show_statusop.py +0 -0
  350. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/validated.py +0 -0
  351. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/py.typed +0 -0
  352. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/sdk.py +0 -0
  353. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/sdkconfiguration.py +0 -0
  354. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/status.py +0 -0
  355. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/_version.py +0 -0
  356. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/__init__.py +0 -0
  357. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/anncsuerror.py +0 -0
  358. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/apierror.py +0 -0
  359. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/no_response_error.py +0 -0
  360. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/responsevalidationerror.py +0 -0
  361. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/rispostaerrore.py +0 -0
  362. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/show_statusop.py +0 -0
  363. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/__init__.py +0 -0
  364. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/autprefettura.py +0 -0
  365. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/provvedimento.py +0 -0
  366. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/richiestaoperazione.py +0 -0
  367. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/rispostaoperazione.py +0 -0
  368. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/security.py +0 -0
  369. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/show_statusop.py +0 -0
  370. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/odonimi.py +0 -0
  371. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/py.typed +0 -0
  372. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/sdk.py +0 -0
  373. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/sdkconfiguration.py +0 -0
  374. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/status.py +0 -0
  375. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/__init__.py +0 -0
  376. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/__init__.py +0 -0
  377. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/registration.py +0 -0
  378. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/sdkhooks.py +0 -0
  379. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/types.py +0 -0
  380. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_version.py +0 -0
  381. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/__init__.py +0 -0
  382. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/anncsuerror.py +0 -0
  383. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/apierror.py +0 -0
  384. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +0 -0
  385. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +0 -0
  386. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessipostop.py +0 -0
  387. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +0 -0
  388. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +0 -0
  389. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +0 -0
  390. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +0 -0
  391. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +0 -0
  392. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimipostop.py +0 -0
  393. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +0 -0
  394. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +0 -0
  395. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +0 -0
  396. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +0 -0
  397. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +0 -0
  398. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteaccessopostop.py +0 -0
  399. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +0 -0
  400. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +0 -0
  401. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteodonimopostop.py +0 -0
  402. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/no_response_error.py +0 -0
  403. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +0 -0
  404. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +0 -0
  405. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazaccpostop.py +0 -0
  406. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazareagetpathparamop.py +0 -0
  407. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +0 -0
  408. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazareapostop.py +0 -0
  409. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
  410. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/show_statusop.py +0 -0
  411. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/jsonpost.py +0 -0
  412. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/__init__.py +0 -0
  413. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +0 -0
  414. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +0 -0
  415. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessipostop.py +0 -0
  416. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +0 -0
  417. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +0 -0
  418. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessiprogpostop.py +0 -0
  419. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +0 -0
  420. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +0 -0
  421. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimipostop.py +0 -0
  422. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +0 -0
  423. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +0 -0
  424. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimiprogpostop.py +0 -0
  425. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +0 -0
  426. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +0 -0
  427. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteaccessopostop.py +0 -0
  428. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +0 -0
  429. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +0 -0
  430. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteodonimopostop.py +0 -0
  431. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazaccgetpathparamop.py +0 -0
  432. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +0 -0
  433. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazaccpostop.py +0 -0
  434. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazareagetpathparamop.py +0 -0
  435. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazareagetqueryparamop.py +0 -0
  436. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazareapostop.py +0 -0
  437. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/show_statusop.py +0 -0
  438. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/pathparam.py +0 -0
  439. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/py.typed +0 -0
  440. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/queryparam.py +0 -0
  441. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/sdk.py +0 -0
  442. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/sdkconfiguration.py +0 -0
  443. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/status.py +0 -0
  444. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/README.md +0 -0
  445. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/accessi/__init__.py +0 -0
  446. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/accessi/test_accesso_validation.py +0 -0
  447. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/accessi/test_do_request_signature.py +0 -0
  448. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/accessi/test_imports.py +0 -0
  449. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/__init__.py +0 -0
  450. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/conftest.py +0 -0
  451. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_accesso.py +0 -0
  452. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_assertion.py +0 -0
  453. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_auth.py +0 -0
  454. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_config.py +0 -0
  455. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_coordinate.py +0 -0
  456. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_coordinate_bulk.py +0 -0
  457. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_duckdb_batch.py +0 -0
  458. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_main.py +0 -0
  459. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_pa.py +0 -0
  460. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_raw_output.py +0 -0
  461. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_token_endpoint_resolution.py +0 -0
  462. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/__init__.py +0 -0
  463. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_auth_modi_integration.py +0 -0
  464. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_cli_env_override.py +0 -0
  465. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_config.py +0 -0
  466. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_imports.py +0 -0
  467. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_modi.py +0 -0
  468. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_modi_hook.py +0 -0
  469. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_pdnd_assertion.py +0 -0
  470. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_pdnd_auth_manager.py +0 -0
  471. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_pdnd_token.py +0 -0
  472. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_security.py +0 -0
  473. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_security_basemodel.py +0 -0
  474. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_session.py +0 -0
  475. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/common/test_token_validation_hook.py +0 -0
  476. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/conftest.py +0 -0
  477. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/__init__.py +0 -0
  478. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/__init__.py +0 -0
  479. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_db.py +0 -0
  480. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_dryrun.py +0 -0
  481. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_executor.py +0 -0
  482. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_importer.py +0 -0
  483. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_integration.py +0 -0
  484. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_reporter.py +0 -0
  485. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_coordinate_validation.py +0 -0
  486. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_imports.py +0 -0
  487. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_risposta_validation.py +0 -0
  488. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_sdk_hooks_integration.py +0 -0
  489. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/__init__.py +0 -0
  490. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/__init__.py +0 -0
  491. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_jsonpost_async_httpx.py +0 -0
  492. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_jsonpost_httpx.py +0 -0
  493. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_status_async_httpx.py +0 -0
  494. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_status_httpx.py +0 -0
  495. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/__init__.py +0 -0
  496. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_jsonpost_async_httpx.py +0 -0
  497. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_jsonpost_httpx.py +0 -0
  498. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_pathparam_async_httpx.py +0 -0
  499. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_pathparam_httpx.py +0 -0
  500. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_queryparam_async_httpx.py +0 -0
  501. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_queryparam_httpx.py +0 -0
  502. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_status_httpx.py +0 -0
  503. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/test_sdk_instantiation.py +0 -0
  504. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/integration/test_security_in_requests.py +0 -0
  505. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/odonimi/__init__.py +0 -0
  506. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/odonimi/test_imports.py +0 -0
  507. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/pa/__init__.py +0 -0
  508. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/pa/test_imports.py +0 -0
  509. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/pa/test_response_field_mapping.py +0 -0
  510. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/test_post_speakeasy_generation.py +0 -0
  511. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/__init__.py +0 -0
  512. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/__init__.py +0 -0
  513. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_coordinate_operations_validation.py +0 -0
  514. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_model_factories.py +0 -0
  515. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_validators.py +0 -0
  516. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_validators_property.py +0 -0
  517. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/ADVANCED_TESTING.md +0 -0
  518. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/README.md +0 -0
  519. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/README_COMPREHENSIVE_TESTS.md +0 -0
  520. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/__init__.py +0 -0
  521. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_all_operations_validation.py +0 -0
  522. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_model_factories.py +0 -0
  523. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_model_factories_comprehensive.py +0 -0
  524. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_validators.py +0 -0
  525. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_validators_property.py +0 -0
  526. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/tests/validation/test_response_validator.py +0 -0
  527. {anncsu_sdk-0.0.10.dev3 → anncsu_sdk-0.0.10.dev4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anncsu-sdk
3
- Version: 0.0.10.dev3
3
+ Version: 0.0.10.dev4
4
4
  Summary: ANNCSU Software Development Kit for API consumption
5
5
  Author-email: Francesco Bartoli <francesco.bartoli@geobeyond.it>
6
6
  License-File: LICENSE
@@ -2192,17 +2192,17 @@ anncsu odonimo insert --codcom A062 --dug VIA \
2192
2192
  Options:
2193
2193
 
2194
2194
  - `--codcom, -c` - Codice comune (Belfiore code, e.g. `A062`) **[required]**
2195
- - `--dug` - DUG (e.g. `VIA`, `PIAZZA`, `STRADA`) **[required for I/R]**
2196
- - `--denom-delibera` - Denominazione delibera (uppercase applied server-side)
2197
- - `--denom-in-lingua-1` / `--denom-in-lingua-2` - Odonimo in lingua (per comuni bi/tri-lingua)
2198
- - `--denom-localita` - Denominazione località (uppercase applied)
2199
- - `--codice-comunale` - Codifica comunale dell'odonimo (no uppercase)
2200
- - `--provv-data` - Data del provvedimento (formato `dd/MM/yyyy`)
2195
+ - `--dug` - DUG (e.g. `VIA`, `PIAZZA`, `STRADA`; max 30 char) **[required for I/R]**
2196
+ - `--denom-delibera` - Denominazione ufficiale da delibera, **senza DUG** (e.g. `DELLE ORCHIDEE` for "VIA DELLE ORCHIDEE"; max 120 char, uppercase applied server-side)
2197
+ - `--denom-in-lingua-1` / `--denom-in-lingua-2` - Odonimo in lingua, **DUG inclusa** (per comuni bi/tri-lingua; max 150 char, uppercase applied)
2198
+ - `--denom-localita` - Denominazione località (max 151 char — OAS quirk; uppercase applied)
2199
+ - `--codice-comunale` - Codifica comunale dell'odonimo (max 30 char, no uppercase)
2200
+ - `--provv-data` - Data del provvedimento (valid calendar date, formato `dd/MM/yyyy`)
2201
2201
  - `--provv-protocollo` - Protocollo del provvedimento (max 70 char, no uppercase)
2202
- - `--provv-flag-delibera` - Flag delibera (`0`-`4`); `0` and `1` make `--provv-data` + `--provv-protocollo` required
2203
- - `--prefettura-data` - Data prefettura (required if `--prefettura-protocollo`)
2204
- - `--prefettura-protocollo` - Protocollo prefettura (required if `--prefettura-data`)
2205
- - `--data-valid-amm` - Data validità amministrativa (formato `dd/MM/yyyy`)
2202
+ - `--provv-flag-delibera` - Flag delibera, **only `0`-`4` accepted**; `0` and `1` make `--provv-data` + `--provv-protocollo` required
2203
+ - `--prefettura-data` - Data prefettura (`dd/MM/yyyy`; required if `--prefettura-protocollo`)
2204
+ - `--prefettura-protocollo` - Protocollo prefettura (max 70 char; required if `--prefettura-data`)
2205
+ - `--data-valid-amm` - Data validità amministrativa (`dd/MM/yyyy`). Must be **≤ today** for every operation (checked client-side); for R it must additionally be ≥ the previous validity date (checked server-side)
2206
2206
  - `--token-endpoint, -e` - PDND token endpoint URL
2207
2207
  - `--server-url, -s` - API server URL (auto-discovered from voucher if omitted)
2208
2208
  - `--validation/--production` - Use validation (UAT) or production environment
@@ -2211,6 +2211,8 @@ Options:
2211
2211
  - `--raw` - Print raw API response to stderr
2212
2212
  - `--dry-run` - I + S rollback (see `--dry-run` section below)
2213
2213
 
2214
+ All constraints above (maxLength, flag range, date format, future dates) are validated **client-side before any API call** via `ValidatedOdonimo` — invalid input exits with code 1 and a `Validation error:` message, without consuming PDND tokens. See [sdk-odonimi.md](sdk-odonimi.md#business-rules) for the full rule list.
2215
+
2214
2216
  JSON output:
2215
2217
 
2216
2218
  ```json
@@ -2241,10 +2243,22 @@ anncsu odonimo update --codcom A062 \
2241
2243
 
2242
2244
  Options:
2243
2245
 
2244
- - All `insert` options (except `--prognaz` is required, not assigned)
2245
- - `--prognaz, -p` - Progressivo nazionale dell'odonimo (required unless `--auto-resolve`)
2246
+ - All `insert` options (same fields, constraints and client-side validation — see the `insert` option list above)
2247
+ - `--prognaz, -p` - Progressivo nazionale dell'odonimo (max 10 char; required unless `--auto-resolve`)
2246
2248
  - `--auto-resolve` - Resolve `--prognaz` via PA from `--codcom` + `--denom` (see `--auto-resolve` section)
2247
- - `--denom` - Base64-encoded denomination used with `--auto-resolve`
2249
+ - `--denom` - Base64-encoded denomination used with `--auto-resolve` (lookup only — the **new** denomination goes in `--denom-delibera`)
2250
+
2251
+ Note: `R` is a **replace**, not a partial patch — read the current state first (`anncsu pa odonimo`) and re-pass the values you want to keep.
2252
+
2253
+ Server-side errors (HTTP 400/404/500) are rendered with the structured ANNCSU fields:
2254
+
2255
+ ```
2256
+ Errore ANNCSU (codice 23): Errore di validazione: ...
2257
+ ```
2258
+
2259
+ When an `R` with `--data-valid-amm` fails server-side, the CLI also prints a hint about the rule it cannot check client-side: *per l'aggiornamento (R), `data_valid_amm` deve essere ≥ della precedente data di validità dell'odonimo*. Non-ANNCSU error bodies (e.g. RFC 7807 from the GovWay gateway) are shown raw.
2260
+
2261
+ > **Known limitation — clearing `codice_comunale`**: `codice_comunale` is the only *nullable* field of the request schema (three states: omitted / value / explicit `null`). The CLI can omit it or set a value, but cannot send an explicit `"codice_comunale": null` — i.e. there is no way to **clear** an existing codifica comunale via `update`. If this becomes a real use case, a dedicated flag (e.g. `--clear-codice-comunale`) is the planned solution. The SDK supports it already: `Richiesta(codice_comunale=None, ...)` with the field explicitly set serializes to `null`.
2248
2262
 
2249
2263
  #### `anncsu odonimo delete`
2250
2264
 
@@ -2309,6 +2323,12 @@ Unlike `accesso --dry-run` (which operates on an existing accesso via test+resto
2309
2323
 
2310
2324
  **For `update --dry-run`**: `--prognaz` and `--auto-resolve` are ignored (a warning is printed) because the R is always applied to the fake odonimo generated by the preceding I.
2311
2325
 
2326
+ **Client-side validation in dry-run**: user data is validated via `ValidatedOdonimo` (same rules as the real commands — maxLength, flag range, date format, future dates) before being sent. For `update --dry-run` the user R payload is validated **after** the fake I has been created: on validation error the CLI prints `Validation error (user R):`, attempts an emergency S cleanup of the fake odonimo, and exits 1.
2327
+
2328
+ **Server error rendering in dry-run**: unlike the real commands (which render `Errore ANNCSU (codice N): messaggio` plus the `data_valid_amm` hint), a server rejection inside a dry-run step is captured into that step's result — e.g. `update_op.messaggio = "Update exception: <raw body>"` — so the cycle can continue with the S cleanup. Check `test_op` / `update_op` / `rollback` in the JSON output for the per-step outcome.
2329
+
2330
+ > **Tip — reproducing the `data_valid_amm` server rule safely**: the fake odonimo is created *today*, so its current validity date is the creation date. Running `update --dry-run --data-valid-amm <past date>` makes the R violate the server rule *data_valid_amm ≥ precedente* on the fictitious odonimo — a safe way to capture the real ANNCSU error code and message without touching real data.
2331
+
2312
2332
  Examples:
2313
2333
 
2314
2334
  ```bash
@@ -2,6 +2,8 @@
2
2
 
3
3
  The ANNCSU SDK implements a hybrid validation approach to ensure data quality for both API requests and responses.
4
4
 
5
+ > **Write operations (odonimi/accessi)**: the business-rule validation for the *aggiornamento* APIs lives in dedicated models — `ValidatedOdonimo` (rules I/R/S, maxLength, flag delibera 0-4, date `dd/MM/yyyy`, `data_valid_amm` non-future) and `ValidatedAccesso`. See [sdk-odonimi.md § Validazione Odonimo](sdk-odonimi.md#validazione-odonimo) for the full rule list and error classes. This document covers the *consultazione* (PA) input/response validation.
6
+
5
7
  ## Overview
6
8
 
7
9
  ### Phase 1: Input Validation (Always Enabled)
@@ -257,6 +257,28 @@ def is_success(response, tipo_operazione: str) -> bool:
257
257
 
258
258
  Una check ingenua `esito == "0"` produce un **false-negative** sulle S che vanno a buon fine — è una causa nota di errori in codice cliente.
259
259
 
260
+ ## Errori HTTP (`RispostaErrore`)
261
+
262
+ I rifiuti del server (HTTP **400** richiesta non valida, **404** odonimo non trovato, **500** errore interno) arrivano come `application/problem+json`, ma **non è RFC 7807**: il contratto ANNCSU definisce uno schema custom con tre campi (`id`, `codice`, `messaggio`). L'SDK li trasforma nell'eccezione `RispostaErrore`:
263
+
264
+ ```python
265
+ from anncsu.odonimi.errors import RispostaErrore
266
+
267
+ try:
268
+ response = sdk.anncsu.gestione_anncsu_odonimi_pdnd(richiesta=richiesta)
269
+ except RispostaErrore as e:
270
+ print(e.data.codice) # es. "23" — codice dal catalogo errori ANNCSU
271
+ print(e.data.messaggio) # es. "Errore di validazione: ..."
272
+ # str(e) è il body JSON grezzo della risposta
273
+ ```
274
+
275
+ Attenzione a due cose:
276
+
277
+ - `str(e)` (e quindi un log naive `f"errore: {e}"`) mostra il **body grezzo**, non i campi strutturati — usare sempre `e.data.codice` / `e.data.messaggio`.
278
+ - Se il body non è conforme allo schema ANNCSU (es. un RFC 7807 vero emesso dal gateway GovWay, con `type`/`title`/`detail`), `e.data.codice` e `e.data.messaggio` sono `None`: in quel caso l'unica informazione utile è `str(e)`.
279
+
280
+ Caso tipico di 400 su `R`: `data_valid_amm` inferiore alla precedente data di validità dell'odonimo — regola che il client **non può** verificare (richiede il valore storico). La CLI in questo caso mostra `Errore ANNCSU (codice N): messaggio` più una nota che spiega la regola.
281
+
260
282
  ## Validazione Odonimo
261
283
 
262
284
  L'SDK fornisce un modello `ValidatedOdonimo` con validazione delle business rules ANNCSU. Va sempre usato prima della chiamata API per intercettare errori a livello locale.
@@ -273,8 +295,11 @@ Le regole sono applicate in ordine in un singolo `@model_validator(mode="after")
273
295
  6. **Per `S`**: `dug` **vietato** — altrimenti `DugNotAllowedForDeleteError`
274
296
  7. Se `provvedimento.flag_delibera ∈ {"0","1"}`: `data` + `protocollo` obbligatori — altrimenti `FlagDeliberaMissingFieldsError`
275
297
  8. `aut_prefettura.data_pref` ↔ `protocollo_pref` mutex (entrambi o nessuno) — altrimenti `PrefetturaMutexError`
298
+ 9. `provvedimento.flag_delibera`, se valorizzato, deve essere `"0"`..`"4"` (OAS: "valori numerici da 0 a 4") — altrimenti `FlagDeliberaInvalidValueError`
299
+ 10. I campi data (`provvedimento.data`, `aut_prefettura.data_pref`, `data_valid_amm`), se valorizzati, devono essere date di calendario valide in formato **`dd/MM/yyyy`** (es. `"10/10/2023"`; rifiutati `"2023-10-10"`, `"31/02/2024"`) — altrimenti `InvalidDateFormatError`
300
+ 11. `data_valid_amm` non può essere nel futuro, per **tutte** le operazioni — altrimenti `DataValidAmmInFutureError`. L'OAS dice "minore o uguale della data corrente per inserimento e soppressione. Per aggiornamento **anche** >= della precedente": l'"anche" è additivo, quindi il vincolo ≤ data corrente vale pure per `R`
276
301
 
277
- Le regole su `data_valid_amm` (`≤` data corrente per `I/S`, `≥` precedente per `R`) sono **delegate al server** (richiedono date arithmetic e lookup storici non disponibili lato client).
302
+ La metà R-only della regola su `data_valid_amm` (`≥` della precedente) resta **delegata al server**: richiede il valore storico precedente, non disponibile lato client.
278
303
 
279
304
  ### Uso del Modello Validato
280
305
 
@@ -338,6 +363,9 @@ from anncsu.odonimi.errors.odonimo_validation import (
338
363
  OdonimoMaxLengthError, # campo eccede maxLength OAS
339
364
  FlagDeliberaMissingFieldsError, # flag_delibera 0/1 senza data+protocollo
340
365
  PrefetturaMutexError, # data_pref ↔ protocollo_pref mutex
366
+ FlagDeliberaInvalidValueError, # flag_delibera fuori range 0-4
367
+ InvalidDateFormatError, # data non valida o non dd/MM/yyyy
368
+ DataValidAmmInFutureError, # data_valid_amm nel futuro per I/S
341
369
  )
342
370
 
343
371
  # Catch specifico
@@ -48,6 +48,7 @@ from anncsu.common.modi import AuditContext, ModIConfig
48
48
  from anncsu.common.security import Security as PASecurity
49
49
  from anncsu.common.session import get_config_dir
50
50
  from anncsu.odonimi import AnncsuOdonimi
51
+ from anncsu.odonimi.errors import RispostaErrore as OdonimiRispostaErrore
51
52
  from anncsu.odonimi.models import Security
52
53
  from anncsu.odonimi.models.richiestaoperazione import (
53
54
  AutPrefettura,
@@ -1364,6 +1365,36 @@ def _build_richiesta(
1364
1365
  )
1365
1366
 
1366
1367
 
1368
+ def _render_server_error(
1369
+ e: OdonimiRispostaErrore,
1370
+ *,
1371
+ tipo_operazione: str,
1372
+ richiesta: Richiesta,
1373
+ ) -> None:
1374
+ """Render an ANNCSU ``RispostaErrore`` (HTTP 400/404/500) readably.
1375
+
1376
+ The contract's problem+json carries structured ``codice`` +
1377
+ ``messaggio``; bodies without them (e.g. RFC 7807 from the gateway)
1378
+ fall back to the raw body. For R with ``data_valid_amm`` set, the
1379
+ server-side rule that the client cannot check is surfaced as a hint.
1380
+ """
1381
+ codice = getattr(e.data, "codice", None)
1382
+ messaggio = getattr(e.data, "messaggio", None)
1383
+ if codice or messaggio:
1384
+ error_console.print(
1385
+ f"[red]Errore ANNCSU[/red] (codice {codice or '—'}): {messaggio or '—'}"
1386
+ )
1387
+ else:
1388
+ error_console.print(f"[red]Error:[/red] {e}")
1389
+
1390
+ if tipo_operazione == "R" and richiesta.data_valid_amm:
1391
+ error_console.print(
1392
+ "[yellow]Nota:[/yellow] per l'aggiornamento (R), 'data_valid_amm' "
1393
+ "deve essere maggiore o uguale alla precedente data di validità "
1394
+ "dell'odonimo (regola verificata dal server ANNCSU)."
1395
+ )
1396
+
1397
+
1367
1398
  def _execute_operation(
1368
1399
  *,
1369
1400
  tipo_operazione: str,
@@ -1395,6 +1426,9 @@ def _execute_operation(
1395
1426
 
1396
1427
  try:
1397
1428
  response = sdk.anncsu.gestione_anncsu_odonimi_pdnd(richiesta=richiesta)
1429
+ except OdonimiRispostaErrore as e:
1430
+ _render_server_error(e, tipo_operazione=tipo_operazione, richiesta=richiesta)
1431
+ raise typer.Exit(1) from None
1398
1432
  except Exception as e:
1399
1433
  error_console.print(f"[red]Error:[/red] API call failed: {e}")
1400
1434
  raise typer.Exit(1) from None
@@ -1532,7 +1566,10 @@ def insert(
1532
1566
  str | None,
1533
1567
  typer.Option(
1534
1568
  "--data-valid-amm",
1535
- help="Data di validità amministrativa (dd/MM/yyyy).",
1569
+ help=(
1570
+ "Data di validità amministrativa (dd/MM/yyyy). Non può "
1571
+ "essere nel futuro (regola ANNCSU per I)."
1572
+ ),
1536
1573
  ),
1537
1574
  ] = None,
1538
1575
  token_endpoint: Annotated[
@@ -1743,7 +1780,12 @@ def update(
1743
1780
  str | None,
1744
1781
  typer.Option(
1745
1782
  "--data-valid-amm",
1746
- help="Data di validità amministrativa (dd/MM/yyyy).",
1783
+ help=(
1784
+ "Data di validità amministrativa (dd/MM/yyyy). Non può "
1785
+ "essere nel futuro; inoltre per l'odonimo esistente deve "
1786
+ "essere >= della precedente data di validità (quest'ultima "
1787
+ "regola è verificata dal server ANNCSU)."
1788
+ ),
1747
1789
  ),
1748
1790
  ] = None,
1749
1791
  token_endpoint: Annotated[
@@ -1916,7 +1958,10 @@ def delete(
1916
1958
  str | None,
1917
1959
  typer.Option(
1918
1960
  "--data-valid-amm",
1919
- help="Data di fine validità (dd/MM/yyyy). Default: data corrente.",
1961
+ help=(
1962
+ "Data di fine validità (dd/MM/yyyy). Default: data "
1963
+ "corrente. Non può essere nel futuro (regola ANNCSU per S)."
1964
+ ),
1920
1965
  ),
1921
1966
  ] = None,
1922
1967
  token_endpoint: Annotated[
@@ -9,9 +9,12 @@ from ._version import (
9
9
  )
10
10
  from .errors.odonimo_validation import (
11
11
  CodcomRequiredError,
12
+ DataValidAmmInFutureError,
12
13
  DugNotAllowedForDeleteError,
13
14
  DugRequiredError,
15
+ FlagDeliberaInvalidValueError,
14
16
  FlagDeliberaMissingFieldsError,
17
+ InvalidDateFormatError,
15
18
  OdonimoMaxLengthError,
16
19
  OdonimoValidationError,
17
20
  PrefetturaMutexError,
@@ -35,9 +38,12 @@ __all__ = [
35
38
  "__user_agent__",
36
39
  "AnncsuOdonimi",
37
40
  "CodcomRequiredError",
41
+ "DataValidAmmInFutureError",
38
42
  "DugNotAllowedForDeleteError",
39
43
  "DugRequiredError",
44
+ "FlagDeliberaInvalidValueError",
40
45
  "FlagDeliberaMissingFieldsError",
46
+ "InvalidDateFormatError",
41
47
  "OdonimoMaxLengthError",
42
48
  "OdonimoValidationError",
43
49
  "PrefetturaMutexError",
@@ -175,6 +175,63 @@ class PrefetturaMutexError(OdonimoValidationError):
175
175
  )
176
176
 
177
177
 
178
+ @dataclass
179
+ class FlagDeliberaInvalidValueError(OdonimoValidationError):
180
+ """Raised when provvedimento.flag_delibera is not one of '0'..'4'.
181
+
182
+ Per OAS spec: "Flag della delibera (valori numerici da 0 a 4)".
183
+ """
184
+
185
+ value: str
186
+
187
+ def __str__(self) -> str:
188
+ return (
189
+ f"Il campo 'provvedimento.flag_delibera' deve essere un valore "
190
+ f"numerico da '0' a '4'. Valore fornito: {self.value!r}"
191
+ )
192
+
193
+
194
+ @dataclass
195
+ class InvalidDateFormatError(OdonimoValidationError):
196
+ """Raised when a date field is not a valid dd/MM/yyyy calendar date.
197
+
198
+ Applies to provvedimento.data, aut_prefettura.data_pref and
199
+ data_valid_amm (OAS examples: "10/10/2023", "08/10/2024").
200
+ """
201
+
202
+ field_name: str
203
+ value: str
204
+
205
+ def __str__(self) -> str:
206
+ return (
207
+ f"Il campo '{self.field_name}' deve essere una data valida nel "
208
+ f"formato dd/MM/yyyy (es. '10/10/2023'). "
209
+ f"Valore fornito: {self.value!r}"
210
+ )
211
+
212
+
213
+ @dataclass
214
+ class DataValidAmmInFutureError(OdonimoValidationError):
215
+ """Raised when data_valid_amm is in the future (any operation).
216
+
217
+ Per OAS spec: "minore o uguale della data corrente per inserimento e
218
+ soppressione. Per aggiornamento anche >= della precedente" — the
219
+ 'anche' is additive, so the <= today bound applies to R as well.
220
+ The R-only half (">= della precedente") requires the server-side
221
+ historical value and is NOT checked client-side.
222
+ """
223
+
224
+ operazione: str
225
+ value: str
226
+
227
+ def __str__(self) -> str:
228
+ return (
229
+ f"Il campo 'data_valid_amm' non puo' essere nel futuro per "
230
+ f"tipo_operazione='{self.operazione}' (deve essere minore o "
231
+ f"uguale alla data corrente). Valore fornito: {self.value!r}"
232
+ )
233
+
234
+
178
235
  __all__ = [
179
236
  "OdonimoValidationError",
180
237
  "TipoOperazioneError",
@@ -185,4 +242,7 @@ __all__ = [
185
242
  "OdonimoMaxLengthError",
186
243
  "FlagDeliberaMissingFieldsError",
187
244
  "PrefetturaMutexError",
245
+ "FlagDeliberaInvalidValueError",
246
+ "InvalidDateFormatError",
247
+ "DataValidAmmInFutureError",
188
248
  ]
@@ -22,23 +22,34 @@ Rules (derived from the OAS spec):
22
22
  7. ``aut_prefettura.data_pref`` and ``protocollo_pref`` are mutually
23
23
  required: if one is set, the other must be set too.
24
24
 
25
- Rules 8-9 (``data_valid_amm`` corrente per ``I/S``, precedente per
26
- ``R``) are delegated to server-side validation they require date
27
- arithmetic and historical lookup that the server already handles with
28
- clear errors.
25
+ 8. ``provvedimento.flag_delibera``, when set, must be one of ``"0"``
26
+ .. ``"4"`` (OAS: "valori numerici da 0 a 4").
27
+ 9. Date fields (``provvedimento.data``, ``aut_prefettura.data_pref``,
28
+ ``data_valid_amm``), when set, must be valid ``dd/MM/yyyy`` calendar
29
+ dates (OAS examples: "10/10/2023").
30
+ 10. ``data_valid_amm`` must not be in the future, for every operation
31
+ (OAS: "minore o uguale della data corrente per inserimento e
32
+ soppressione. Per aggiornamento anche >= della precedente" —
33
+ 'anche' is additive). The R-only half ("≥ della precedente") is
34
+ delegated to the server: it requires the historical value.
29
35
  """
30
36
 
31
37
  from __future__ import annotations
32
38
 
39
+ import datetime
40
+ import re
33
41
  from typing import Optional
34
42
 
35
43
  from pydantic import model_validator
36
44
 
37
45
  from anncsu.odonimi.errors.odonimo_validation import (
38
46
  CodcomRequiredError,
47
+ DataValidAmmInFutureError,
39
48
  DugNotAllowedForDeleteError,
40
49
  DugRequiredError,
50
+ FlagDeliberaInvalidValueError,
41
51
  FlagDeliberaMissingFieldsError,
52
+ InvalidDateFormatError,
42
53
  OdonimoMaxLengthError,
43
54
  PrefetturaMutexError,
44
55
  ProgrNazionaleRequiredError,
@@ -64,6 +75,11 @@ MAX_LENGTHS: dict[str, int] = {
64
75
  PROVVEDIMENTO_MAX_LENGTHS: dict[str, int] = {"protocollo": 70}
65
76
  AUT_PREFETTURA_MAX_LENGTHS: dict[str, int] = {"protocollo_pref": 70}
66
77
 
78
+ VALID_FLAG_DELIBERA = {"0", "1", "2", "3", "4"}
79
+
80
+ # Strict dd/MM/yyyy: strptime alone accepts non-zero-padded dates.
81
+ _DATE_PATTERN = re.compile(r"^\d{2}/\d{2}/\d{4}$")
82
+
67
83
 
68
84
  class ValidatedOdonimo(Richiesta):
69
85
  """Odonimo Richiesta model with ANNCSU business rule validation.
@@ -83,6 +99,12 @@ class ValidatedOdonimo(Richiesta):
83
99
  "0" or "1" but ``data`` or ``protocollo`` are missing
84
100
  PrefetturaMutexError: ``aut_prefettura.data_pref`` and
85
101
  ``protocollo_pref`` are not both set or both unset
102
+ FlagDeliberaInvalidValueError: ``provvedimento.flag_delibera``
103
+ is set but not one of "0".."4"
104
+ InvalidDateFormatError: a date field is not a valid dd/MM/yyyy
105
+ calendar date
106
+ DataValidAmmInFutureError: ``data_valid_amm`` is in the future
107
+ for I or S
86
108
  """
87
109
 
88
110
  @model_validator(mode="after")
@@ -113,13 +135,18 @@ class ValidatedOdonimo(Richiesta):
113
135
  raise DugNotAllowedForDeleteError(value=str(self.dug))
114
136
 
115
137
  # Rule 6: provvedimento.flag_delibera in {0,1} → data+protocollo required
138
+ # Rule 8: flag_delibera range; Rule 9: data format
116
139
  if self.provvedimento is not None:
117
140
  self._validate_provvedimento()
118
141
 
119
142
  # Rule 7: aut_prefettura.data_pref ↔ protocollo_pref mutex
143
+ # Rule 9: data_pref format
120
144
  if self.aut_prefettura is not None:
121
145
  self._validate_aut_prefettura()
122
146
 
147
+ # Rules 9-10: data_valid_amm format and not-in-future for I/S
148
+ self._validate_data_valid_amm(op)
149
+
123
150
  return self
124
151
 
125
152
  # ------------------------------------------------------------------
@@ -178,10 +205,26 @@ class ValidatedOdonimo(Richiesta):
178
205
  max_length=max_length,
179
206
  )
180
207
 
208
+ def _parse_date(
209
+ self, field_name: str, value: Optional[str]
210
+ ) -> Optional[datetime.date]:
211
+ """Rule 9: parse a dd/MM/yyyy date, raising on invalid format."""
212
+ if value is None:
213
+ return None
214
+ if not _DATE_PATTERN.match(value):
215
+ raise InvalidDateFormatError(field_name=field_name, value=value)
216
+ try:
217
+ return datetime.datetime.strptime(value, "%d/%m/%Y").date()
218
+ except ValueError:
219
+ raise InvalidDateFormatError(field_name=field_name, value=value) from None
220
+
181
221
  def _validate_provvedimento(self) -> None:
182
- """Rule 6: when flag_delibera is '0' or '1', data and protocollo
183
- are required."""
222
+ """Rules 6, 8, 9 on the nested provvedimento object."""
223
+ self._parse_date("provvedimento.data", self._get_value(self.provvedimento.data))
224
+
184
225
  flag = self._get_value(self.provvedimento.flag_delibera)
226
+ if flag is not None and flag not in VALID_FLAG_DELIBERA:
227
+ raise FlagDeliberaInvalidValueError(value=flag)
185
228
  if flag not in {"0", "1"}:
186
229
  return
187
230
 
@@ -197,7 +240,12 @@ class ValidatedOdonimo(Richiesta):
197
240
  )
198
241
 
199
242
  def _validate_aut_prefettura(self) -> None:
200
- """Rule 7: data_pref and protocollo_pref are mutex (both or neither)."""
243
+ """Rules 7 and 9 on the nested aut_prefettura object."""
244
+ self._parse_date(
245
+ "aut_prefettura.data_pref",
246
+ self._get_value(self.aut_prefettura.data_pref),
247
+ )
248
+
201
249
  has_data = self._get_value(self.aut_prefettura.data_pref) is not None
202
250
  has_protocollo = (
203
251
  self._get_value(self.aut_prefettura.protocollo_pref) is not None
@@ -208,5 +256,20 @@ class ValidatedOdonimo(Richiesta):
208
256
  has_protocollo_pref=has_protocollo,
209
257
  )
210
258
 
259
+ def _validate_data_valid_amm(self, op: str) -> None:
260
+ """Rules 9-10: format always; never in the future (any operation).
261
+
262
+ OAS: "minore o uguale della data corrente per inserimento e
263
+ soppressione. Per aggiornamento anche >= della precedente" —
264
+ 'anche' is additive, so the <= today bound applies to R too.
265
+ Only the '>= precedente' half is delegated to the server.
266
+ """
267
+ value = self._get_value(self.data_valid_amm)
268
+ parsed = self._parse_date("data_valid_amm", value)
269
+ if parsed is None:
270
+ return
271
+ if parsed > datetime.date.today():
272
+ raise DataValidAmmInFutureError(operazione=op, value=value)
273
+
211
274
 
212
275
  __all__ = ["ValidatedOdonimo"]