ffbb-data-client 2.4.36__tar.gz → 2.4.38__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/CHANGELOG.md +24 -0
  2. {ffbb_data_client-2.4.36/src/ffbb_data_client.egg-info → ffbb_data_client-2.4.38}/PKG-INFO +18 -3
  3. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/README.md +17 -2
  4. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/RELEASE_NOTES.md +26 -0
  5. ffbb_data_client-2.4.38/data/api_update_summary.md +29 -0
  6. {ffbb_data_client-2.4.36/src/ffbb_data_client → ffbb_data_client-2.4.38}/data/collections.json +3 -3
  7. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/endpoint_discovery.json +45 -17
  8. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/indexes.json +9 -9
  9. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/openapi.json +2 -2
  10. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/openapi_full.json +2 -2
  11. ffbb_data_client-2.4.38/data/permission_drift_summary.md +3 -0
  12. {ffbb_data_client-2.4.36/src/ffbb_data_client → ffbb_data_client-2.4.38}/data/permission_matrix.json +23 -26
  13. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/data_dictionary.rst +8 -8
  14. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/scripts/discover_endpoints.py +79 -7
  15. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/api_ffbb_app_client.py +1 -1
  16. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/config.py +3 -1
  17. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38/src/ffbb_data_client}/data/collections.json +3 -3
  18. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/data/endpoint_discovery.json +45 -17
  19. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/data/indexes.json +9 -9
  20. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/data/openapi.json +2 -2
  21. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38/src/ffbb_data_client}/data/permission_matrix.json +23 -26
  22. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/helpers/http_requests_utils.py +4 -23
  23. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/__init__.py +2 -0
  24. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/retry_utils.py +2 -0
  25. ffbb_data_client-2.4.38/src/ffbb_data_client/utils/token_manager.py +259 -0
  26. ffbb_data_client-2.4.38/src/ffbb_data_client/utils/web_probe.py +154 -0
  27. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38/src/ffbb_data_client.egg-info}/PKG-INFO +18 -3
  28. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client.egg-info/SOURCES.txt +2 -0
  29. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client.egg-info/scm_file_list.json +2 -0
  30. ffbb_data_client-2.4.38/src/ffbb_data_client.egg-info/scm_version.json +8 -0
  31. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_201_unit_tests_core.py +1 -1
  32. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_async_methods.py +2 -2
  33. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_v3_new_features.py +4 -4
  34. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_v4_aiter_and_contacts.py +3 -3
  35. ffbb_data_client-2.4.38/tests/unit/utils/test_web_probe.py +66 -0
  36. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/index.html +4 -4
  37. ffbb_data_client-2.4.36/data/api_update_summary.md +0 -28
  38. ffbb_data_client-2.4.36/data/permission_drift_summary.md +0 -7
  39. ffbb_data_client-2.4.36/src/ffbb_data_client/utils/token_manager.py +0 -194
  40. ffbb_data_client-2.4.36/src/ffbb_data_client.egg-info/scm_version.json +0 -8
  41. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.agents/rules/antigravity-rtk-rules.md +0 -0
  42. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.coveragerc +0 -0
  43. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.gitattributes +0 -0
  44. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/FUNDING.yml +0 -0
  45. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  46. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  47. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  48. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/dependabot.yml +0 -0
  49. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/scripts/check_wrapper_parity.py +0 -0
  50. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/check_wrapper_parity.yml +0 -0
  51. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/ci.yml +0 -0
  52. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/codeql.yml +0 -0
  53. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/dependabot-automerge.yml +0 -0
  54. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/deploy-pages.yml +0 -0
  55. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
  56. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/publish.yml +0 -0
  57. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/release-after-discovery-merge.yml +0 -0
  58. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
  59. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.gitignore +0 -0
  60. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.isort.cfg +0 -0
  61. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.jules/bolt.md +0 -0
  62. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.omc/skills/codeql-security-hardening-expertise.md +0 -0
  63. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.omc/skills/pypi-immutable-release-workflow.md +0 -0
  64. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.omc/skills/terminal-output-hygiene-expertise.md +0 -0
  65. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.pre-commit-config.yaml +0 -0
  66. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/.readthedocs.yml +0 -0
  67. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/AGENTS.md +0 -0
  68. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/AUTHORS.rst +0 -0
  69. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/CODE_OF_CONDUCT.md +0 -0
  70. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/CONTRIBUTING.rst +0 -0
  71. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/DESIGN.md +0 -0
  72. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/Dockerfile +0 -0
  73. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/LICENSE.txt +0 -0
  74. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/LOCAL_CI_GUIDE.md +0 -0
  75. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/SECURITY.md +0 -0
  76. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/api.ffbb.app.json +0 -0
  77. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/field_dictionary.json +0 -0
  78. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/meilisearch-prod.ffbb.app.json +0 -0
  79. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/data/type_discovery_corrections.json +0 -0
  80. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/Makefile +0 -0
  81. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/_static/.gitignore +0 -0
  82. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/architecture.rst +0 -0
  83. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/authors.rst +0 -0
  84. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/changelog.rst +0 -0
  85. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/conf.py +0 -0
  86. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/contributing.rst +0 -0
  87. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/examples.rst +0 -0
  88. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/index.rst +0 -0
  89. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/license.rst +0 -0
  90. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/migration.rst +0 -0
  91. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/readme.rst +0 -0
  92. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/requirements.txt +0 -0
  93. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/test_strategy.md +0 -0
  94. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/docs/testing_conventions.md +0 -0
  95. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/examples/README.md +0 -0
  96. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/examples/complete_usage_example.py +0 -0
  97. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/examples/quick_start.py +0 -0
  98. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/examples/team_ranking_analysis.py +0 -0
  99. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/pyproject.toml +0 -0
  100. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/run-ci-locally.sh +0 -0
  101. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/scripts/benchmark_concurrent_pagination.py +0 -0
  102. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/scripts/benchmark_search_organisme.py +0 -0
  103. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/scripts/discover_permissions.py +0 -0
  104. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/scripts/discover_types.py +0 -0
  105. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/setup.cfg +0 -0
  106. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/setup.py +0 -0
  107. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/__init__.py +0 -0
  108. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/api.py +0 -0
  109. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/__init__.py +0 -0
  110. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_helpers.py +0 -0
  111. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
  112. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_mixins/competition.py +0 -0
  113. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
  114. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
  115. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
  116. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_mixins/organisme.py +0 -0
  117. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_rest_facade.py +0 -0
  118. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/_search_facade.py +0 -0
  119. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
  120. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
  121. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
  122. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/data/__init__.py +0 -0
  123. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/data/field_dictionary.json +0 -0
  124. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/exceptions.py +0 -0
  125. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/helpers/__init__.py +0 -0
  126. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
  127. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
  128. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
  129. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/helpers/normalization.py +0 -0
  130. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/__init__.py +0 -0
  131. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/affiche.py +0 -0
  132. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/cartographie.py +0 -0
  133. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/categorie.py +0 -0
  134. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/categorie_type.py +0 -0
  135. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/clock.py +0 -0
  136. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/club_contacts.py +0 -0
  137. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/code.py +0 -0
  138. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/commune.py +0 -0
  139. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_fields.py +0 -0
  140. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_id.py +0 -0
  141. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
  142. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
  143. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
  144. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
  145. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_origine.py +0 -0
  146. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
  147. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
  148. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
  149. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competition_type.py +0 -0
  150. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
  151. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
  152. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competitions_hit.py +0 -0
  153. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
  154. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/competitions_query.py +0 -0
  155. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/configuration_models.py +0 -0
  156. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/contact_info.py +0 -0
  157. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
  158. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/coordonnees.py +0 -0
  159. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
  160. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/document_flyer.py +0 -0
  161. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
  162. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
  163. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
  164. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
  165. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/engagements_hit.py +0 -0
  166. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
  167. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/etat.py +0 -0
  168. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/external_competition_id.py +0 -0
  169. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/external_id.py +0 -0
  170. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/facet_distribution.py +0 -0
  171. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/facet_stats.py +0 -0
  172. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/field_set.py +0 -0
  173. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/folder.py +0 -0
  174. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/formation_session.py +0 -0
  175. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
  176. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
  177. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/formations_hit.py +0 -0
  178. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
  179. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/game_stats_model.py +0 -0
  180. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/game_stats_models.py +0 -0
  181. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/generic_search.py +0 -0
  182. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/geo.py +0 -0
  183. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
  184. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_commune_response.py +0 -0
  185. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_competition_response.py +0 -0
  186. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
  187. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
  188. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
  189. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_formation_response.py +0 -0
  190. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
  191. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
  192. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_poule_response.py +0 -0
  193. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
  194. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
  195. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
  196. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_salle_response.py +0 -0
  197. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
  198. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
  199. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/gradient_color.py +0 -0
  200. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/hit.py +0 -0
  201. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
  202. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
  203. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
  204. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/id_poule.py +0 -0
  205. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/jour.py +0 -0
  206. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/label.py +0 -0
  207. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/labellisation.py +0 -0
  208. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/live.py +0 -0
  209. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/lives.py +0 -0
  210. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/logo.py +0 -0
  211. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
  212. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_query.py +0 -0
  213. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
  214. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
  215. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
  216. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
  217. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
  218. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
  219. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
  220. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
  221. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
  222. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_results.py +0 -0
  223. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
  224. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/nature_sol.py +0 -0
  225. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/niveau.py +0 -0
  226. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/niveau_class.py +0 -0
  227. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
  228. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/niveau_info.py +0 -0
  229. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/niveau_models.py +0 -0
  230. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/niveau_type.py +0 -0
  231. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/objectif.py +0 -0
  232. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organisateur.py +0 -0
  233. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organisateur_type.py +0 -0
  234. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organisme_fields.py +0 -0
  235. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
  236. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
  237. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
  238. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organismes_hit.py +0 -0
  239. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
  240. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/organismes_query.py +0 -0
  241. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/phase_code.py +0 -0
  242. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/poule.py +0 -0
  243. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/poule_fields.py +0 -0
  244. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
  245. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/poules_models.py +0 -0
  246. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/poules_query.py +0 -0
  247. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratique.py +0 -0
  248. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
  249. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
  250. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
  251. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
  252. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
  253. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
  254. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/publication_internet.py +0 -0
  255. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/purple_logo.py +0 -0
  256. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
  257. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
  258. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/rankings_models.py +0 -0
  259. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
  260. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
  261. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
  262. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
  263. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
  264. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/saison.py +0 -0
  265. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/saison_fields.py +0 -0
  266. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/saisons_models.py +0 -0
  267. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/saisons_query.py +0 -0
  268. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/salle.py +0 -0
  269. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
  270. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
  271. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/salles_hit.py +0 -0
  272. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
  273. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/sexe.py +0 -0
  274. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/sexe_class.py +0 -0
  275. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/source.py +0 -0
  276. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/status.py +0 -0
  277. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/team_engagement.py +0 -0
  278. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/team_ranking.py +0 -0
  279. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
  280. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
  281. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
  282. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_hit.py +0 -0
  283. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
  284. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_name.py +0 -0
  285. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
  286. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/terrains_storage.py +0 -0
  287. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
  288. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
  289. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
  290. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
  291. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
  292. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
  293. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
  294. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournois_hit.py +0 -0
  295. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
  296. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
  297. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
  298. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_association.py +0 -0
  299. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
  300. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_class.py +0 -0
  301. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_competition.py +0 -0
  302. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
  303. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_enum.py +0 -0
  304. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/models/type_league.py +0 -0
  305. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/py.typed +0 -0
  306. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/cache_manager.py +0 -0
  307. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
  308. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/converter_utils.py +0 -0
  309. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/input_validation.py +0 -0
  310. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client/utils/secure_logging.py +0 -0
  311. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
  312. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
  313. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client.egg-info/requires.txt +0 -0
  314. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
  315. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/conftest.py +0 -0
  316. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/e2e/__init__.py +0 -0
  317. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/e2e/conftest.py +0 -0
  318. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/__init__.py +0 -0
  319. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/conftest.py +0 -0
  320. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_500_user_journey.py +0 -0
  321. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_501_user_journey_v3.py +0 -0
  322. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_502_enhanced_integration.py +0 -0
  323. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_503_secure_logging.py +0 -0
  324. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_504_input_validation.py +0 -0
  325. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_505_retry_timeout.py +0 -0
  326. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
  327. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/__init__.py +0 -0
  328. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/__init__.py +0 -0
  329. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
  330. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
  331. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
  332. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
  333. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
  334. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
  335. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
  336. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
  337. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
  338. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
  339. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_api_optimizations.py +0 -0
  340. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_meilisearch_async.py +0 -0
  341. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_search_many.py +0 -0
  342. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_v2_backport_search.py +0 -0
  343. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/clients/test_warm_cache.py +0 -0
  344. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/conftest.py +0 -0
  345. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/helpers/__init__.py +0 -0
  346. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/helpers/test_400_http_helpers.py +0 -0
  347. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
  348. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
  349. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/helpers/test_normalization.py +0 -0
  350. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/__init__.py +0 -0
  351. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
  352. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
  353. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
  354. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
  355. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
  356. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
  357. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_106_competition_origine.py +0 -0
  358. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
  359. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
  360. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
  361. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_110_labellisation.py +0 -0
  362. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_111_niveau_class.py +0 -0
  363. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_112_purple_logo.py +0 -0
  364. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_113_salle.py +0 -0
  365. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
  366. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_115_type_association_libelle.py +0 -0
  367. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_116_type_competition_generique.py +0 -0
  368. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_117_organisateur.py +0 -0
  369. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_118_competition_id.py +0 -0
  370. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
  371. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
  372. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
  373. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_122_coverage_gaps.py +0 -0
  374. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_123_missing_coverage.py +0 -0
  375. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_123_v2_backport.py +0 -0
  376. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
  377. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/models/test_dx_aliases.py +0 -0
  378. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/test_310_discover_endpoints.py +0 -0
  379. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/test_311_normalize_team_name.py +0 -0
  380. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/test_312_api_cors.py +0 -0
  381. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/test_313_api_metrics.py +0 -0
  382. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/test_314_api_endpoints.py +0 -0
  383. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/test_314_discover_permissions.py +0 -0
  384. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/__init__.py +0 -0
  385. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_300_secure_logging.py +0 -0
  386. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_301_input_validation.py +0 -0
  387. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_302_retry_utils.py +0 -0
  388. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_303_cache_manager.py +0 -0
  389. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_304_config.py +0 -0
  390. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_305_token_manager.py +0 -0
  391. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_306_converter_utils.py +0 -0
  392. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
  393. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
  394. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
  395. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tools/update_agents_md.py +0 -0
  396. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/tox.ini +0 -0
  397. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/assets/apple-touch-icon.png +0 -0
  398. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/assets/favicon-192x192.png +0 -0
  399. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/assets/favicon-48x48.png +0 -0
  400. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/assets/favicon-96x96.png +0 -0
  401. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/assets/favicon.ico +0 -0
  402. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/assets/logo.webp +0 -0
  403. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/css/style.css +0 -0
  404. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/favicon.ico +0 -0
  405. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/llms-full.txt +0 -0
  406. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/llms.txt +0 -0
  407. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/robots.txt +0 -0
  408. {ffbb_data_client-2.4.36 → ffbb_data_client-2.4.38}/website/sitemap.xml +0 -0
@@ -7,6 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.4.38] - 2026-10-14
11
+
12
+ ### Features & Discovery
13
+ - **Live Next.js Bundle Probing**: Ajout du module `web_probe.py` (`probe_ffbb_web_origins`) pour inspecter automatiquement les bundles Next.js de `https://www.ffbb.com` et auto-découvrir les URLs Directus, Meilisearch et statics en production.
14
+ - **Discovery Artefacts Refresh**: Actualisation complète des définitions d'endpoints et types depuis `bo.ffbb.com`.
15
+
16
+ ### Security & Hardening (CodeQL)
17
+ - **Elimination of Cyclic Imports (CodeQL #19)**: Rupture du cycle d'importation entre `helpers.http_requests_utils` et `utils.token_manager` en réutilisant `_is_bunnycdn_block` de `utils.retry_utils`.
18
+ - **Defensive Error Handling (CodeQL #66 & #67)**: Ajout de commentaires explicatifs documentant l'ignorance intentionnelle d'exceptions sur payloads partiels ou mocks dans `_is_bunnycdn_block`.
19
+ - **Directus Origin Invariant**: Retrait définitif du fallback résiduel `https://api.ffbb.app/` dans `TokenManager._fetch_configuration`.
20
+
21
+ ### Documentation & Website
22
+ - **Website Metadata Alignment**: Synchronisation de `softwareVersion` et des liens PyPI vers la version `v2.4.38` sur le site officiel.
23
+
24
+
25
+ ## [2.4.37] - 2026-10-13
26
+
27
+ ### Architecture & Resilience (Directus Production bo.ffbb.com & Multi-Mirror Failover)
28
+ - **Directus bo.ffbb.com Migration**: Bascule de l'origine Directus par defaut de `https://api.ffbb.app/` vers `https://bo.ffbb.com/` (et fallback miroir `https://bo.ffbb.app/`), eliminant definitivement le blocage HTTP 403 Forbidden cause par le verrouillage CDN de l'ancienne pullzone BunnyCDN (5204911).
29
+ - **Multi-Mirror Dynamic Failover**: Mecanisme de fallback automatique entre serveurs miroirs en cas d'indisponibilite ou d'erreur reseau temporaire.
30
+ - **Environment Variables Overrides**: Prise en compte de `API_FFBB_BASE_URL` et `FFBB_USER_AGENT` pour surcharger la configuration reseau sans modifier le code client.
31
+ - **Sync & Async Transport Parity**: Alignement rigoureux des transports `httpx.Client` et `httpx.AsyncClient` sur la configuration proxy d'environnement (`HTTP_PROXY`, `HTTPS_PROXY`).
32
+
33
+
10
34
  ## [2.4.35] - 2026-10-10
11
35
 
12
36
  ### Fixes & Resilience (BunnyCDN WAF Fallback & Async Retries)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffbb-data-client
3
- Version: 2.4.36
3
+ Version: 2.4.38
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
@@ -103,7 +103,7 @@ Dynamic: license-file
103
103
 
104
104
  | Fonctionnalité | Ancien client (`ffbb-api-client`) | **`ffbb-data-client` (v2.4+)** |
105
105
  | :--- | :---: | :---: |
106
- | **Bypass WAF BunnyCDN** (anti-403) | ❌ Bloqué en 403 Forbidden | ✅ **Garanti (okhttp/4.12.0 emulated)** |
106
+ | **Origine Directus & Anti-403** | ❌ Bloqué en 403 Forbidden (BunnyCDN) | ✅ **Origine directe `bo.ffbb.com` + multi-miroirs** |
107
107
  | **Architecture Asynchrone Native** | ❌ 100% bloquant / synchrone | ✅ **Async native (`async/await` + `aiter`)** |
108
108
  | **Modèles de Données & Typage** | ❌ Dictionnaires bruts sans type | ✅ **Dataclasses & Pydantic v2 validés** |
109
109
  | **Recherche Meilisearch Instantanée** | ❌ Partielle ou absente | ✅ **Multi-index (Clubs, Salles, Poules, 3x3)** |
@@ -341,13 +341,28 @@ Accédez ensuite à la documentation Swagger interactive sur `http://localhost:8
341
341
 
342
342
  ## 🛠️ Robustesse, CI/CD & Découverte Quotidienne
343
343
 
344
- * **Protection BunnyCDN** : User-Agent garanti `okhttp/4.12.0` pour éviter tout blocage WAF 403.
344
+ * **Origine Directus & Anti-403** : Bascule native vers l'origine Directus `https://bo.ffbb.com/` (et fallback miroir `https://bo.ffbb.app/`) avec User-Agent mobile Safari authentique, éliminant définitivement les erreurs 403 Forbidden de l'ancienne pullzone BunnyCDN.
345
+ * **Auto-Résolution des Tokens** : Découverte et rotation dynamiques des jetons Bearer Directus et Meilisearch sans configuration requise.
345
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.
346
347
  * **Cache Intelligent Sécurisé** : Gestionnaire de cache HTTP `hishel` avec SQLite distinct pour les flux synchrones et asynchrones.
347
348
  * **CodeQL & Zéro Dette** : Conformité aux normes de sécurité, zéro alerte d'injection de log, 100% typé.
348
349
 
349
350
  ---
350
351
 
352
+ ## ⚙️ Configuration & Variables d'Environnement
353
+
354
+ Le SDK fonctionne instantanément sans configuration. Des variables d'environnement permettent de surcharger les comportements réseaux si nécessaire :
355
+
356
+ | Variable | Description | Valeur par défaut |
357
+ | :--- | :--- | :--- |
358
+ | `API_FFBB_BASE_URL` | URL de base du backend Directus | `https://bo.ffbb.com/` |
359
+ | `FFBB_USER_AGENT` | En-tête User-Agent transmis aux requêtes | iOS Safari Mobile |
360
+ | `API_FFBB_APP_BEARER_TOKEN` | Jeton Directus explicite (override l'auto-résolution) | Auto-résolu dynamiquement |
361
+ | `MEILISEARCH_BEARER_TOKEN` | Jeton Meilisearch explicite (override l'auto-résolution) | Auto-résolu dynamiquement |
362
+ | `HTTP_PROXY` / `HTTPS_PROXY` | Proxy HTTP/HTTPS sortant (ex: swarm / environnement conteneurisé) | Aucun |
363
+
364
+ ---
365
+
351
366
  ## 🤝 Contribuer
352
367
 
353
368
  Les contributions, signalements de bugs et suggestions sont les bienvenus !
@@ -47,7 +47,7 @@
47
47
 
48
48
  | Fonctionnalité | Ancien client (`ffbb-api-client`) | **`ffbb-data-client` (v2.4+)** |
49
49
  | :--- | :---: | :---: |
50
- | **Bypass WAF BunnyCDN** (anti-403) | ❌ Bloqué en 403 Forbidden | ✅ **Garanti (okhttp/4.12.0 emulated)** |
50
+ | **Origine Directus & Anti-403** | ❌ Bloqué en 403 Forbidden (BunnyCDN) | ✅ **Origine directe `bo.ffbb.com` + multi-miroirs** |
51
51
  | **Architecture Asynchrone Native** | ❌ 100% bloquant / synchrone | ✅ **Async native (`async/await` + `aiter`)** |
52
52
  | **Modèles de Données & Typage** | ❌ Dictionnaires bruts sans type | ✅ **Dataclasses & Pydantic v2 validés** |
53
53
  | **Recherche Meilisearch Instantanée** | ❌ Partielle ou absente | ✅ **Multi-index (Clubs, Salles, Poules, 3x3)** |
@@ -285,13 +285,28 @@ Accédez ensuite à la documentation Swagger interactive sur `http://localhost:8
285
285
 
286
286
  ## 🛠️ Robustesse, CI/CD & Découverte Quotidienne
287
287
 
288
- * **Protection BunnyCDN** : User-Agent garanti `okhttp/4.12.0` pour éviter tout blocage WAF 403.
288
+ * **Origine Directus & Anti-403** : Bascule native vers l'origine Directus `https://bo.ffbb.com/` (et fallback miroir `https://bo.ffbb.app/`) avec User-Agent mobile Safari authentique, éliminant définitivement les erreurs 403 Forbidden de l'ancienne pullzone BunnyCDN.
289
+ * **Auto-Résolution des Tokens** : Découverte et rotation dynamiques des jetons Bearer Directus et Meilisearch sans configuration requise.
289
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.
290
291
  * **Cache Intelligent Sécurisé** : Gestionnaire de cache HTTP `hishel` avec SQLite distinct pour les flux synchrones et asynchrones.
291
292
  * **CodeQL & Zéro Dette** : Conformité aux normes de sécurité, zéro alerte d'injection de log, 100% typé.
292
293
 
293
294
  ---
294
295
 
296
+ ## ⚙️ Configuration & Variables d'Environnement
297
+
298
+ Le SDK fonctionne instantanément sans configuration. Des variables d'environnement permettent de surcharger les comportements réseaux si nécessaire :
299
+
300
+ | Variable | Description | Valeur par défaut |
301
+ | :--- | :--- | :--- |
302
+ | `API_FFBB_BASE_URL` | URL de base du backend Directus | `https://bo.ffbb.com/` |
303
+ | `FFBB_USER_AGENT` | En-tête User-Agent transmis aux requêtes | iOS Safari Mobile |
304
+ | `API_FFBB_APP_BEARER_TOKEN` | Jeton Directus explicite (override l'auto-résolution) | Auto-résolu dynamiquement |
305
+ | `MEILISEARCH_BEARER_TOKEN` | Jeton Meilisearch explicite (override l'auto-résolution) | Auto-résolu dynamiquement |
306
+ | `HTTP_PROXY` / `HTTPS_PROXY` | Proxy HTTP/HTTPS sortant (ex: swarm / environnement conteneurisé) | Aucun |
307
+
308
+ ---
309
+
295
310
  ## 🤝 Contribuer
296
311
 
297
312
  Les contributions, signalements de bugs et suggestions sont les bienvenus !
@@ -1,5 +1,31 @@
1
1
  # Release Notes - FFBB Data Client
2
2
 
3
+ ## Version 2.4.38 (Latest Release)
4
+
5
+ ### 🚀 Live Next.js Bundle Probing & Automatic Origin Discovery
6
+ - **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.
7
+ - **Discovery Refresh**: Synchronized live API endpoint specifications and models with Directus production back-office.
8
+
9
+ ### 🔒 CodeQL Security & Zero-Cycle Architecture
10
+ - **Cyclic Import Elimination (CodeQL #19)**: Decoupled `TokenManager` from `http_requests_utils`, ensuring a strictly hierarchical utility architecture.
11
+ - **Empty-Except Documentation (CodeQL #66 & #67)**: Clarified defensive boundary inspection in WAF detection logic.
12
+ - **Zero BunnyCDN Fallback**: Completely expunged deprecated `api.ffbb.app` host references from configuration resolution.
13
+
14
+ ### 🌐 Official Website & Metadata Sync
15
+ - Synced `softwareVersion` and documentation links to v2.4.38.
16
+
17
+ ---
18
+
19
+ ## Version 2.4.37
20
+
21
+ ### 🚀 Directus Production Origin (`bo.ffbb.com`) & Multi-Mirror Failover
22
+ - **Definitive 403 Elimination**: Switched Directus base origin from deprecated `https://api.ffbb.app/` to `https://bo.ffbb.com/` (with automatic failover to `https://bo.ffbb.app/`), bypassing all BunnyCDN WAF 403 Forbidden lockouts.
23
+ - **Dynamic Mirror Resolution**: Transparent fallback mechanism across official backend mirrors on transient failures.
24
+ - **Environment Configuration**: Added first-class support for `API_FFBB_BASE_URL`, `FFBB_USER_AGENT`, `HTTP_PROXY`, and `HTTPS_PROXY`.
25
+ - **Egress & Proxy Alignment**: Synchronized environment proxy detection between sync (`hishel`) and async transports.
26
+
27
+ ---
28
+
3
29
  ## Version 2.4.6 (Latest Release)
4
30
 
5
31
  ### 🚀 FastAPI Lifespan & Connection Cleanup
@@ -0,0 +1,29 @@
1
+ # FFBB API update summary
2
+
3
+ - Timestamp: `2026-10-13T12:17:56.973628+00:00`
4
+ - API base URL: `https://bo.ffbb.com/`
5
+ - Meilisearch base URL: `https://meilisearch-prod.ffbb.app/`
6
+ - OpenAPI version: `d7c8f0b3195fb0535eabd9d05c510a002d838c9a`
7
+ - OpenAPI SHA256: `845c3e397ddc6d238069f38b23b08438893470c106a22c3292508fd7eb8c8188`
8
+
9
+ ## Directus collections
10
+ - Total: `162`
11
+ - Added: None
12
+ - Removed: None
13
+
14
+ ## OpenAPI paths (items, assets, files)
15
+ - Total: `327`
16
+ - Added: None
17
+ - Removed: None
18
+
19
+ ## Meilisearch indexes
20
+ - Available total: `17`
21
+ - Added: None
22
+ - Removed: None
23
+
24
+ ## 🌐 Next.js Web Origin Probe
25
+ - Healthy Directus origins: `https://bo.ffbb.com/`, `https://bo.ffbb.app/`
26
+ - Meilisearch public URL: `https://meilisearch-prod.ffbb.app`
27
+ - Scanned Next.js chunks: 17
28
+
29
+ Generated by `python scripts/discover_endpoints.py`.
@@ -328,9 +328,9 @@
328
328
  "items/youtube_videos_youtube_tags"
329
329
  ],
330
330
  "metadata": {
331
- "openapi_version": "e5f76d83e876077e80ab344bbb4fc03606f63ca4",
332
- "source": "https://api.ffbb.app/server/specs/oas",
333
- "timestamp": "2026-08-10T19:59:19.080946+00:00"
331
+ "openapi_version": "4aa55950ce1db53a17db2c04c935dc112989a92c",
332
+ "source": "https://bo.ffbb.com/server/specs/oas",
333
+ "timestamp": "2026-10-13T12:09:11.118613+00:00"
334
334
  },
335
335
  "paths": {
336
336
  "items/configuration": [
@@ -329,9 +329,9 @@
329
329
  "items/youtube_videos_youtube_tags"
330
330
  ],
331
331
  "metadata": {
332
- "openapi_version": "dcd2ad0fff6086cb91ea14bdd4782bc9ba343b5f",
333
- "source": "https://api.ffbb.app/server/specs/oas",
334
- "timestamp": "2026-10-01T07:34:29.224713+00:00"
332
+ "openapi_version": "d7c8f0b3195fb0535eabd9d05c510a002d838c9a",
333
+ "source": "https://bo.ffbb.com/server/specs/oas",
334
+ "timestamp": "2026-10-13T12:17:56.973628+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": 549,
1407
+ "estimatedTotalHits": 604,
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": 4329,
1464
+ "estimatedTotalHits": 4390,
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": 2994,
1494
+ "estimatedTotalHits": 3185,
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": 150,
1574
+ "estimatedTotalHits": 145,
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": 16,
1737
+ "estimatedTotalHits": 31,
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": 4,
1792
+ "estimatedTotalHits": 5,
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": 6332,
1837
+ "estimatedTotalHits": 6393,
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": 1863,
1896
+ "estimatedTotalHits": 1870,
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-01T07:34:29.224713+00:00"
1929
+ "timestamp": "2026-10-13T12:17:56.973628+00:00"
1930
1930
  },
1931
1931
  "unavailable_indexes": [
1932
1932
  {
@@ -2664,11 +2664,39 @@
2664
2664
  ]
2665
2665
  },
2666
2666
  "metadata": {
2667
- "api_base_url": "https://api.ffbb.app/",
2667
+ "api_base_url": "https://bo.ffbb.com/",
2668
+ "configured_api_base_url": "https://bo.ffbb.com/",
2668
2669
  "meilisearch_base_url": "https://meilisearch-prod.ffbb.app/",
2669
- "openapi_sha256": "3658bee13f442b72d7e5b71c04d995f4f65bdb88b50b89a45f32b1426b1a2c5e",
2670
- "openapi_snapshot_sha256": "65ecec181d406f60f8c51a1a218c587b554c9dbcaed93d4c12a53ca4a6242cbc",
2671
- "openapi_version": "dcd2ad0fff6086cb91ea14bdd4782bc9ba343b5f",
2672
- "timestamp": "2026-10-01T07:34:29.224713+00:00"
2670
+ "openapi_sha256": "845c3e397ddc6d238069f38b23b08438893470c106a22c3292508fd7eb8c8188",
2671
+ "openapi_snapshot_sha256": "537234c1f5b7d75615b0cafaf1775634a3226c2043310195c61fcea0656a84eb",
2672
+ "openapi_version": "d7c8f0b3195fb0535eabd9d05c510a002d838c9a",
2673
+ "timestamp": "2026-10-13T12:17:56.973628+00:00",
2674
+ "web_probe": {
2675
+ "all_ffbb_hosts": [
2676
+ "https://api.ffbb.app",
2677
+ "https://api.ffbb.com",
2678
+ "https://bo.ffbb.app",
2679
+ "https://bo.ffbb.com",
2680
+ "https://competitions.ffbb.com",
2681
+ "https://meilisearch-prod.ffbb.app",
2682
+ "https://statics.ffbb.app",
2683
+ "https://www.ffbb.com"
2684
+ ],
2685
+ "directus_bo_urls": [
2686
+ "https://bo.ffbb.com/",
2687
+ "https://bo.ffbb.app/"
2688
+ ],
2689
+ "healthy_directus_urls": [
2690
+ "https://bo.ffbb.com/",
2691
+ "https://bo.ffbb.app/"
2692
+ ],
2693
+ "meilisearch_urls": [
2694
+ "https://meilisearch-prod.ffbb.app"
2695
+ ],
2696
+ "scanned_chunks_count": 17,
2697
+ "statics_urls": [
2698
+ "https://statics.ffbb.app"
2699
+ ]
2700
+ }
2673
2701
  }
2674
2702
  }
@@ -44,7 +44,7 @@
44
44
  },
45
45
  {
46
46
  "available": true,
47
- "estimatedTotalHits": 549,
47
+ "estimatedTotalHits": 604,
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": 4329,
104
+ "estimatedTotalHits": 4390,
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": 2994,
134
+ "estimatedTotalHits": 3185,
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": 150,
214
+ "estimatedTotalHits": 145,
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": 16,
377
+ "estimatedTotalHits": 31,
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": 4,
432
+ "estimatedTotalHits": 5,
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": 6332,
477
+ "estimatedTotalHits": 6393,
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": 1863,
536
+ "estimatedTotalHits": 1870,
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-01T07:34:29.224713+00:00"
569
+ "timestamp": "2026-10-13T12:09:11.118613+00:00"
570
570
  },
571
571
  "unavailable_indexes": [
572
572
  {
@@ -11690,7 +11690,7 @@
11690
11690
  "info": {
11691
11691
  "description": "This is a dynamically generated API specification for all endpoints existing on the current project.",
11692
11692
  "title": "Dynamic API Specification",
11693
- "version": "e5f76d83e876077e80ab344bbb4fc03606f63ca4"
11693
+ "version": "4aa55950ce1db53a17db2c04c935dc112989a92c"
11694
11694
  },
11695
11695
  "openapi": "3.0.1",
11696
11696
  "paths": {
@@ -35527,7 +35527,7 @@
35527
35527
  "servers": [
35528
35528
  {
35529
35529
  "description": "Your current Directus instance.",
35530
- "url": "https://api.ffbb.com/"
35530
+ "url": "https://bo.ffbb.com/"
35531
35531
  }
35532
35532
  ]
35533
35533
  }
@@ -12181,7 +12181,7 @@
12181
12181
  "info": {
12182
12182
  "description": "This is a dynamically generated API specification for all endpoints existing on the current project.",
12183
12183
  "title": "Dynamic API Specification",
12184
- "version": "5e5f138eae2de296226e37d6c0ac5a9ee7a96f2e"
12184
+ "version": "4aa55950ce1db53a17db2c04c935dc112989a92c"
12185
12185
  },
12186
12186
  "openapi": "3.0.1",
12187
12187
  "paths": {
@@ -36848,7 +36848,7 @@
36848
36848
  "servers": [
36849
36849
  {
36850
36850
  "description": "Your current Directus instance.",
36851
- "url": "https://api.ffbb.com/"
36851
+ "url": "https://bo.ffbb.com/"
36852
36852
  }
36853
36853
  ],
36854
36854
  "tags": [
@@ -0,0 +1,3 @@
1
+ # FFBB permission matrix drift
2
+
3
+ No permission drift detected.
@@ -1,19 +1,15 @@
1
1
  {
2
2
  "drift": {
3
- "added": [
4
- "config_noauth_ipv4",
5
- "config_noauth_ipv6",
6
- "config_tripwire_okhttp_ipv4"
7
- ],
3
+ "added": [],
8
4
  "flips": [],
9
5
  "removed": []
10
6
  },
11
7
  "metadata": {
12
- "api_base_url": "https://api.ffbb.app/",
8
+ "api_base_url": "https://bo.ffbb.com/",
13
9
  "archived_competition_id": "200000002872733",
14
10
  "canary_season": "2026-2027",
15
11
  "current_competition_id": "200000002900744",
16
- "timestamp": "2026-10-10T14:44:42.901605+00:00",
12
+ "timestamp": "2026-10-13T12:09:20.089035+00:00",
17
13
  "token_source": "public-fallback"
18
14
  },
19
15
  "probes": [
@@ -22,98 +18,99 @@
22
18
  "notes": "Public endpoint sans auth : contrôle BunnyCDN et joignabilité par défaut.",
23
19
  "outcome": "ok",
24
20
  "status": 200,
25
- "url": "https://api.ffbb.app/items/configuration"
21
+ "url": "https://bo.ffbb.com/items/configuration"
26
22
  },
27
23
  {
28
24
  "name": "config_noauth_ipv4",
29
25
  "notes": "Public endpoint sans auth en IPv4 strict : détection précoce du blocage WAF BunnyCDN IPv4.",
30
26
  "outcome": "ok",
31
27
  "status": 200,
32
- "url": "https://api.ffbb.app/items/configuration"
28
+ "url": "https://bo.ffbb.com/items/configuration"
33
29
  },
34
30
  {
31
+ "detail": "[Errno 8] nodename nor servname provided, or not known",
35
32
  "name": "config_noauth_ipv6",
36
33
  "notes": "Public endpoint sans auth en IPv6 strict.",
37
- "outcome": "ok",
38
- "status": 200,
39
- "url": "https://api.ffbb.app/items/configuration"
34
+ "outcome": "error:ConnectError",
35
+ "status": null,
36
+ "url": "https://bo.ffbb.com/items/configuration"
40
37
  },
41
38
  {
42
39
  "name": "config_tripwire_okhttp_ipv4",
43
40
  "notes": "Canari sentinelle okhttp sur IPv4 : attendu blocked_cdn (alerte si débloqué ou si la règle change).",
44
- "outcome": "blocked_cdn",
45
- "status": 403,
46
- "url": "https://api.ffbb.app/items/configuration"
41
+ "outcome": "ok",
42
+ "status": 200,
43
+ "url": "https://bo.ffbb.com/items/configuration"
47
44
  },
48
45
  {
49
46
  "name": "saisons_id_field",
50
47
  "notes": "Champ contrôle, attendu ok.",
51
48
  "outcome": "ok",
52
49
  "status": 200,
53
- "url": "https://api.ffbb.app/items/ffbbserver_saisons?fields%5B%5D=id&limit=1"
50
+ "url": "https://bo.ffbb.com/items/ffbbserver_saisons?fields%5B%5D=id&limit=1"
54
51
  },
55
52
  {
56
53
  "name": "saisons_nom_field",
57
54
  "notes": "Champ restreint depuis sept 2026 : 403 Directus attendu.",
58
55
  "outcome": "forbidden_directus",
59
56
  "status": 403,
60
- "url": "https://api.ffbb.app/items/ffbbserver_saisons?fields%5B%5D=nom&limit=1"
57
+ "url": "https://bo.ffbb.com/items/ffbbserver_saisons?fields%5B%5D=nom&limit=1"
61
58
  },
62
59
  {
63
60
  "name": "competitions_listing",
64
61
  "notes": "Listing contrôle, attendu ok.",
65
62
  "outcome": "ok",
66
63
  "status": 200,
67
- "url": "https://api.ffbb.app/items/ffbbserver_competitions?limit=1"
64
+ "url": "https://bo.ffbb.com/items/ffbbserver_competitions?limit=1"
68
65
  },
69
66
  {
70
67
  "name": "organismes_listing",
71
68
  "notes": "Listing contrôle, attendu ok.",
72
69
  "outcome": "ok",
73
70
  "status": 200,
74
- "url": "https://api.ffbb.app/items/ffbbserver_organismes?limit=1"
71
+ "url": "https://bo.ffbb.com/items/ffbbserver_organismes?limit=1"
75
72
  },
76
73
  {
77
74
  "name": "rencontres_listing",
78
75
  "notes": "Listing contrôle, attendu ok.",
79
76
  "outcome": "ok",
80
77
  "status": 200,
81
- "url": "https://api.ffbb.app/items/ffbbserver_rencontres?limit=1"
78
+ "url": "https://bo.ffbb.com/items/ffbbserver_rencontres?limit=1"
82
79
  },
83
80
  {
84
81
  "name": "engagements_listing",
85
82
  "notes": "Listing contrôle, attendu ok.",
86
83
  "outcome": "ok",
87
84
  "status": 200,
88
- "url": "https://api.ffbb.app/items/ffbbserver_engagements?limit=1"
85
+ "url": "https://bo.ffbb.com/items/ffbbserver_engagements?limit=1"
89
86
  },
90
87
  {
91
88
  "name": "competition_current_direct",
92
89
  "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.",
93
90
  "outcome": "ok",
94
91
  "status": 200,
95
- "url": "https://api.ffbb.app/items/ffbbserver_competitions/200000002900744"
92
+ "url": "https://bo.ffbb.com/items/ffbbserver_competitions/200000002900744"
96
93
  },
97
94
  {
98
95
  "name": "relational_nested_expand",
99
96
  "notes": "Jointure relationnelle multi-niveaux Directus (rencontre->poule->competition->organisateur).",
100
97
  "outcome": "ok",
101
98
  "status": 200,
102
- "url": "https://api.ffbb.app/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"
99
+ "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"
103
100
  },
104
101
  {
105
102
  "name": "competition_current_filter",
106
103
  "notes": "Filtre sur saison courante, attendu ok non vide.",
107
104
  "outcome": "ok",
108
105
  "status": 200,
109
- "url": "https://api.ffbb.app/items/ffbbserver_competitions?filter%5Bid%5D%5B_eq%5D=200000002900744&limit=1"
106
+ "url": "https://bo.ffbb.com/items/ffbbserver_competitions?filter%5Bid%5D%5B_eq%5D=200000002900744&limit=1"
110
107
  },
111
108
  {
112
109
  "name": "competition_archived_direct",
113
110
  "notes": "Saison archivée : 403 Directus attendu sur accès direct.",
114
111
  "outcome": "forbidden_directus",
115
112
  "status": 403,
116
- "url": "https://api.ffbb.app/items/ffbbserver_competitions/200000002872733"
113
+ "url": "https://bo.ffbb.com/items/ffbbserver_competitions/200000002872733"
117
114
  },
118
115
  {
119
116
  "content_type": "application/json; charset=utf-8",
@@ -121,7 +118,7 @@
121
118
  "notes": "Filtre sur archivé : 200 vide attendu (pas une erreur HTTP).",
122
119
  "outcome": "empty",
123
120
  "status": 200,
124
- "url": "https://api.ffbb.app/items/ffbbserver_competitions?filter%5Bid%5D%5B_eq%5D=200000002872733&limit=1"
121
+ "url": "https://bo.ffbb.com/items/ffbbserver_competitions?filter%5Bid%5D%5B_eq%5D=200000002872733&limit=1"
125
122
  }
126
123
  ]
127
124
  }