ffbb-data-client 2.4.39__tar.gz → 2.4.40__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.
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/AGENTS.md +6 -6
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/CHANGELOG.md +14 -0
- {ffbb_data_client-2.4.39/src/ffbb_data_client.egg-info → ffbb_data_client-2.4.40}/PKG-INFO +2 -2
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/README.md +1 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/RELEASE_NOTES.md +12 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/api_update_summary.md +3 -4
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/endpoint_discovery.json +16 -19
- {ffbb_data_client-2.4.39/src/ffbb_data_client → ffbb_data_client-2.4.40}/data/indexes.json +9 -9
- ffbb_data_client-2.4.40/data/permission_drift_summary.md +19 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/permission_matrix.json +106 -32
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/type_discovery_corrections.json +40 -40
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/data_dictionary.rst +8 -8
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/scripts/discover_endpoints.py +8 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/api.py +138 -28
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_mixins/competition.py +24 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_mixins/organisme.py +25 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_rest_facade.py +2 -2
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/config.py +7 -8
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/data/endpoint_discovery.json +16 -19
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40/src/ffbb_data_client}/data/indexes.json +9 -9
- ffbb_data_client-2.4.39/data/openapi_full.json → ffbb_data_client-2.4.40/src/ffbb_data_client/data/openapi.json +867 -2879
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/data/permission_matrix.json +106 -32
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/helpers/http_requests_utils.py +38 -85
- ffbb_data_client-2.4.40/src/ffbb_data_client/helpers/meilisearch_fallback.py +65 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_organisme_response.py +21 -7
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/retry_utils.py +53 -3
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/token_manager.py +37 -9
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/web_probe.py +46 -7
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40/src/ffbb_data_client.egg-info}/PKG-INFO +2 -2
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client.egg-info/SOURCES.txt +2 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client.egg-info/scm_file_list.json +2 -0
- ffbb_data_client-2.4.40/src/ffbb_data_client.egg-info/scm_version.json +8 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/conftest.py +10 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_506_raw_json_model_conversion.py +2 -2
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/helpers/test_400_http_helpers.py +25 -41
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/test_310_discover_endpoints.py +1 -1
- ffbb_data_client-2.4.40/tests/unit/test_314_api_endpoints.py +293 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/test_314_discover_permissions.py +1 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_301_input_validation.py +1 -1
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_302_retry_utils.py +3 -3
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_304_config.py +7 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_305_token_manager.py +46 -5
- ffbb_data_client-2.4.40/tests/unit/utils/test_310_waf_circuit.py +119 -0
- ffbb_data_client-2.4.40/tests/unit/utils/test_web_probe.py +148 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/index.html +4 -4
- ffbb_data_client-2.4.39/data/permission_drift_summary.md +0 -3
- ffbb_data_client-2.4.39/src/ffbb_data_client.egg-info/scm_version.json +0 -8
- ffbb_data_client-2.4.39/tests/unit/test_314_api_endpoints.py +0 -144
- ffbb_data_client-2.4.39/tests/unit/utils/test_web_probe.py +0 -71
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.agents/rules/antigravity-rtk-rules.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.coveragerc +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.gitattributes +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/FUNDING.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/dependabot.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/scripts/check_wrapper_parity.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/check_wrapper_parity.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/ci.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/codeql.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/dependabot-automerge.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/deploy-pages.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/publish.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/release-after-discovery-merge.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.gitignore +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.isort.cfg +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.jules/bolt.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.omc/skills/codeql-security-hardening-expertise.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.omc/skills/pypi-immutable-release-workflow.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.omc/skills/terminal-output-hygiene-expertise.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.pre-commit-config.yaml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/.readthedocs.yml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/AUTHORS.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/CODE_OF_CONDUCT.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/CONTRIBUTING.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/DESIGN.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/Dockerfile +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/LICENSE.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/LOCAL_CI_GUIDE.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/SECURITY.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/api.ffbb.app.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/collections.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/field_dictionary.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/meilisearch-prod.ffbb.app.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/data/openapi.json +0 -0
- /ffbb_data_client-2.4.39/src/ffbb_data_client/data/openapi.json → /ffbb_data_client-2.4.40/data/openapi_full.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/Makefile +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/_static/.gitignore +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/architecture.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/authors.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/changelog.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/conf.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/contributing.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/examples.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/index.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/license.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/migration.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/readme.rst +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/requirements.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/test_strategy.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/docs/testing_conventions.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/examples/README.md +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/examples/complete_usage_example.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/examples/quick_start.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/examples/team_ranking_analysis.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/pyproject.toml +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/run-ci-locally.sh +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/scripts/benchmark_concurrent_pagination.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/scripts/benchmark_search_organisme.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/scripts/discover_permissions.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/scripts/discover_types.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/setup.cfg +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/setup.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_helpers.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/_search_facade.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/data/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/data/collections.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/data/field_dictionary.json +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/exceptions.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/helpers/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/helpers/normalization.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/affiche.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/cartographie.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/categorie.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/categorie_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/clock.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/club_contacts.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/code.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/commune.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_fields.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_id.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_origine.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competition_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competitions_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/competitions_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/configuration_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/contact_info.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/coordonnees.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/document_flyer.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/engagements_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/etat.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/external_competition_id.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/external_id.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/field_set.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/folder.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/formation_session.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/formations_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/game_stats_model.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/game_stats_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/generic_search.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/geo.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_commune_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_competition_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_formation_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_poule_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_salle_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/gradient_color.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/id_poule.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/jour.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/label.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/labellisation.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/live.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/lives.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/logo.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_results.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/nature_sol.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/niveau.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/niveau_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/niveau_info.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/niveau_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/niveau_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/objectif.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organisateur.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organisateur_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organisme_fields.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organismes_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/organismes_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/phase_code.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/poule.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/poule_fields.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/poules_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/poules_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/publication_internet.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/purple_logo.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/rankings_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/saison.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/saison_fields.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/saisons_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/saisons_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/salle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/salles_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/sexe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/sexe_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/source.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/status.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/team_engagement.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/team_ranking.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_name.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/terrains_storage.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournois_hit.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_association.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_competition.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_enum.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/models/type_league.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/py.typed +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/cache_manager.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/converter_utils.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/input_validation.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client/utils/secure_logging.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client.egg-info/requires.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/e2e/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/e2e/conftest.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/conftest.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_500_user_journey.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_501_user_journey_v3.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_502_enhanced_integration.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_503_secure_logging.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_504_input_validation.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/integration/test_505_retry_timeout.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_201_unit_tests_core.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_api_optimizations.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_async_methods.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_meilisearch_async.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_search_many.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_v2_backport_search.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_v3_new_features.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_v4_aiter_and_contacts.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/clients/test_warm_cache.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/conftest.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/helpers/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/helpers/test_normalization.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_106_competition_origine.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_110_labellisation.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_111_niveau_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_112_purple_logo.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_113_salle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_115_type_association_libelle.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_116_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_117_organisateur.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_118_competition_id.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_122_coverage_gaps.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_123_missing_coverage.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_123_v2_backport.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/models/test_dx_aliases.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/test_311_normalize_team_name.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/test_312_api_cors.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/test_313_api_metrics.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/__init__.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_300_secure_logging.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_303_cache_manager.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_306_converter_utils.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tools/update_agents_md.py +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/tox.ini +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/assets/apple-touch-icon.png +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/assets/favicon-192x192.png +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/assets/favicon-48x48.png +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/assets/favicon-96x96.png +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/assets/favicon.ico +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/assets/logo.webp +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/css/style.css +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/favicon.ico +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/llms-full.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/llms.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/robots.txt +0 -0
- {ffbb_data_client-2.4.39 → ffbb_data_client-2.4.40}/website/sitemap.xml +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# FFBB Data Client SDK
|
|
2
2
|
|
|
3
3
|
> ⚠️ **Fichier auto-généré** par `tools/update_agents_md.py` — ne pas modifier manuellement.
|
|
4
|
-
> Dernière mise à jour : ffbb-data-client | SDK total : ~
|
|
5
|
-
> (clients:
|
|
4
|
+
> Dernière mise à jour : ffbb-data-client | SDK total : ~20017 lignes de code
|
|
5
|
+
> (clients: 6472, models: 9825, utils: 2479, helpers: 1241)
|
|
6
6
|
|
|
7
7
|
## Langue
|
|
8
8
|
Tous les documents de travail (walkthrough.md, implementation_plan.md) DOIVENT être en français.
|
|
@@ -69,13 +69,13 @@ Ces directives inspirées d'Andrej Karpathy visent à éliminer les erreurs de c
|
|
|
69
69
|
```
|
|
70
70
|
src/ffbb_data_client/
|
|
71
71
|
├── __init__.py # Point d'entrée du SDK, expose FFBBDataClient et FFBBTokens
|
|
72
|
-
├── clients/ # Clients d'API (REST et Meilisearch) et façades (≈
|
|
72
|
+
├── clients/ # Clients d'API (REST et Meilisearch) et façades (≈6472 lignes)
|
|
73
73
|
├── config.py # Configuration centralisée (URLs, Headers, Endpoints, Facettes)
|
|
74
74
|
├── data/ # Ressources et données statiques
|
|
75
|
-
├── helpers/ # Méthodes utilitaires pour requêtes HTTP et mapping (≈
|
|
76
|
-
├── models/ # Modèles de données Pydantic type-safe (≈
|
|
75
|
+
├── helpers/ # Méthodes utilitaires pour requêtes HTTP et mapping (≈1241 lignes)
|
|
76
|
+
├── models/ # Modèles de données Pydantic type-safe (≈9825 lignes)
|
|
77
77
|
├── py.typed # Marqueur pour la compatibilité avec mypy
|
|
78
|
-
└── utils/ # Gestionnaires transversaux (cache, jetons de sécurité, validation) (≈
|
|
78
|
+
└── utils/ # Gestionnaires transversaux (cache, jetons de sécurité, validation) (≈2479 lignes)
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
## Conventions de code
|
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.4.40] - 2026-10-24
|
|
11
|
+
|
|
12
|
+
### Resilience (BunnyCDN WAF)
|
|
13
|
+
- **Disjoncteur WAF par hôte** : un 403 BunnyCDN coupe l'hôte pendant `FFBB_WAF_COOLDOWN_SECONDS` (600 s par défaut). Les appels suivants échouent instantanément sans requête réseau, puis l'hôte est sondé à nouveau après le délai.
|
|
14
|
+
- **Suppression de la rotation de User-Agent et du retry sur 403** : mesuré sans effet (5 User-Agents bloqués, même authentifiés), ils multipliaient les requêtes. `FALLBACK_USER_AGENTS` est retiré de `config`.
|
|
15
|
+
- **Pas de rafraîchissement de token sur un 403 WAF** (le token n'est pas en cause).
|
|
16
|
+
- **Fallback Meilisearch exact** (`helpers/meilisearch_fallback.py`) : organisme par `id`, engagements par `codeClub`, rencontres filtrées par code club. Corrige l'ancien fallback qui renvoyait des matchs d'autres clubs (recherche floue) avec compétition et salle vides.
|
|
17
|
+
- **Fallback organisme/engagements et saison active** lorsque Directus est bloqué ; jetons de secours quand `/items/configuration` est inaccessible.
|
|
18
|
+
|
|
19
|
+
### API REST
|
|
20
|
+
- `GET /api/v1/club/{id}/matches` : filtre `date_from`/`date_to` ; en mode dégradé, en-tête `X-FFBB-Data-Source: meilisearch-window` (l'index ne couvre qu'une fenêtre glissante).
|
|
21
|
+
- `GET /api/v1/poule/{id}` et `/classement` : `degraded: true` et `Cache-Control: no-store` quand la donnée est indisponible, au lieu d'un vide présenté comme réel.
|
|
22
|
+
- `/health/ready` : `directus: waf_blocked` ; `/metrics` : `ffbb_upstream_waf_blocked_seconds{host=...}`.
|
|
23
|
+
|
|
10
24
|
## [2.4.39] - 2026-10-14
|
|
11
25
|
|
|
12
26
|
### Features & Discovery
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ffbb-data-client
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.40
|
|
4
4
|
Summary: API FFBB — SDK Python moderne & asynchrone pour les donnees officielles de la Federation Francaise de BasketBall (clubs, classements, calendriers, lives, Meilisearch). Alternative moderne a ffbb-api-client.
|
|
5
5
|
Home-page: https://github.com/nickdesi/ffbb-data-client
|
|
6
6
|
Author: nickdesi
|
|
@@ -341,7 +341,7 @@ Accédez ensuite à la documentation Swagger interactive sur `http://localhost:8
|
|
|
341
341
|
|
|
342
342
|
## 🛠️ Robustesse, CI/CD & Découverte Quotidienne
|
|
343
343
|
|
|
344
|
-
* **Origine Directus & Anti-403** :
|
|
344
|
+
* **Origine Directus & Anti-403** : Origine Directus `https://bo.ffbb.com/` (fallback miroir `https://bo.ffbb.app/`). En cas de blocage WAF BunnyCDN, un disjoncteur coupe l'hôte (`FFBB_WAF_COOLDOWN_SECONDS`) et les données disponibles basculent sur Meilisearch ; les réponses partielles sont signalées (`degraded`, `X-FFBB-Data-Source`).
|
|
345
345
|
* **Auto-Résolution des Tokens** : Découverte et rotation dynamiques des jetons Bearer Directus et Meilisearch sans configuration requise.
|
|
346
346
|
* **Découverte Quotidienne du Schéma** : Un cron GitHub Actions analyse chaque matin à 5h17 UTC l'OpenAPI spec officielle de la FFBB et détecte automatiquement tout nouveau champ ou collection Directus.
|
|
347
347
|
* **Cache Intelligent Sécurisé** : Gestionnaire de cache HTTP `hishel` avec SQLite distinct pour les flux synchrones et asynchrones.
|
|
@@ -285,7 +285,7 @@ Accédez ensuite à la documentation Swagger interactive sur `http://localhost:8
|
|
|
285
285
|
|
|
286
286
|
## 🛠️ Robustesse, CI/CD & Découverte Quotidienne
|
|
287
287
|
|
|
288
|
-
* **Origine Directus & Anti-403** :
|
|
288
|
+
* **Origine Directus & Anti-403** : Origine Directus `https://bo.ffbb.com/` (fallback miroir `https://bo.ffbb.app/`). En cas de blocage WAF BunnyCDN, un disjoncteur coupe l'hôte (`FFBB_WAF_COOLDOWN_SECONDS`) et les données disponibles basculent sur Meilisearch ; les réponses partielles sont signalées (`degraded`, `X-FFBB-Data-Source`).
|
|
289
289
|
* **Auto-Résolution des Tokens** : Découverte et rotation dynamiques des jetons Bearer Directus et Meilisearch sans configuration requise.
|
|
290
290
|
* **Découverte Quotidienne du Schéma** : Un cron GitHub Actions analyse chaque matin à 5h17 UTC l'OpenAPI spec officielle de la FFBB et détecte automatiquement tout nouveau champ ou collection Directus.
|
|
291
291
|
* **Cache Intelligent Sécurisé** : Gestionnaire de cache HTTP `hishel` avec SQLite distinct pour les flux synchrones et asynchrones.
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# Release Notes - FFBB Data Client
|
|
2
2
|
|
|
3
|
-
## Version 2.4.
|
|
3
|
+
## Version 2.4.40 (Latest Release)
|
|
4
|
+
|
|
5
|
+
### 🛡️ BunnyCDN WAF: circuit breaker instead of evasion
|
|
6
|
+
- **Per-host WAF circuit breaker**: a BunnyCDN 403 opens the circuit for `FFBB_WAF_COOLDOWN_SECONDS` (default 600 s). Subsequent calls fail instantly with no network traffic, then the host is probed again.
|
|
7
|
+
- **User-Agent rotation and 403 retries removed**: measured ineffective (all User-Agents blocked, even with a valid bearer); they only multiplied outbound requests.
|
|
8
|
+
- **Exact Meilisearch fallback**: organisme by `id`, engagements by `codeClub`, club matches filtered by club code. Fixes the previous fuzzy fallback that returned other clubs' matches.
|
|
9
|
+
- **Honest degraded mode**: `degraded: true` + `Cache-Control: no-store` on poule endpoints, `X-FFBB-Data-Source: meilisearch-window` on club matches, `directus: waf_blocked` readiness and `ffbb_upstream_waf_blocked_seconds` metric.
|
|
10
|
+
- **Club matches date filter**: `date_from` / `date_to` on `GET /api/v1/club/{id}/matches`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Version 2.4.39
|
|
4
15
|
|
|
5
16
|
### 🚀 Live Next.js Bundle Probing & Automatic Origin Discovery
|
|
6
17
|
- **Autonomous Origin Extraction**: Introduced `probe_ffbb_web_origins` in `ffbb_data_client.utils.web_probe` to dynamically parse Next.js chunks from `www.ffbb.com` and identify operational Directus (`bo.ffbb.com`, `bo.ffbb.app`) and Meilisearch endpoints.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# FFBB API update summary
|
|
2
2
|
|
|
3
|
-
- Timestamp: `2026-10-
|
|
3
|
+
- Timestamp: `2026-10-24T11:44:11.951983+00:00`
|
|
4
4
|
- API base URL: `https://bo.ffbb.com/`
|
|
5
5
|
- Meilisearch base URL: `https://meilisearch-prod.ffbb.app/`
|
|
6
|
-
- OpenAPI version: `
|
|
7
|
-
- OpenAPI SHA256: `
|
|
6
|
+
- OpenAPI version: `4aa55950ce1db53a17db2c04c935dc112989a92c`
|
|
7
|
+
- OpenAPI SHA256: `023cee7b018aed058369ca6757cfa08c823328ebe64f1e055dca22387b862bce`
|
|
8
8
|
|
|
9
9
|
## Directus collections
|
|
10
10
|
- Total: `162`
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
- Removed: None
|
|
23
23
|
|
|
24
24
|
## 🌐 Next.js Web Origin Probe
|
|
25
|
-
- Healthy Directus origins: `https://bo.ffbb.com/`, `https://bo.ffbb.app/`
|
|
26
25
|
- Meilisearch public URL: `https://meilisearch-prod.ffbb.app`
|
|
27
26
|
- Scanned Next.js chunks: 17
|
|
28
27
|
|
|
@@ -329,9 +329,9 @@
|
|
|
329
329
|
"items/youtube_videos_youtube_tags"
|
|
330
330
|
],
|
|
331
331
|
"metadata": {
|
|
332
|
-
"openapi_version": "
|
|
332
|
+
"openapi_version": "4aa55950ce1db53a17db2c04c935dc112989a92c",
|
|
333
333
|
"source": "https://bo.ffbb.com/server/specs/oas",
|
|
334
|
-
"timestamp": "2026-10-
|
|
334
|
+
"timestamp": "2026-10-24T11:44:11.951983+00:00"
|
|
335
335
|
},
|
|
336
336
|
"paths": {
|
|
337
337
|
"items/configuration": [
|
|
@@ -1404,7 +1404,7 @@
|
|
|
1404
1404
|
},
|
|
1405
1405
|
{
|
|
1406
1406
|
"available": true,
|
|
1407
|
-
"estimatedTotalHits":
|
|
1407
|
+
"estimatedTotalHits": 634,
|
|
1408
1408
|
"indexUid": "ffbbnational_pratiques",
|
|
1409
1409
|
"sampleKeys": [
|
|
1410
1410
|
"_geo",
|
|
@@ -1461,7 +1461,7 @@
|
|
|
1461
1461
|
},
|
|
1462
1462
|
{
|
|
1463
1463
|
"available": true,
|
|
1464
|
-
"estimatedTotalHits":
|
|
1464
|
+
"estimatedTotalHits": 4432,
|
|
1465
1465
|
"indexUid": "ffbbnational_rss",
|
|
1466
1466
|
"sampleKeys": [
|
|
1467
1467
|
"categories",
|
|
@@ -1491,7 +1491,7 @@
|
|
|
1491
1491
|
},
|
|
1492
1492
|
{
|
|
1493
1493
|
"available": true,
|
|
1494
|
-
"estimatedTotalHits":
|
|
1494
|
+
"estimatedTotalHits": 3552,
|
|
1495
1495
|
"indexUid": "ffbbserver_competitions",
|
|
1496
1496
|
"sampleKeys": [
|
|
1497
1497
|
"age",
|
|
@@ -1571,7 +1571,7 @@
|
|
|
1571
1571
|
},
|
|
1572
1572
|
{
|
|
1573
1573
|
"available": true,
|
|
1574
|
-
"estimatedTotalHits":
|
|
1574
|
+
"estimatedTotalHits": 122,
|
|
1575
1575
|
"indexUid": "ffbbserver_formations",
|
|
1576
1576
|
"sampleKeys": [
|
|
1577
1577
|
"certification",
|
|
@@ -1734,7 +1734,7 @@
|
|
|
1734
1734
|
},
|
|
1735
1735
|
{
|
|
1736
1736
|
"available": true,
|
|
1737
|
-
"estimatedTotalHits":
|
|
1737
|
+
"estimatedTotalHits": 28,
|
|
1738
1738
|
"indexUid": "ffbbserver_tournois",
|
|
1739
1739
|
"sampleKeys": [
|
|
1740
1740
|
"_geo",
|
|
@@ -1789,7 +1789,7 @@
|
|
|
1789
1789
|
},
|
|
1790
1790
|
{
|
|
1791
1791
|
"available": true,
|
|
1792
|
-
"estimatedTotalHits":
|
|
1792
|
+
"estimatedTotalHits": 6,
|
|
1793
1793
|
"indexUid": "ffbbsite_jobs",
|
|
1794
1794
|
"sampleKeys": [
|
|
1795
1795
|
"asset",
|
|
@@ -1834,7 +1834,7 @@
|
|
|
1834
1834
|
},
|
|
1835
1835
|
{
|
|
1836
1836
|
"available": true,
|
|
1837
|
-
"estimatedTotalHits":
|
|
1837
|
+
"estimatedTotalHits": 6433,
|
|
1838
1838
|
"indexUid": "ffbbsite_news",
|
|
1839
1839
|
"sampleKeys": [
|
|
1840
1840
|
"author",
|
|
@@ -1893,7 +1893,7 @@
|
|
|
1893
1893
|
},
|
|
1894
1894
|
{
|
|
1895
1895
|
"available": true,
|
|
1896
|
-
"estimatedTotalHits":
|
|
1896
|
+
"estimatedTotalHits": 1871,
|
|
1897
1897
|
"indexUid": "youtube_videos",
|
|
1898
1898
|
"sampleKeys": [
|
|
1899
1899
|
"channelId",
|
|
@@ -1926,7 +1926,7 @@
|
|
|
1926
1926
|
],
|
|
1927
1927
|
"metadata": {
|
|
1928
1928
|
"source": "https://meilisearch-prod.ffbb.app/multi-search",
|
|
1929
|
-
"timestamp": "2026-10-
|
|
1929
|
+
"timestamp": "2026-10-24T11:44:11.951983+00:00"
|
|
1930
1930
|
},
|
|
1931
1931
|
"unavailable_indexes": [
|
|
1932
1932
|
{
|
|
@@ -2667,10 +2667,10 @@
|
|
|
2667
2667
|
"api_base_url": "https://bo.ffbb.com/",
|
|
2668
2668
|
"configured_api_base_url": "https://bo.ffbb.com/",
|
|
2669
2669
|
"meilisearch_base_url": "https://meilisearch-prod.ffbb.app/",
|
|
2670
|
-
"openapi_sha256": "
|
|
2671
|
-
"openapi_snapshot_sha256": "
|
|
2672
|
-
"openapi_version": "
|
|
2673
|
-
"timestamp": "2026-10-
|
|
2670
|
+
"openapi_sha256": "023cee7b018aed058369ca6757cfa08c823328ebe64f1e055dca22387b862bce",
|
|
2671
|
+
"openapi_snapshot_sha256": "023cee7b018aed058369ca6757cfa08c823328ebe64f1e055dca22387b862bce",
|
|
2672
|
+
"openapi_version": "4aa55950ce1db53a17db2c04c935dc112989a92c",
|
|
2673
|
+
"timestamp": "2026-10-24T11:44:11.951983+00:00",
|
|
2674
2674
|
"web_probe": {
|
|
2675
2675
|
"all_ffbb_hosts": [
|
|
2676
2676
|
"https://api.ffbb.app",
|
|
@@ -2686,10 +2686,7 @@
|
|
|
2686
2686
|
"https://bo.ffbb.com/",
|
|
2687
2687
|
"https://bo.ffbb.app/"
|
|
2688
2688
|
],
|
|
2689
|
-
"healthy_directus_urls": [
|
|
2690
|
-
"https://bo.ffbb.com/",
|
|
2691
|
-
"https://bo.ffbb.app/"
|
|
2692
|
-
],
|
|
2689
|
+
"healthy_directus_urls": [],
|
|
2693
2690
|
"meilisearch_urls": [
|
|
2694
2691
|
"https://meilisearch-prod.ffbb.app"
|
|
2695
2692
|
],
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"available": true,
|
|
47
|
-
"estimatedTotalHits":
|
|
47
|
+
"estimatedTotalHits": 634,
|
|
48
48
|
"indexUid": "ffbbnational_pratiques",
|
|
49
49
|
"sampleKeys": [
|
|
50
50
|
"_geo",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
"available": true,
|
|
104
|
-
"estimatedTotalHits":
|
|
104
|
+
"estimatedTotalHits": 4432,
|
|
105
105
|
"indexUid": "ffbbnational_rss",
|
|
106
106
|
"sampleKeys": [
|
|
107
107
|
"categories",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"available": true,
|
|
134
|
-
"estimatedTotalHits":
|
|
134
|
+
"estimatedTotalHits": 3552,
|
|
135
135
|
"indexUid": "ffbbserver_competitions",
|
|
136
136
|
"sampleKeys": [
|
|
137
137
|
"age",
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
},
|
|
212
212
|
{
|
|
213
213
|
"available": true,
|
|
214
|
-
"estimatedTotalHits":
|
|
214
|
+
"estimatedTotalHits": 122,
|
|
215
215
|
"indexUid": "ffbbserver_formations",
|
|
216
216
|
"sampleKeys": [
|
|
217
217
|
"certification",
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
376
|
"available": true,
|
|
377
|
-
"estimatedTotalHits":
|
|
377
|
+
"estimatedTotalHits": 28,
|
|
378
378
|
"indexUid": "ffbbserver_tournois",
|
|
379
379
|
"sampleKeys": [
|
|
380
380
|
"_geo",
|
|
@@ -429,7 +429,7 @@
|
|
|
429
429
|
},
|
|
430
430
|
{
|
|
431
431
|
"available": true,
|
|
432
|
-
"estimatedTotalHits":
|
|
432
|
+
"estimatedTotalHits": 6,
|
|
433
433
|
"indexUid": "ffbbsite_jobs",
|
|
434
434
|
"sampleKeys": [
|
|
435
435
|
"asset",
|
|
@@ -474,7 +474,7 @@
|
|
|
474
474
|
},
|
|
475
475
|
{
|
|
476
476
|
"available": true,
|
|
477
|
-
"estimatedTotalHits":
|
|
477
|
+
"estimatedTotalHits": 6433,
|
|
478
478
|
"indexUid": "ffbbsite_news",
|
|
479
479
|
"sampleKeys": [
|
|
480
480
|
"author",
|
|
@@ -533,7 +533,7 @@
|
|
|
533
533
|
},
|
|
534
534
|
{
|
|
535
535
|
"available": true,
|
|
536
|
-
"estimatedTotalHits":
|
|
536
|
+
"estimatedTotalHits": 1871,
|
|
537
537
|
"indexUid": "youtube_videos",
|
|
538
538
|
"sampleKeys": [
|
|
539
539
|
"channelId",
|
|
@@ -566,7 +566,7 @@
|
|
|
566
566
|
],
|
|
567
567
|
"metadata": {
|
|
568
568
|
"source": "https://meilisearch-prod.ffbb.app/multi-search",
|
|
569
|
-
"timestamp": "2026-10-
|
|
569
|
+
"timestamp": "2026-10-24T11:44:11.951983+00:00"
|
|
570
570
|
},
|
|
571
571
|
"unavailable_indexes": [
|
|
572
572
|
{
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# FFBB permission matrix drift — 2026-10-24T11:43:45.501709+00:00
|
|
2
|
+
|
|
3
|
+
- FLIP: competition_archived_direct: forbidden_directus -> blocked_cdn
|
|
4
|
+
- FLIP: competition_archived_filter: empty -> blocked_cdn
|
|
5
|
+
- FLIP: competition_current_direct: ok -> blocked_cdn
|
|
6
|
+
- FLIP: competition_current_filter: ok -> blocked_cdn
|
|
7
|
+
- FLIP: competitions_listing: ok -> blocked_cdn
|
|
8
|
+
- FLIP: config_noauth: ok -> blocked_cdn
|
|
9
|
+
- FLIP: config_noauth_ipv4: ok -> blocked_cdn
|
|
10
|
+
- FLIP: config_noauth_ipv6: error:ConnectError -> blocked_cdn
|
|
11
|
+
- FLIP: config_tripwire_okhttp_ipv4: ok -> blocked_cdn
|
|
12
|
+
- FLIP: engagements_listing: ok -> blocked_cdn
|
|
13
|
+
- FLIP: organismes_listing: ok -> blocked_cdn
|
|
14
|
+
- FLIP: relational_nested_expand: ok -> blocked_cdn
|
|
15
|
+
- FLIP: rencontres_listing: ok -> blocked_cdn
|
|
16
|
+
- FLIP: saisons_id_field: ok -> blocked_cdn
|
|
17
|
+
- FLIP: saisons_nom_field: forbidden_directus -> blocked_cdn
|
|
18
|
+
|
|
19
|
+
Vérifier la politique de rôles Directus (filtres de saison, champs restreints) ou rafraîchir les canaris après un rollover de saison.
|
|
@@ -1,7 +1,83 @@
|
|
|
1
1
|
{
|
|
2
2
|
"drift": {
|
|
3
3
|
"added": [],
|
|
4
|
-
"flips": [
|
|
4
|
+
"flips": [
|
|
5
|
+
{
|
|
6
|
+
"after": "blocked_cdn",
|
|
7
|
+
"before": "forbidden_directus",
|
|
8
|
+
"probe": "competition_archived_direct"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"after": "blocked_cdn",
|
|
12
|
+
"before": "empty",
|
|
13
|
+
"probe": "competition_archived_filter"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"after": "blocked_cdn",
|
|
17
|
+
"before": "ok",
|
|
18
|
+
"probe": "competition_current_direct"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"after": "blocked_cdn",
|
|
22
|
+
"before": "ok",
|
|
23
|
+
"probe": "competition_current_filter"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"after": "blocked_cdn",
|
|
27
|
+
"before": "ok",
|
|
28
|
+
"probe": "competitions_listing"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"after": "blocked_cdn",
|
|
32
|
+
"before": "ok",
|
|
33
|
+
"probe": "config_noauth"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"after": "blocked_cdn",
|
|
37
|
+
"before": "ok",
|
|
38
|
+
"probe": "config_noauth_ipv4"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"after": "blocked_cdn",
|
|
42
|
+
"before": "error:ConnectError",
|
|
43
|
+
"probe": "config_noauth_ipv6"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"after": "blocked_cdn",
|
|
47
|
+
"before": "ok",
|
|
48
|
+
"probe": "config_tripwire_okhttp_ipv4"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"after": "blocked_cdn",
|
|
52
|
+
"before": "ok",
|
|
53
|
+
"probe": "engagements_listing"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"after": "blocked_cdn",
|
|
57
|
+
"before": "ok",
|
|
58
|
+
"probe": "organismes_listing"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"after": "blocked_cdn",
|
|
62
|
+
"before": "ok",
|
|
63
|
+
"probe": "relational_nested_expand"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"after": "blocked_cdn",
|
|
67
|
+
"before": "ok",
|
|
68
|
+
"probe": "rencontres_listing"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"after": "blocked_cdn",
|
|
72
|
+
"before": "ok",
|
|
73
|
+
"probe": "saisons_id_field"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"after": "blocked_cdn",
|
|
77
|
+
"before": "forbidden_directus",
|
|
78
|
+
"probe": "saisons_nom_field"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
5
81
|
"removed": []
|
|
6
82
|
},
|
|
7
83
|
"metadata": {
|
|
@@ -9,115 +85,113 @@
|
|
|
9
85
|
"archived_competition_id": "200000002872733",
|
|
10
86
|
"canary_season": "2026-2027",
|
|
11
87
|
"current_competition_id": "200000002900744",
|
|
12
|
-
"timestamp": "2026-10-
|
|
88
|
+
"timestamp": "2026-10-24T11:43:45.501709+00:00",
|
|
13
89
|
"token_source": "public-fallback"
|
|
14
90
|
},
|
|
15
91
|
"probes": [
|
|
16
92
|
{
|
|
17
93
|
"name": "config_noauth",
|
|
18
94
|
"notes": "Public endpoint sans auth : contrôle BunnyCDN et joignabilité par défaut.",
|
|
19
|
-
"outcome": "
|
|
20
|
-
"status":
|
|
95
|
+
"outcome": "blocked_cdn",
|
|
96
|
+
"status": 403,
|
|
21
97
|
"url": "https://bo.ffbb.com/items/configuration"
|
|
22
98
|
},
|
|
23
99
|
{
|
|
24
100
|
"name": "config_noauth_ipv4",
|
|
25
101
|
"notes": "Public endpoint sans auth en IPv4 strict : détection précoce du blocage WAF BunnyCDN IPv4.",
|
|
26
|
-
"outcome": "
|
|
27
|
-
"status":
|
|
102
|
+
"outcome": "blocked_cdn",
|
|
103
|
+
"status": 403,
|
|
28
104
|
"url": "https://bo.ffbb.com/items/configuration"
|
|
29
105
|
},
|
|
30
106
|
{
|
|
31
|
-
"detail": "[Errno 8] nodename nor servname provided, or not known",
|
|
32
107
|
"name": "config_noauth_ipv6",
|
|
33
108
|
"notes": "Public endpoint sans auth en IPv6 strict.",
|
|
34
|
-
"outcome": "
|
|
35
|
-
"status":
|
|
109
|
+
"outcome": "blocked_cdn",
|
|
110
|
+
"status": 403,
|
|
36
111
|
"url": "https://bo.ffbb.com/items/configuration"
|
|
37
112
|
},
|
|
38
113
|
{
|
|
39
114
|
"name": "config_tripwire_okhttp_ipv4",
|
|
40
115
|
"notes": "Canari sentinelle okhttp sur IPv4 : attendu blocked_cdn (alerte si débloqué ou si la règle change).",
|
|
41
|
-
"outcome": "
|
|
42
|
-
"status":
|
|
116
|
+
"outcome": "blocked_cdn",
|
|
117
|
+
"status": 403,
|
|
43
118
|
"url": "https://bo.ffbb.com/items/configuration"
|
|
44
119
|
},
|
|
45
120
|
{
|
|
46
121
|
"name": "saisons_id_field",
|
|
47
122
|
"notes": "Champ contrôle, attendu ok.",
|
|
48
|
-
"outcome": "
|
|
49
|
-
"status":
|
|
123
|
+
"outcome": "blocked_cdn",
|
|
124
|
+
"status": 403,
|
|
50
125
|
"url": "https://bo.ffbb.com/items/ffbbserver_saisons?fields%5B%5D=id&limit=1"
|
|
51
126
|
},
|
|
52
127
|
{
|
|
53
128
|
"name": "saisons_nom_field",
|
|
54
129
|
"notes": "Champ restreint depuis sept 2026 : 403 Directus attendu.",
|
|
55
|
-
"outcome": "
|
|
130
|
+
"outcome": "blocked_cdn",
|
|
56
131
|
"status": 403,
|
|
57
132
|
"url": "https://bo.ffbb.com/items/ffbbserver_saisons?fields%5B%5D=nom&limit=1"
|
|
58
133
|
},
|
|
59
134
|
{
|
|
60
135
|
"name": "competitions_listing",
|
|
61
136
|
"notes": "Listing contrôle, attendu ok.",
|
|
62
|
-
"outcome": "
|
|
63
|
-
"status":
|
|
137
|
+
"outcome": "blocked_cdn",
|
|
138
|
+
"status": 403,
|
|
64
139
|
"url": "https://bo.ffbb.com/items/ffbbserver_competitions?limit=1"
|
|
65
140
|
},
|
|
66
141
|
{
|
|
67
142
|
"name": "organismes_listing",
|
|
68
143
|
"notes": "Listing contrôle, attendu ok.",
|
|
69
|
-
"outcome": "
|
|
70
|
-
"status":
|
|
144
|
+
"outcome": "blocked_cdn",
|
|
145
|
+
"status": 403,
|
|
71
146
|
"url": "https://bo.ffbb.com/items/ffbbserver_organismes?limit=1"
|
|
72
147
|
},
|
|
73
148
|
{
|
|
74
149
|
"name": "rencontres_listing",
|
|
75
150
|
"notes": "Listing contrôle, attendu ok.",
|
|
76
|
-
"outcome": "
|
|
77
|
-
"status":
|
|
151
|
+
"outcome": "blocked_cdn",
|
|
152
|
+
"status": 403,
|
|
78
153
|
"url": "https://bo.ffbb.com/items/ffbbserver_rencontres?limit=1"
|
|
79
154
|
},
|
|
80
155
|
{
|
|
81
156
|
"name": "engagements_listing",
|
|
82
157
|
"notes": "Listing contrôle, attendu ok.",
|
|
83
|
-
"outcome": "
|
|
84
|
-
"status":
|
|
158
|
+
"outcome": "blocked_cdn",
|
|
159
|
+
"status": 403,
|
|
85
160
|
"url": "https://bo.ffbb.com/items/ffbbserver_engagements?limit=1"
|
|
86
161
|
},
|
|
87
162
|
{
|
|
88
163
|
"name": "competition_current_direct",
|
|
89
164
|
"notes": "Canari saison 2026-2027 : auto-rafraîchissable sur rollover. Un flip ici signale un canari périmé, pas forcément un changement de politique.",
|
|
90
|
-
"outcome": "
|
|
91
|
-
"status":
|
|
165
|
+
"outcome": "blocked_cdn",
|
|
166
|
+
"status": 403,
|
|
92
167
|
"url": "https://bo.ffbb.com/items/ffbbserver_competitions/200000002900744"
|
|
93
168
|
},
|
|
94
169
|
{
|
|
95
170
|
"name": "relational_nested_expand",
|
|
96
171
|
"notes": "Jointure relationnelle multi-niveaux Directus (rencontre->poule->competition->organisateur).",
|
|
97
|
-
"outcome": "
|
|
98
|
-
"status":
|
|
172
|
+
"outcome": "blocked_cdn",
|
|
173
|
+
"status": 403,
|
|
99
174
|
"url": "https://bo.ffbb.com/items/ffbbserver_rencontres?fields%5B%5D=id&fields%5B%5D=numero&fields%5B%5D=idPoule.id&fields%5B%5D=idPoule.nom&fields%5B%5D=idPoule.id_competition.id&fields%5B%5D=idPoule.id_competition.organisateur.code&limit=1&sort=-id"
|
|
100
175
|
},
|
|
101
176
|
{
|
|
102
177
|
"name": "competition_current_filter",
|
|
103
178
|
"notes": "Filtre sur saison courante, attendu ok non vide.",
|
|
104
|
-
"outcome": "
|
|
105
|
-
"status":
|
|
179
|
+
"outcome": "blocked_cdn",
|
|
180
|
+
"status": 403,
|
|
106
181
|
"url": "https://bo.ffbb.com/items/ffbbserver_competitions?filter%5Bid%5D%5B_eq%5D=200000002900744&limit=1"
|
|
107
182
|
},
|
|
108
183
|
{
|
|
109
184
|
"name": "competition_archived_direct",
|
|
110
185
|
"notes": "Saison archivée : 403 Directus attendu sur accès direct.",
|
|
111
|
-
"outcome": "
|
|
186
|
+
"outcome": "blocked_cdn",
|
|
112
187
|
"status": 403,
|
|
113
188
|
"url": "https://bo.ffbb.com/items/ffbbserver_competitions/200000002872733"
|
|
114
189
|
},
|
|
115
190
|
{
|
|
116
|
-
"content_type": "application/json; charset=utf-8",
|
|
117
191
|
"name": "competition_archived_filter",
|
|
118
192
|
"notes": "Filtre sur archivé : 200 vide attendu (pas une erreur HTTP).",
|
|
119
|
-
"outcome": "
|
|
120
|
-
"status":
|
|
193
|
+
"outcome": "blocked_cdn",
|
|
194
|
+
"status": 403,
|
|
121
195
|
"url": "https://bo.ffbb.com/items/ffbbserver_competitions?filter%5Bid%5D%5B_eq%5D=200000002872733&limit=1"
|
|
122
196
|
}
|
|
123
197
|
]
|