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