anncsu-sdk 0.0.10.dev2__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.dev2 → anncsu_sdk-0.0.10.dev4}/PKG-INFO +1 -1
  2. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/CLI.md +44 -16
  3. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/VALIDATION.md +2 -0
  4. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdk-odonimi.md +29 -1
  5. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdk-pa.md +22 -2
  6. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/odonimo.py +48 -3
  7. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/pa.py +94 -25
  8. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/__init__.py +6 -0
  9. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/odonimo_validation.py +60 -0
  10. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/validated.py +70 -7
  11. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_odonimo.py +292 -0
  12. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_pa.py +72 -0
  13. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/odonimi/test_odonimo_validation.py +180 -3
  14. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.devcontainer/README.md +0 -0
  15. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.devcontainer/devcontainer.json +0 -0
  16. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.devcontainer/setup.sh +0 -0
  17. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.gitattributes +0 -0
  18. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.github/workflows/README.md +0 -0
  19. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.github/workflows/ci.yml +0 -0
  20. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.github/workflows/publish.yml +0 -0
  21. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.gitignore +0 -0
  22. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.pre-commit-config.yaml +0 -0
  23. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.python-version +0 -0
  24. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/gen.lock +0 -0
  25. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/gen.yaml +0 -0
  26. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.accessi.openapi.yaml +0 -0
  27. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.coordinate.openapi.yaml +0 -0
  28. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.odonimi.openapi.yaml +0 -0
  29. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/out.openapi.yaml +0 -0
  30. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/workflow.lock +0 -0
  31. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.speakeasy/workflow.yaml +0 -0
  32. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/.vscode/settings.json +0 -0
  33. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/CONTRIBUTING.md +0 -0
  34. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/LICENSE +0 -0
  35. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/README.md +0 -0
  36. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/USAGE.md +0 -0
  37. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/SECURITY.md +0 -0
  38. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparambadrequesterror.md +0 -0
  39. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparaminternalservererror.md +0 -0
  40. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparammethodnotallowederror.md +0 -0
  41. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparamnotfounderror.md +0 -0
  42. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetpathparamunprocessableentityerror.md +0 -0
  43. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparambadrequesterror.md +0 -0
  44. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparaminternalservererror.md +0 -0
  45. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparammethodnotallowederror.md +0 -0
  46. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparamnotfounderror.md +0 -0
  47. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessigetqueryparamunprocessableentityerror.md +0 -0
  48. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostbadrequesterror.md +0 -0
  49. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostinternalservererror.md +0 -0
  50. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostmethodnotallowederror.md +0 -0
  51. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostnotfounderror.md +0 -0
  52. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessipostunprocessableentityerror.md +0 -0
  53. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparambadrequesterror.md +0 -0
  54. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparaminternalservererror.md +0 -0
  55. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparammethodnotallowederror.md +0 -0
  56. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparamnotfounderror.md +0 -0
  57. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetpathparamunprocessableentityerror.md +0 -0
  58. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparambadrequesterror.md +0 -0
  59. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparaminternalservererror.md +0 -0
  60. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparammethodnotallowederror.md +0 -0
  61. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparamnotfounderror.md +0 -0
  62. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiproggetqueryparamunprocessableentityerror.md +0 -0
  63. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostbadrequesterror.md +0 -0
  64. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostinternalservererror.md +0 -0
  65. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostmethodnotallowederror.md +0 -0
  66. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostnotfounderror.md +0 -0
  67. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoaccessiprogpostunprocessableentityerror.md +0 -0
  68. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparambadrequesterror.md +0 -0
  69. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparaminternalservererror.md +0 -0
  70. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparammethodnotallowederror.md +0 -0
  71. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparamnotfounderror.md +0 -0
  72. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetpathparamunprocessableentityerror.md +0 -0
  73. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparambadrequesterror.md +0 -0
  74. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparaminternalservererror.md +0 -0
  75. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparammethodnotallowederror.md +0 -0
  76. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparamnotfounderror.md +0 -0
  77. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimigetqueryparamunprocessableentityerror.md +0 -0
  78. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostbadrequesterror.md +0 -0
  79. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostinternalservererror.md +0 -0
  80. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostmethodnotallowederror.md +0 -0
  81. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostnotfounderror.md +0 -0
  82. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimipostunprocessableentityerror.md +0 -0
  83. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparambadrequesterror.md +0 -0
  84. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparaminternalservererror.md +0 -0
  85. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparammethodnotallowederror.md +0 -0
  86. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparamnotfounderror.md +0 -0
  87. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetpathparamunprocessableentityerror.md +0 -0
  88. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparambadrequesterror.md +0 -0
  89. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparaminternalservererror.md +0 -0
  90. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparammethodnotallowederror.md +0 -0
  91. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparamnotfounderror.md +0 -0
  92. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiproggetqueryparamunprocessableentityerror.md +0 -0
  93. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostbadrequesterror.md +0 -0
  94. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostinternalservererror.md +0 -0
  95. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostmethodnotallowederror.md +0 -0
  96. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostnotfounderror.md +0 -0
  97. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/elencoodonimiprogpostunprocessableentityerror.md +0 -0
  98. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparambadrequesterror.md +0 -0
  99. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparaminternalservererror.md +0 -0
  100. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparammethodnotallowederror.md +0 -0
  101. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetpathparamunprocessableentityerror.md +0 -0
  102. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparambadrequesterror.md +0 -0
  103. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparaminternalservererror.md +0 -0
  104. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparammethodnotallowederror.md +0 -0
  105. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessogetqueryparamunprocessableentityerror.md +0 -0
  106. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostbadrequesterror.md +0 -0
  107. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostinternalservererror.md +0 -0
  108. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostmethodnotallowederror.md +0 -0
  109. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteaccessopostunprocessableentityerror.md +0 -0
  110. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparambadrequesterror.md +0 -0
  111. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparaminternalservererror.md +0 -0
  112. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparammethodnotallowederror.md +0 -0
  113. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetpathparamunprocessableentityerror.md +0 -0
  114. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparambadrequesterror.md +0 -0
  115. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparaminternalservererror.md +0 -0
  116. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparammethodnotallowederror.md +0 -0
  117. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimogetqueryparamunprocessableentityerror.md +0 -0
  118. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostbadrequesterror.md +0 -0
  119. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostinternalservererror.md +0 -0
  120. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostmethodnotallowederror.md +0 -0
  121. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/esisteodonimopostunprocessableentityerror.md +0 -0
  122. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparambadrequesterror.md +0 -0
  123. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparaminternalservererror.md +0 -0
  124. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparammethodnotallowederror.md +0 -0
  125. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparamnotfounderror.md +0 -0
  126. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetpathparamunprocessableentityerror.md +0 -0
  127. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparambadrequesterror.md +0 -0
  128. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparaminternalservererror.md +0 -0
  129. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparammethodnotallowederror.md +0 -0
  130. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparamnotfounderror.md +0 -0
  131. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccgetqueryparamunprocessableentityerror.md +0 -0
  132. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostbadrequesterror.md +0 -0
  133. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostinternalservererror.md +0 -0
  134. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostmethodnotallowederror.md +0 -0
  135. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostnotfounderror.md +0 -0
  136. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazaccpostunprocessableentityerror.md +0 -0
  137. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparambadrequesterror.md +0 -0
  138. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparaminternalservererror.md +0 -0
  139. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparammethodnotallowederror.md +0 -0
  140. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparamnotfounderror.md +0 -0
  141. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetpathparamunprocessableentityerror.md +0 -0
  142. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparambadrequesterror.md +0 -0
  143. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparaminternalservererror.md +0 -0
  144. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparammethodnotallowederror.md +0 -0
  145. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparamnotfounderror.md +0 -0
  146. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareagetqueryparamunprocessableentityerror.md +0 -0
  147. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostbadrequesterror.md +0 -0
  148. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostinternalservererror.md +0 -0
  149. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostmethodnotallowederror.md +0 -0
  150. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostnotfounderror.md +0 -0
  151. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/prognazareapostunprocessableentityerror.md +0 -0
  152. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/errors/serviceunavailableerror.md +0 -0
  153. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetpathparamdata.md +0 -0
  154. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetpathparamrequest.md +0 -0
  155. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetpathparamresponse.md +0 -0
  156. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetqueryparamdata.md +0 -0
  157. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetqueryparamrequest.md +0 -0
  158. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessigetqueryparamresponse.md +0 -0
  159. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessipostdata.md +0 -0
  160. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessipostrequest.md +0 -0
  161. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessipostresponse.md +0 -0
  162. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetpathparamdata.md +0 -0
  163. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetpathparamrequest.md +0 -0
  164. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetpathparamresponse.md +0 -0
  165. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetqueryparamdata.md +0 -0
  166. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetqueryparamrequest.md +0 -0
  167. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiproggetqueryparamresponse.md +0 -0
  168. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiprogpostdata.md +0 -0
  169. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiprogpostrequest.md +0 -0
  170. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoaccessiprogpostresponse.md +0 -0
  171. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetpathparamdata.md +0 -0
  172. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetpathparamrequest.md +0 -0
  173. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetpathparamresponse.md +0 -0
  174. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetqueryparamdata.md +0 -0
  175. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetqueryparamrequest.md +0 -0
  176. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimigetqueryparamresponse.md +0 -0
  177. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimipostdata.md +0 -0
  178. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimipostrequest.md +0 -0
  179. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimipostresponse.md +0 -0
  180. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetpathparamdata.md +0 -0
  181. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetpathparamrequest.md +0 -0
  182. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetpathparamresponse.md +0 -0
  183. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetqueryparamdata.md +0 -0
  184. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetqueryparamrequest.md +0 -0
  185. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiproggetqueryparamresponse.md +0 -0
  186. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiprogpostdata.md +0 -0
  187. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiprogpostrequest.md +0 -0
  188. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/elencoodonimiprogpostresponse.md +0 -0
  189. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetpathparamrequest.md +0 -0
  190. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetpathparamresponse.md +0 -0
  191. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetqueryparamrequest.md +0 -0
  192. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessogetqueryparamresponse.md +0 -0
  193. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessopostrequest.md +0 -0
  194. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteaccessopostresponse.md +0 -0
  195. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetpathparamrequest.md +0 -0
  196. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetpathparamresponse.md +0 -0
  197. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetqueryparamrequest.md +0 -0
  198. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimogetqueryparamresponse.md +0 -0
  199. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimopostrequest.md +0 -0
  200. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/esisteodonimopostresponse.md +0 -0
  201. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetpathparamdata.md +0 -0
  202. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetpathparamrequest.md +0 -0
  203. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetpathparamresponse.md +0 -0
  204. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetqueryparamdata.md +0 -0
  205. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetqueryparamrequest.md +0 -0
  206. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccgetqueryparamresponse.md +0 -0
  207. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccpostdata.md +0 -0
  208. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccpostrequest.md +0 -0
  209. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazaccpostresponse.md +0 -0
  210. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetpathparamdata.md +0 -0
  211. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetpathparamrequest.md +0 -0
  212. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetpathparamresponse.md +0 -0
  213. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetqueryparamdata.md +0 -0
  214. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetqueryparamrequest.md +0 -0
  215. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareagetqueryparamresponse.md +0 -0
  216. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareapostdata.md +0 -0
  217. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareapostrequest.md +0 -0
  218. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/prognazareapostresponse.md +0 -0
  219. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/showstatusresponse.md +0 -0
  220. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/models/utils/retryconfig.md +0 -0
  221. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdk-accessi.md +0 -0
  222. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdk-coordinate.md +0 -0
  223. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdks/anncsu/README.md +0 -0
  224. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdks/jsonpost/README.md +0 -0
  225. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdks/pathparam/README.md +0 -0
  226. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdks/queryparam/README.md +0 -0
  227. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/sdks/status/README.md +0 -0
  228. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/docs/speakeasy.md +0 -0
  229. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/.spectral.yaml +0 -0
  230. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/README.md +0 -0
  231. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento accessi.yaml +0 -0
  232. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate massivo.yml +0 -0
  233. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento coordinate.yml +0 -0
  234. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU - Aggiornamento odonimi.yaml +0 -0
  235. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/dev/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  236. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/oas/prod/Specifica API - ANNCSU /342/200/223 Consultazione per le PA.yaml" +0 -0
  237. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/pylintrc +0 -0
  238. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/pyproject.toml +0 -0
  239. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/scripts/create_client_assertion.py +0 -0
  240. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/scripts/post_speakeasy_generation.py +0 -0
  241. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/scripts/publish.sh +0 -0
  242. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/__init__.py +0 -0
  243. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/_version.py +0 -0
  244. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/accessi.py +0 -0
  245. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/__init__.py +0 -0
  246. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/accesso_validation.py +0 -0
  247. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/anncsuerror.py +0 -0
  248. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/apierror.py +0 -0
  249. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/no_response_error.py +0 -0
  250. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/responsevalidationerror.py +0 -0
  251. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/rispostaerrore.py +0 -0
  252. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/errors/show_statusop.py +0 -0
  253. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/__init__.py +0 -0
  254. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/richiestaoperazione.py +0 -0
  255. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/rispostaoperazione.py +0 -0
  256. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/security.py +0 -0
  257. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/show_statusop.py +0 -0
  258. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/models/validated.py +0 -0
  259. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/py.typed +0 -0
  260. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/sdk.py +0 -0
  261. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/sdkconfiguration.py +0 -0
  262. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/accessi/status.py +0 -0
  263. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/__init__.py +0 -0
  264. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/app.py +0 -0
  265. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/__init__.py +0 -0
  266. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/accesso.py +0 -0
  267. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/assertion.py +0 -0
  268. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/auth.py +0 -0
  269. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/bulk.py +0 -0
  270. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/config.py +0 -0
  271. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/constants.py +0 -0
  272. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/commands/coordinate.py +0 -0
  273. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/cli/models.py +0 -0
  274. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/__init__.py +0 -0
  275. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/auth.py +0 -0
  276. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/basesdk.py +0 -0
  277. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/config.py +0 -0
  278. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/__init__.py +0 -0
  279. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/apierror.py +0 -0
  280. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/audience_mismatch.py +0 -0
  281. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/base.py +0 -0
  282. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/digest_serialization_mismatch.py +0 -0
  283. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/no_response_error.py +0 -0
  284. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/errors/responsevalidationerror.py +0 -0
  285. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/__init__.py +0 -0
  286. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/modi_hook.py +0 -0
  287. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/registration.py +0 -0
  288. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/sdkhooks.py +0 -0
  289. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/token_validation.py +0 -0
  290. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/hooks/types.py +0 -0
  291. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/httpclient.py +0 -0
  292. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/modi.py +0 -0
  293. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/pdnd_assertion.py +0 -0
  294. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/pdnd_token.py +0 -0
  295. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/__init__.py +0 -0
  296. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/basesdk.py +0 -0
  297. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/httpclient.py +0 -0
  298. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/protocols.py +0 -0
  299. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/types/__init__.py +0 -0
  300. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/types/basemodel.py +0 -0
  301. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/__init__.py +0 -0
  302. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/annotations.py +0 -0
  303. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/datetimes.py +0 -0
  304. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/dynamic_imports.py +0 -0
  305. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/enums.py +0 -0
  306. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/eventstreaming.py +0 -0
  307. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/forms.py +0 -0
  308. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/headers.py +0 -0
  309. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/logger.py +0 -0
  310. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/metadata.py +0 -0
  311. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/queryparams.py +0 -0
  312. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/requestbodies.py +0 -0
  313. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/retries.py +0 -0
  314. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/security.py +0 -0
  315. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/serializers.py +0 -0
  316. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/unmarshal_json_response.py +0 -0
  317. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/url.py +0 -0
  318. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdk/utils/values.py +0 -0
  319. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/sdkconfiguration.py +0 -0
  320. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/security.py +0 -0
  321. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/session.py +0 -0
  322. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/types/__init__.py +0 -0
  323. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/utils/__init__.py +0 -0
  324. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/__init__.py +0 -0
  325. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/examples.py +0 -0
  326. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/response_validator.py +0 -0
  327. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/common/validation/validators.py +0 -0
  328. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/__init__.py +0 -0
  329. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/_version.py +0 -0
  330. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/__init__.py +0 -0
  331. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/db.py +0 -0
  332. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/dryrun.py +0 -0
  333. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/executor.py +0 -0
  334. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/importer.py +0 -0
  335. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/bulk/reporter.py +0 -0
  336. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/__init__.py +0 -0
  337. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/anncsuerror.py +0 -0
  338. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/apierror.py +0 -0
  339. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/coordinate_validation.py +0 -0
  340. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/no_response_error.py +0 -0
  341. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/responsevalidationerror.py +0 -0
  342. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/risposta_validation.py +0 -0
  343. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/rispostaerrore.py +0 -0
  344. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/errors/show_statusop.py +0 -0
  345. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/jsonpost.py +0 -0
  346. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/__init__.py +0 -0
  347. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/richiestaoperazione.py +0 -0
  348. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/rispostaoperazione.py +0 -0
  349. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/security.py +0 -0
  350. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/show_statusop.py +0 -0
  351. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/models/validated.py +0 -0
  352. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/py.typed +0 -0
  353. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/sdk.py +0 -0
  354. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/sdkconfiguration.py +0 -0
  355. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/coordinate/status.py +0 -0
  356. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/_version.py +0 -0
  357. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/__init__.py +0 -0
  358. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/anncsuerror.py +0 -0
  359. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/apierror.py +0 -0
  360. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/no_response_error.py +0 -0
  361. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/responsevalidationerror.py +0 -0
  362. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/rispostaerrore.py +0 -0
  363. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/errors/show_statusop.py +0 -0
  364. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/__init__.py +0 -0
  365. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/autprefettura.py +0 -0
  366. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/provvedimento.py +0 -0
  367. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/richiestaoperazione.py +0 -0
  368. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/rispostaoperazione.py +0 -0
  369. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/security.py +0 -0
  370. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/models/show_statusop.py +0 -0
  371. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/odonimi.py +0 -0
  372. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/py.typed +0 -0
  373. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/sdk.py +0 -0
  374. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/sdkconfiguration.py +0 -0
  375. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/odonimi/status.py +0 -0
  376. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/__init__.py +0 -0
  377. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/__init__.py +0 -0
  378. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/registration.py +0 -0
  379. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/sdkhooks.py +0 -0
  380. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_hooks/types.py +0 -0
  381. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/_version.py +0 -0
  382. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/__init__.py +0 -0
  383. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/anncsuerror.py +0 -0
  384. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/apierror.py +0 -0
  385. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessigetpathparamop.py +0 -0
  386. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessigetqueryparamop.py +0 -0
  387. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessipostop.py +0 -0
  388. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessiproggetpathparamop.py +0 -0
  389. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessiproggetqueryparamop.py +0 -0
  390. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoaccessiprogpostop.py +0 -0
  391. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimigetpathparamop.py +0 -0
  392. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimigetqueryparamop.py +0 -0
  393. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimipostop.py +0 -0
  394. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimiproggetpathparamop.py +0 -0
  395. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimiproggetqueryparamop.py +0 -0
  396. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/elencoodonimiprogpostop.py +0 -0
  397. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteaccessogetpathparamop.py +0 -0
  398. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteaccessogetqueryparamop.py +0 -0
  399. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteaccessopostop.py +0 -0
  400. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteodonimogetpathparamop.py +0 -0
  401. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteodonimogetqueryparamop.py +0 -0
  402. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/esisteodonimopostop.py +0 -0
  403. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/no_response_error.py +0 -0
  404. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazaccgetpathparamop.py +0 -0
  405. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazaccgetqueryparamop.py +0 -0
  406. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazaccpostop.py +0 -0
  407. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazareagetpathparamop.py +0 -0
  408. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazareagetqueryparamop.py +0 -0
  409. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/prognazareapostop.py +0 -0
  410. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/responsevalidationerror.py +0 -0
  411. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/errors/show_statusop.py +0 -0
  412. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/jsonpost.py +0 -0
  413. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/__init__.py +0 -0
  414. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessigetpathparamop.py +0 -0
  415. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessigetqueryparamop.py +0 -0
  416. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessipostop.py +0 -0
  417. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessiproggetpathparamop.py +0 -0
  418. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessiproggetqueryparamop.py +0 -0
  419. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoaccessiprogpostop.py +0 -0
  420. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimigetpathparamop.py +0 -0
  421. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimigetqueryparamop.py +0 -0
  422. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimipostop.py +0 -0
  423. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimiproggetpathparamop.py +0 -0
  424. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimiproggetqueryparamop.py +0 -0
  425. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/elencoodonimiprogpostop.py +0 -0
  426. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteaccessogetpathparamop.py +0 -0
  427. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteaccessogetqueryparamop.py +0 -0
  428. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteaccessopostop.py +0 -0
  429. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteodonimogetpathparamop.py +0 -0
  430. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteodonimogetqueryparamop.py +0 -0
  431. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/esisteodonimopostop.py +0 -0
  432. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazaccgetpathparamop.py +0 -0
  433. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazaccgetqueryparamop.py +0 -0
  434. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazaccpostop.py +0 -0
  435. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazareagetpathparamop.py +0 -0
  436. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazareagetqueryparamop.py +0 -0
  437. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/prognazareapostop.py +0 -0
  438. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/models/show_statusop.py +0 -0
  439. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/pathparam.py +0 -0
  440. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/py.typed +0 -0
  441. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/queryparam.py +0 -0
  442. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/sdk.py +0 -0
  443. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/sdkconfiguration.py +0 -0
  444. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/src/anncsu/pa/status.py +0 -0
  445. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/README.md +0 -0
  446. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/accessi/__init__.py +0 -0
  447. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/accessi/test_accesso_validation.py +0 -0
  448. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/accessi/test_do_request_signature.py +0 -0
  449. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/accessi/test_imports.py +0 -0
  450. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/__init__.py +0 -0
  451. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/conftest.py +0 -0
  452. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_accesso.py +0 -0
  453. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_assertion.py +0 -0
  454. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_auth.py +0 -0
  455. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_config.py +0 -0
  456. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_coordinate.py +0 -0
  457. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_coordinate_bulk.py +0 -0
  458. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_duckdb_batch.py +0 -0
  459. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_main.py +0 -0
  460. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_raw_output.py +0 -0
  461. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/cli/test_token_endpoint_resolution.py +0 -0
  462. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/__init__.py +0 -0
  463. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_auth_modi_integration.py +0 -0
  464. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_cli_env_override.py +0 -0
  465. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_config.py +0 -0
  466. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_imports.py +0 -0
  467. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_modi.py +0 -0
  468. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_modi_hook.py +0 -0
  469. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_pdnd_assertion.py +0 -0
  470. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_pdnd_auth_manager.py +0 -0
  471. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_pdnd_token.py +0 -0
  472. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_security.py +0 -0
  473. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_security_basemodel.py +0 -0
  474. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_session.py +0 -0
  475. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/common/test_token_validation_hook.py +0 -0
  476. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/conftest.py +0 -0
  477. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/__init__.py +0 -0
  478. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/__init__.py +0 -0
  479. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_db.py +0 -0
  480. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_dryrun.py +0 -0
  481. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_executor.py +0 -0
  482. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_importer.py +0 -0
  483. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_integration.py +0 -0
  484. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/bulk/test_reporter.py +0 -0
  485. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_coordinate_validation.py +0 -0
  486. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_imports.py +0 -0
  487. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_risposta_validation.py +0 -0
  488. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/coordinate/test_sdk_hooks_integration.py +0 -0
  489. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/__init__.py +0 -0
  490. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/__init__.py +0 -0
  491. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_jsonpost_async_httpx.py +0 -0
  492. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_jsonpost_httpx.py +0 -0
  493. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_status_async_httpx.py +0 -0
  494. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/coordinate/test_status_httpx.py +0 -0
  495. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/__init__.py +0 -0
  496. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_jsonpost_async_httpx.py +0 -0
  497. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_jsonpost_httpx.py +0 -0
  498. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_pathparam_async_httpx.py +0 -0
  499. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_pathparam_httpx.py +0 -0
  500. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_queryparam_async_httpx.py +0 -0
  501. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_queryparam_httpx.py +0 -0
  502. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/pa/test_status_httpx.py +0 -0
  503. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/test_sdk_instantiation.py +0 -0
  504. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/integration/test_security_in_requests.py +0 -0
  505. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/odonimi/__init__.py +0 -0
  506. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/odonimi/test_imports.py +0 -0
  507. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/pa/__init__.py +0 -0
  508. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/pa/test_imports.py +0 -0
  509. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/pa/test_response_field_mapping.py +0 -0
  510. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/test_post_speakeasy_generation.py +0 -0
  511. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/__init__.py +0 -0
  512. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/__init__.py +0 -0
  513. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_coordinate_operations_validation.py +0 -0
  514. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_model_factories.py +0 -0
  515. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_validators.py +0 -0
  516. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/coordinate/test_validators_property.py +0 -0
  517. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/ADVANCED_TESTING.md +0 -0
  518. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/README.md +0 -0
  519. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/README_COMPREHENSIVE_TESTS.md +0 -0
  520. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/__init__.py +0 -0
  521. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_all_operations_validation.py +0 -0
  522. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_model_factories.py +0 -0
  523. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_model_factories_comprehensive.py +0 -0
  524. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_validators.py +0 -0
  525. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/pa/test_validators_property.py +0 -0
  526. {anncsu_sdk-0.0.10.dev2 → anncsu_sdk-0.0.10.dev4}/tests/validation/test_response_validator.py +0 -0
  527. {anncsu_sdk-0.0.10.dev2 → 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.dev2
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
@@ -1789,15 +1789,18 @@ anncsu pa accesso --prognazacc 28586543 --raw
1789
1789
 
1790
1790
  #### `anncsu pa accessi`
1791
1791
 
1792
- List access points (civici) for a street. First searches for the street by municipality code and partial name, then lists all access points.
1792
+ List access points (civici) for a street. Resolve the street either by `--denom` (municipality code + base64 partial name) **or** directly by `--prognaz`, then list its access points.
1793
1793
 
1794
1794
  ```bash
1795
- # List all access points for a street
1795
+ # List access points by street name (base64)
1796
1796
  anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE="
1797
1797
 
1798
1798
  # Filter by partial civic number
1799
1799
  anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE=" --accparz "1"
1800
1800
 
1801
+ # Target a specific odonimo directly by its national progressive
1802
+ anncsu pa accessi --codcom H501 --prognaz 920585 --accparz 95
1803
+
1801
1804
  # Production with JSON output
1802
1805
  anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE=" --production --json
1803
1806
  ```
@@ -1807,7 +1810,8 @@ anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE=" --production --json
1807
1810
  | Option | Required | Description |
1808
1811
  |--------|----------|-------------|
1809
1812
  | `--codcom`, `-c` | Yes | Codice Belfiore del comune |
1810
- | `--denom`, `-d` | Yes | Denominazione parziale dell'odonimo - base64 encoded |
1813
+ | `--denom`, `-d` | One of denom/prognaz | Denominazione parziale dell'odonimo - base64 encoded |
1814
+ | `--prognaz`, `-p` | One of denom/prognaz | Progressivo nazionale dell'odonimo (targets it directly) |
1811
1815
  | `--accparz`, `-a` | No | Valore parziale del civico (default: "1") |
1812
1816
  | `--validation/--production` | No | Environment (default: validation) |
1813
1817
  | `--token-endpoint`, `-e` | No | PDND token endpoint URL |
@@ -1816,6 +1820,10 @@ anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE=" --production --json
1816
1820
  | `--json` | No | Output as JSON |
1817
1821
  | `--raw` | No | Print raw API responses to stderr (odonimo + accessi) |
1818
1822
 
1823
+ > **`--denom` is a substring search and can be ambiguous.** E.g. `--denom` for "taranto" matches both `VIA NINO TARANTO` and `VIA TARANTO`. When more than one odonimo matches, the command does **not** silently pick the first: it lists every candidate with its `--prognaz` and exits, so you can re-run targeting the exact one. `--denom` and `--prognaz` are mutually exclusive; provide exactly one.
1824
+
1825
+ > **`--accparz` is a substring match on the civico** (not a prefix): `--accparz 9` returns 9, 19, 29, … 91, 97. To list *all* accessi you currently have to union several `accparz` values (e.g. `0`–`9`) and de-duplicate by `prognazacc` — the API has no "list all" wildcard. The esponente comes back in the `Esp.` column: civico 95 may yield three rows (95, 95/A, 95/D), each a distinct `prognazacc`.
1826
+
1819
1827
  **Output columns:** Prog. Naz. Acc., Civico, Esp., Specif., Metrico, Coord X, Coord Y, Quota, Metodo
1820
1828
 
1821
1829
  **JSON output example:**
@@ -2184,17 +2192,17 @@ anncsu odonimo insert --codcom A062 --dug VIA \
2184
2192
  Options:
2185
2193
 
2186
2194
  - `--codcom, -c` - Codice comune (Belfiore code, e.g. `A062`) **[required]**
2187
- - `--dug` - DUG (e.g. `VIA`, `PIAZZA`, `STRADA`) **[required for I/R]**
2188
- - `--denom-delibera` - Denominazione delibera (uppercase applied server-side)
2189
- - `--denom-in-lingua-1` / `--denom-in-lingua-2` - Odonimo in lingua (per comuni bi/tri-lingua)
2190
- - `--denom-localita` - Denominazione località (uppercase applied)
2191
- - `--codice-comunale` - Codifica comunale dell'odonimo (no uppercase)
2192
- - `--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`)
2193
2201
  - `--provv-protocollo` - Protocollo del provvedimento (max 70 char, no uppercase)
2194
- - `--provv-flag-delibera` - Flag delibera (`0`-`4`); `0` and `1` make `--provv-data` + `--provv-protocollo` required
2195
- - `--prefettura-data` - Data prefettura (required if `--prefettura-protocollo`)
2196
- - `--prefettura-protocollo` - Protocollo prefettura (required if `--prefettura-data`)
2197
- - `--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)
2198
2206
  - `--token-endpoint, -e` - PDND token endpoint URL
2199
2207
  - `--server-url, -s` - API server URL (auto-discovered from voucher if omitted)
2200
2208
  - `--validation/--production` - Use validation (UAT) or production environment
@@ -2203,6 +2211,8 @@ Options:
2203
2211
  - `--raw` - Print raw API response to stderr
2204
2212
  - `--dry-run` - I + S rollback (see `--dry-run` section below)
2205
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
+
2206
2216
  JSON output:
2207
2217
 
2208
2218
  ```json
@@ -2233,10 +2243,22 @@ anncsu odonimo update --codcom A062 \
2233
2243
 
2234
2244
  Options:
2235
2245
 
2236
- - All `insert` options (except `--prognaz` is required, not assigned)
2237
- - `--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`)
2238
2248
  - `--auto-resolve` - Resolve `--prognaz` via PA from `--codcom` + `--denom` (see `--auto-resolve` section)
2239
- - `--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`.
2240
2262
 
2241
2263
  #### `anncsu odonimo delete`
2242
2264
 
@@ -2301,6 +2323,12 @@ Unlike `accesso --dry-run` (which operates on an existing accesso via test+resto
2301
2323
 
2302
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.
2303
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
+
2304
2332
  Examples:
2305
2333
 
2306
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
@@ -178,16 +178,36 @@ if result.res == "OK":
178
178
  else:
179
179
  print(f"Odonimo non trovato")
180
180
 
181
- # 5. Elenco accessi per l'odonimo
181
+ # 5. Elenco accessi per l'odonimo.
182
+ # NB: ``accparz`` è OBBLIGATORIO (match per sottostringa sul civico) — non
183
+ # esiste un valore "tutti". Vedi la nota sotto.
182
184
  accessi = sdk.queryparam.elenco_accessi_get_query_param(
183
185
  codcom=codcom,
184
186
  denom=denom,
187
+ accparz="1", # es. tutti i civici che contengono "1"
185
188
  )
186
189
 
187
190
  for accesso in accessi.data:
188
- print(f"Civico: {accesso.civico}, Coordinate: ({accesso.coord_x}, {accesso.coord_y})")
191
+ # L'esponente torna nel campo dedicato ``esp`` (civico e esponente sono
192
+ # separati): es. civico="95", esp="A" → 95/A.
193
+ print(
194
+ f"Civico: {accesso.civico}{('/' + accesso.esp) if accesso.esp else ''}, "
195
+ f"Coordinate: ({accesso.coord_x}, {accesso.coord_y})"
196
+ )
189
197
  ```
190
198
 
199
+ > **`accparz` è obbligatorio ed è un match per sottostringa** (non prefisso): `accparz="9"`
200
+ > ritorna `9, 19, 29, …, 91, 97` (tutti i civici che *contengono* "9"). **Non esiste un
201
+ > wildcard "elenca tutti"**: per ottenere l'elenco completo bisogna unire più valori di
202
+ > `accparz` (es. `"0"`–`"9"`) e deduplicare per `prognazacc`. Lo stesso vale per
203
+ > `elenco_accessi_prog` (per `prognaz`).
204
+ >
205
+ > **Esponente / specificità**: un accesso è identificato da `civico` (numero) + `esp`
206
+ > (esponente) + `specif`. Più accessi possono condividere lo stesso `civico` con `esp`
207
+ > diversi → `prognazacc` distinti, **tutti** restituiti dalla stessa `accparz`. Es. su
208
+ > VIA TARANTO (H501, prognaz `920585`) il civico `95` ritorna tre accessi: `95`, `95/A`,
209
+ > `95/D`.
210
+
191
211
  ## Gestione Errori
192
212
 
193
213
  ```python
@@ -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[
@@ -360,13 +360,28 @@ def accessi(
360
360
  ),
361
361
  ],
362
362
  denom: Annotated[
363
- str,
363
+ str | None,
364
364
  typer.Option(
365
365
  "--denom",
366
366
  "-d",
367
- help="Denominazione anche parziale dell'odonimo - base64 encoded.",
367
+ help=(
368
+ "Denominazione anche parziale dell'odonimo - base64 encoded. "
369
+ "Mutually exclusive with --prognaz."
370
+ ),
368
371
  ),
369
- ],
372
+ ] = None,
373
+ prognaz: Annotated[
374
+ str | None,
375
+ typer.Option(
376
+ "--prognaz",
377
+ "-p",
378
+ help=(
379
+ "Progressivo nazionale dell'odonimo. Use it to target a "
380
+ "specific odonimo directly (skips the --denom search and its "
381
+ "ambiguity). Mutually exclusive with --denom."
382
+ ),
383
+ ),
384
+ ] = None,
370
385
  accparz: Annotated[
371
386
  str | None,
372
387
  typer.Option(
@@ -419,12 +434,16 @@ def accessi(
419
434
  ) -> None:
420
435
  """List access points for a street.
421
436
 
422
- First searches for the street (odonimo) by municipality code and name,
423
- then lists all access points (civici) for that street.
437
+ Resolve the street (odonimo) either by ``--denom`` (municipality code +
438
+ base64 name) or directly by ``--prognaz``, then list its access points
439
+ (civici). ``--denom`` is a substring search: when it matches more than one
440
+ odonimo the command stops and lists the candidates so you can re-run with
441
+ ``--prognaz`` (it never silently picks the first match).
424
442
 
425
443
  Example:
426
444
  anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE="
427
445
  anncsu pa accessi --codcom I501 --denom "VklBIFJPTUE=" --accparz "1"
446
+ anncsu pa accessi --codcom H501 --prognaz 920585 --accparz 95
428
447
  """
429
448
  if server_url is None:
430
449
  server_url = (
@@ -440,43 +459,92 @@ def accessi(
440
459
  verify_ssl=not no_verify_ssl,
441
460
  )
442
461
 
443
- # Step 1: Find odonimo prognaz
444
- try:
445
- odonimo_response = sdk.queryparam.elencoodonimiprog_get_query_param(
446
- codcom=codcom,
447
- denomparz=denom,
462
+ # Step 1: Resolve the odonimo — either directly via --prognaz or by
463
+ # searching --denom. The denom search can match multiple odonimi (it is a
464
+ # substring match), so we never silently pick the first: we error and ask
465
+ # the user to disambiguate with --prognaz.
466
+ if prognaz and denom:
467
+ error_console.print(
468
+ "[red]Error:[/red] --denom and --prognaz are mutually exclusive."
448
469
  )
449
- except Exception as e:
450
- error_console.print(f"[red]Error:[/red] Odonimo search failed: {e}")
451
- raise typer.Exit(1) from None
470
+ raise typer.Exit(1)
452
471
 
453
- if raw_output:
454
- _print_raw(odonimo_response, "Raw odonimo response")
472
+ if prognaz:
473
+ try:
474
+ odonimo_response = sdk.queryparam.prognazarea_get_query_param(
475
+ prognaz=prognaz,
476
+ )
477
+ except Exception as e:
478
+ error_console.print(f"[red]Error:[/red] Odonimo lookup failed: {e}")
479
+ raise typer.Exit(1) from None
480
+
481
+ if raw_output:
482
+ _print_raw(odonimo_response, "Raw odonimo response")
483
+
484
+ if not odonimo_response.data:
485
+ error_console.print(
486
+ f"[red]No results:[/red] No odonimo found for prognaz={prognaz}"
487
+ )
488
+ raise typer.Exit(1) from None
455
489
 
456
- if not odonimo_response.data:
490
+ odonimo_data = odonimo_response.data[0]
491
+ resolved_prognaz = prognaz
492
+ elif denom:
493
+ try:
494
+ odonimo_response = sdk.queryparam.elencoodonimiprog_get_query_param(
495
+ codcom=codcom,
496
+ denomparz=denom,
497
+ )
498
+ except Exception as e:
499
+ error_console.print(f"[red]Error:[/red] Odonimo search failed: {e}")
500
+ raise typer.Exit(1) from None
501
+
502
+ if raw_output:
503
+ _print_raw(odonimo_response, "Raw odonimo response")
504
+
505
+ if not odonimo_response.data:
506
+ error_console.print(
507
+ f"[red]No results:[/red] No odonimo found for codcom={codcom}, "
508
+ f"denom={denom}"
509
+ )
510
+ raise typer.Exit(1) from None
511
+
512
+ matches = list(odonimo_response.data)
513
+ if len(matches) > 1:
514
+ error_console.print(
515
+ f"[red]Ambiguous:[/red] {len(matches)} odonimi match codcom="
516
+ f"{codcom}, denom={denom}. Re-run with --prognaz to pick one:"
517
+ )
518
+ for m in matches:
519
+ error_console.print(
520
+ f" --prognaz {m.prognaz} → {m.dug or ''} {m.denomuff or ''}"
521
+ )
522
+ raise typer.Exit(1)
523
+
524
+ odonimo_data = matches[0]
525
+ resolved_prognaz = odonimo_data.prognaz
526
+ else:
457
527
  error_console.print(
458
- f"[red]No results:[/red] No odonimo found for codcom={codcom}, denom={denom}"
528
+ "[red]Error:[/red] Provide --denom (street name, base64) or "
529
+ "--prognaz (national progressive of the odonimo)."
459
530
  )
460
- raise typer.Exit(1) from None
461
-
462
- odonimo_data = odonimo_response.data[0]
463
- prognaz = odonimo_data.prognaz
531
+ raise typer.Exit(1)
464
532
 
465
- if not prognaz:
533
+ if not resolved_prognaz:
466
534
  error_console.print("[red]Error:[/red] Odonimo found but no prognaz available")
467
535
  raise typer.Exit(1) from None
468
536
 
469
537
  if not json_output:
470
538
  console.print(
471
539
  f"[bold]Street:[/bold] {odonimo_data.dug} {odonimo_data.denomuff} "
472
- f"(prognaz={prognaz})\n"
540
+ f"(prognaz={resolved_prognaz})\n"
473
541
  )
474
542
 
475
543
  # Step 2: List accessi for this odonimo
476
544
  search_accparz = accparz if accparz else "1"
477
545
  try:
478
546
  accessi_response = sdk.queryparam.elencoaccessiprog_get_query_param(
479
- prognaz=prognaz,
547
+ prognaz=resolved_prognaz,
480
548
  accparz=search_accparz,
481
549
  )
482
550
  except Exception as e:
@@ -488,7 +556,8 @@ def accessi(
488
556
 
489
557
  if not accessi_response.data:
490
558
  error_console.print(
491
- f"[red]No results:[/red] No access points found for prognaz={prognaz}"
559
+ f"[red]No results:[/red] No access points found for "
560
+ f"prognaz={resolved_prognaz}"
492
561
  )
493
562
  raise typer.Exit(1) from None
494
563
 
@@ -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
  ]