ffbb-data-client 2.4.6__tar.gz → 2.4.8__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 (397) hide show
  1. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/update-ffbb-api-discovery.yml +4 -0
  2. ffbb_data_client-2.4.8/.omc/skills/codeql-security-hardening-expertise.md +49 -0
  3. ffbb_data_client-2.4.8/.omc/skills/pypi-immutable-release-workflow.md +31 -0
  4. ffbb_data_client-2.4.8/.omc/skills/terminal-output-hygiene-expertise.md +33 -0
  5. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/AGENTS.md +4 -3
  6. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/PKG-INFO +5 -1
  7. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/README.md +4 -0
  8. ffbb_data_client-2.4.8/data/api_update_summary.md +24 -0
  9. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/endpoint_discovery.json +20 -53
  10. ffbb_data_client-2.4.8/data/field_dictionary.json +289 -0
  11. {ffbb_data_client-2.4.6/src/ffbb_data_client → ffbb_data_client-2.4.8}/data/indexes.json +11 -10
  12. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/openapi_full.json +5 -5
  13. ffbb_data_client-2.4.8/docs/data_dictionary.rst +1383 -0
  14. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/index.rst +1 -0
  15. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/scripts/discover_endpoints.py +187 -0
  16. ffbb_data_client-2.4.8/src/ffbb_data_client/api.py +1179 -0
  17. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_rest_facade.py +11 -2
  18. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/data/endpoint_discovery.json +20 -53
  19. ffbb_data_client-2.4.8/src/ffbb_data_client/data/field_dictionary.json +289 -0
  20. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8/src/ffbb_data_client}/data/indexes.json +11 -10
  21. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/helpers/http_requests_utils.py +1 -0
  22. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_poule_response.py +7 -0
  23. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/live.py +1 -0
  24. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/PKG-INFO +5 -1
  25. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/SOURCES.txt +7 -0
  26. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/scm_file_list.json +7 -0
  27. ffbb_data_client-2.4.8/src/ffbb_data_client.egg-info/scm_version.json +8 -0
  28. ffbb_data_client-2.4.8/tests/unit/clients/test_api_optimizations.py +82 -0
  29. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/test_310_discover_endpoints.py +80 -0
  30. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/index.html +26 -15
  31. ffbb_data_client-2.4.8/website/robots.txt +42 -0
  32. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/sitemap.xml +2 -2
  33. ffbb_data_client-2.4.6/data/api_update_summary.md +0 -35
  34. ffbb_data_client-2.4.6/src/ffbb_data_client/api.py +0 -568
  35. ffbb_data_client-2.4.6/src/ffbb_data_client.egg-info/scm_version.json +0 -8
  36. ffbb_data_client-2.4.6/website/robots.txt +0 -4
  37. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.agents/rules/antigravity-rtk-rules.md +0 -0
  38. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.coveragerc +0 -0
  39. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.gitattributes +0 -0
  40. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/FUNDING.yml +0 -0
  41. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  42. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  43. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  44. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/dependabot.yml +0 -0
  45. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/scripts/ai-pr-reviewer.cjs +0 -0
  46. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/scripts/check_wrapper_parity.py +0 -0
  47. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/ai-pr-reviewer.yml +0 -0
  48. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/check_wrapper_parity.yml +0 -0
  49. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/ci.yml +0 -0
  50. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/codeql.yml +0 -0
  51. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/deploy-pages.yml +0 -0
  52. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
  53. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/publish.yml +0 -0
  54. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.github/workflows/release-after-discovery-merge.yml +0 -0
  55. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.gitignore +0 -0
  56. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.isort.cfg +0 -0
  57. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.jules/bolt.md +0 -0
  58. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.pre-commit-config.yaml +0 -0
  59. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/.readthedocs.yml +0 -0
  60. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/AUTHORS.rst +0 -0
  61. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/CHANGELOG.md +0 -0
  62. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/CODE_OF_CONDUCT.md +0 -0
  63. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/CONTRIBUTING.rst +0 -0
  64. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/DESIGN.md +0 -0
  65. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/Dockerfile +0 -0
  66. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/LICENSE.txt +0 -0
  67. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/LOCAL_CI_GUIDE.md +0 -0
  68. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/RELEASE_NOTES.md +0 -0
  69. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/SECURITY.md +0 -0
  70. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/api.ffbb.app.json +0 -0
  71. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/collections.json +0 -0
  72. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/meilisearch-prod.ffbb.app.json +0 -0
  73. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/openapi.json +0 -0
  74. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/data/type_discovery_corrections.json +0 -0
  75. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/Makefile +0 -0
  76. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/_static/.gitignore +0 -0
  77. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/architecture.rst +0 -0
  78. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/authors.rst +0 -0
  79. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/changelog.rst +0 -0
  80. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/conf.py +0 -0
  81. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/contributing.rst +0 -0
  82. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/examples.rst +0 -0
  83. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/license.rst +0 -0
  84. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/migration.rst +0 -0
  85. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/readme.rst +0 -0
  86. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/requirements.txt +0 -0
  87. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/test_strategy.md +0 -0
  88. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/docs/testing_conventions.md +0 -0
  89. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/examples/README.md +0 -0
  90. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/examples/complete_usage_example.py +0 -0
  91. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/examples/quick_start.py +0 -0
  92. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/examples/team_ranking_analysis.py +0 -0
  93. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/pyproject.toml +0 -0
  94. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/pytest.ini +0 -0
  95. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/run-ci-locally.sh +0 -0
  96. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/scripts/benchmark_concurrent_pagination.py +0 -0
  97. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/scripts/benchmark_search_organisme.py +0 -0
  98. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/scripts/discover_types.py +0 -0
  99. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/setup.cfg +0 -0
  100. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/setup.py +0 -0
  101. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/__init__.py +0 -0
  102. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/__init__.py +0 -0
  103. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_helpers.py +0 -0
  104. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
  105. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_mixins/competition.py +0 -0
  106. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
  107. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
  108. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
  109. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_mixins/organisme.py +0 -0
  110. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/_search_facade.py +0 -0
  111. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
  112. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
  113. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
  114. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
  115. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/config.py +0 -0
  116. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/data/__init__.py +0 -0
  117. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/data/collections.json +0 -0
  118. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/data/openapi.json +0 -0
  119. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/helpers/__init__.py +0 -0
  120. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
  121. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
  122. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
  123. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/helpers/normalization.py +0 -0
  124. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/__init__.py +0 -0
  125. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/affiche.py +0 -0
  126. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/cartographie.py +0 -0
  127. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/categorie.py +0 -0
  128. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/categorie_type.py +0 -0
  129. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/clock.py +0 -0
  130. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/club_contacts.py +0 -0
  131. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/code.py +0 -0
  132. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/commune.py +0 -0
  133. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_fields.py +0 -0
  134. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_id.py +0 -0
  135. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
  136. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
  137. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
  138. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
  139. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_origine.py +0 -0
  140. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
  141. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
  142. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
  143. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competition_type.py +0 -0
  144. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
  145. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
  146. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competitions_hit.py +0 -0
  147. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
  148. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/competitions_query.py +0 -0
  149. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/configuration_models.py +0 -0
  150. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/contact_info.py +0 -0
  151. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
  152. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/coordonnees.py +0 -0
  153. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
  154. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/document_flyer.py +0 -0
  155. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
  156. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
  157. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
  158. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
  159. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/engagements_hit.py +0 -0
  160. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
  161. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/etat.py +0 -0
  162. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/external_competition_id.py +0 -0
  163. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/external_id.py +0 -0
  164. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/facet_distribution.py +0 -0
  165. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/facet_stats.py +0 -0
  166. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/field_set.py +0 -0
  167. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/folder.py +0 -0
  168. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/formation_session.py +0 -0
  169. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
  170. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
  171. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/formations_hit.py +0 -0
  172. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
  173. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/game_stats_model.py +0 -0
  174. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/game_stats_models.py +0 -0
  175. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/generic_search.py +0 -0
  176. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/geo.py +0 -0
  177. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
  178. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_commune_response.py +0 -0
  179. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_competition_response.py +0 -0
  180. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
  181. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
  182. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
  183. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_formation_response.py +0 -0
  184. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
  185. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
  186. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
  187. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
  188. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
  189. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_salle_response.py +0 -0
  190. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
  191. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
  192. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/gradient_color.py +0 -0
  193. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/hit.py +0 -0
  194. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
  195. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
  196. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
  197. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/id_poule.py +0 -0
  198. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/jour.py +0 -0
  199. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/label.py +0 -0
  200. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/labellisation.py +0 -0
  201. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/lives.py +0 -0
  202. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/logo.py +0 -0
  203. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
  204. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_query.py +0 -0
  205. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
  206. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
  207. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
  208. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
  209. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
  210. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
  211. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
  212. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
  213. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
  214. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_results.py +0 -0
  215. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
  216. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/nature_sol.py +0 -0
  217. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/niveau.py +0 -0
  218. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/niveau_class.py +0 -0
  219. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
  220. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/niveau_info.py +0 -0
  221. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/niveau_models.py +0 -0
  222. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/niveau_type.py +0 -0
  223. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/objectif.py +0 -0
  224. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organisateur.py +0 -0
  225. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organisateur_type.py +0 -0
  226. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organisme_fields.py +0 -0
  227. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
  228. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
  229. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
  230. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organismes_hit.py +0 -0
  231. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
  232. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/organismes_query.py +0 -0
  233. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/phase_code.py +0 -0
  234. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/poule.py +0 -0
  235. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/poule_fields.py +0 -0
  236. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
  237. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/poules_models.py +0 -0
  238. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/poules_query.py +0 -0
  239. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratique.py +0 -0
  240. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
  241. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
  242. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
  243. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
  244. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
  245. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
  246. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/publication_internet.py +0 -0
  247. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/purple_logo.py +0 -0
  248. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
  249. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
  250. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/rankings_models.py +0 -0
  251. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
  252. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
  253. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
  254. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
  255. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
  256. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/saison.py +0 -0
  257. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/saison_fields.py +0 -0
  258. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/saisons_models.py +0 -0
  259. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/saisons_query.py +0 -0
  260. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/salle.py +0 -0
  261. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
  262. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
  263. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/salles_hit.py +0 -0
  264. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
  265. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/sexe.py +0 -0
  266. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/sexe_class.py +0 -0
  267. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/source.py +0 -0
  268. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/status.py +0 -0
  269. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/team_engagement.py +0 -0
  270. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/team_ranking.py +0 -0
  271. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
  272. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
  273. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
  274. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_hit.py +0 -0
  275. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
  276. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_name.py +0 -0
  277. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
  278. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/terrains_storage.py +0 -0
  279. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
  280. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
  281. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
  282. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
  283. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
  284. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
  285. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
  286. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournois_hit.py +0 -0
  287. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
  288. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
  289. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
  290. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_association.py +0 -0
  291. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
  292. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_class.py +0 -0
  293. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_competition.py +0 -0
  294. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
  295. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_enum.py +0 -0
  296. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/models/type_league.py +0 -0
  297. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/py.typed +0 -0
  298. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/__init__.py +0 -0
  299. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/cache_manager.py +0 -0
  300. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
  301. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/converter_utils.py +0 -0
  302. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/input_validation.py +0 -0
  303. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/retry_utils.py +0 -0
  304. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/secure_logging.py +0 -0
  305. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client/utils/token_manager.py +0 -0
  306. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
  307. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
  308. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/requires.txt +0 -0
  309. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
  310. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/conftest.py +0 -0
  311. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/e2e/__init__.py +0 -0
  312. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/e2e/conftest.py +0 -0
  313. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/__init__.py +0 -0
  314. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/conftest.py +0 -0
  315. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_500_user_journey.py +0 -0
  316. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_501_user_journey_v3.py +0 -0
  317. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_502_enhanced_integration.py +0 -0
  318. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_503_secure_logging.py +0 -0
  319. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_504_input_validation.py +0 -0
  320. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_505_retry_timeout.py +0 -0
  321. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
  322. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/__init__.py +0 -0
  323. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/__init__.py +0 -0
  324. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
  325. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_201_unit_tests_core.py +0 -0
  326. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
  327. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
  328. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
  329. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
  330. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
  331. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
  332. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
  333. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
  334. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
  335. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_async_methods.py +0 -0
  336. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_meilisearch_async.py +0 -0
  337. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_search_many.py +0 -0
  338. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_v2_backport_search.py +0 -0
  339. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_v3_new_features.py +0 -0
  340. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/clients/test_warm_cache.py +0 -0
  341. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/conftest.py +0 -0
  342. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/helpers/__init__.py +0 -0
  343. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/helpers/test_400_http_helpers.py +0 -0
  344. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
  345. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
  346. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/helpers/test_normalization.py +0 -0
  347. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/__init__.py +0 -0
  348. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
  349. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
  350. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
  351. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
  352. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
  353. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
  354. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_106_competition_origine.py +0 -0
  355. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
  356. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
  357. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
  358. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_110_labellisation.py +0 -0
  359. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_111_niveau_class.py +0 -0
  360. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_112_purple_logo.py +0 -0
  361. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_113_salle.py +0 -0
  362. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
  363. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_115_type_association_libelle.py +0 -0
  364. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_116_type_competition_generique.py +0 -0
  365. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_117_organisateur.py +0 -0
  366. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_118_competition_id.py +0 -0
  367. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
  368. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
  369. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
  370. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_122_coverage_gaps.py +0 -0
  371. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_123_missing_coverage.py +0 -0
  372. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_123_v2_backport.py +0 -0
  373. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
  374. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/models/test_dx_aliases.py +0 -0
  375. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/__init__.py +0 -0
  376. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_300_secure_logging.py +0 -0
  377. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_301_input_validation.py +0 -0
  378. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_302_retry_utils.py +0 -0
  379. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_303_cache_manager.py +0 -0
  380. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_304_config.py +0 -0
  381. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_305_token_manager.py +0 -0
  382. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_306_converter_utils.py +0 -0
  383. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
  384. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
  385. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
  386. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tools/update_agents_md.py +0 -0
  387. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/tox.ini +0 -0
  388. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/assets/apple-touch-icon.png +0 -0
  389. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/assets/favicon-192x192.png +0 -0
  390. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/assets/favicon-48x48.png +0 -0
  391. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/assets/favicon-96x96.png +0 -0
  392. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/assets/favicon.ico +0 -0
  393. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/assets/logo.webp +0 -0
  394. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/css/style.css +0 -0
  395. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/favicon.ico +0 -0
  396. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/llms-full.txt +0 -0
  397. {ffbb_data_client-2.4.6 → ffbb_data_client-2.4.8}/website/llms.txt +0 -0
@@ -76,9 +76,13 @@ jobs:
76
76
  data/openapi.json
77
77
  data/openapi_full.json
78
78
  data/api_update_summary.md
79
+ data/field_dictionary.json
79
80
  src/ffbb_data_client/data/__init__.py
80
81
  src/ffbb_data_client/data/collections.json
81
82
  src/ffbb_data_client/data/endpoint_discovery.json
82
83
  src/ffbb_data_client/data/indexes.json
83
84
  src/ffbb_data_client/data/openapi.json
85
+ src/ffbb_data_client/data/field_dictionary.json
86
+ docs/data_dictionary.rst
87
+ docs/index.rst
84
88
  README.md
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: codeql-security-hardening-expertise
3
+ description: Domain knowledge and mitigation patterns for Python CodeQL rules (CWE-117, CWE-918, empty-except)
4
+ triggers:
5
+ - "py/log-injection"
6
+ - "py/partial-ssrf"
7
+ - "py/empty-except"
8
+ - "CWE-117"
9
+ - "CWE-918"
10
+ - "codeql alert"
11
+ ---
12
+
13
+ # CodeQL Security Hardening (Python)
14
+
15
+ ## The Insight
16
+ Static analysis tools like GitHub CodeQL build abstract syntax and taint-flow graphs from input entrypoints (e.g. FastAPI routes, query parameters) to execution sinks (loggers, HTTP request dispatchers).
17
+ Standard defensive checks (like basic regex validation) are often insufficient if the variable remains directly connected in the taint graph. To satisfy CodeQL:
18
+ 1. **Log Injection (CWE-117)**: Explicit string transformation (`replace("\r\n", " ").replace("\r", " ").replace("\n", " ")`) must be executed directly on both the message format string and all format `*args` inside the logging method wrapper before delegating to `self.logger.log()`.
19
+ 2. **SSRF (CWE-918)**: User-supplied URL strings must be parsed and reconstructed strictly from validated components (`scheme://netloc/path?query`), protocols must be whitelisted (`http`, `https`), and raw client calls (`session.get(url)`, `session.post(url)`) in fallback branches must be eliminated in favor of unified helper functions.
20
+ 3. **Empty Excepts (`py/empty-except`)**: CodeQL flags any silent `except Exception: pass`. Adding a clear explanatory comment within the `except` block immediately resolves the warning.
21
+
22
+ ## Why This Matters
23
+ Failing to satisfy CodeQL blocks security scanning checks in GitHub Actions, leaves potential injection vectors open in production, and introduces security technical debt.
24
+
25
+ ## Recognition Pattern
26
+ - CodeQL alert #38 `py/log-injection` on logger calls
27
+ - CodeQL alert #36, #37 `py/partial-ssrf` on HTTP client requests
28
+ - CodeQL alert #43, #44, #45 `py/empty-except` on try/except blocks
29
+
30
+ ## The Approach
31
+ 1. In logging wrappers (`secure_logging.py`):
32
+ ```python
33
+ clean_msg = str(masked_msg).replace("\r\n", " ").replace("\r", " ").replace("\n", " ")
34
+ clean_args = tuple(
35
+ str(self._mask_sensitive_data(a)).replace("\r\n", " ").replace("\r", " ").replace("\n", " ")
36
+ if isinstance(a, str) else a
37
+ for a in args
38
+ )
39
+ self.logger.log(level, clean_msg, *clean_args, **kwargs)
40
+ ```
41
+ 2. In HTTP utilities (`http_requests_utils.py`, `retry_utils.py`):
42
+ ```python
43
+ parsed = urlparse(url.strip())
44
+ if parsed.scheme not in ("http", "https") or not parsed.netloc:
45
+ raise ValueError(f"Invalid URL target: {url}")
46
+ path = parsed.path or "/"
47
+ query = f"?{parsed.query}" if parsed.query else ""
48
+ sanitized_url = f"{parsed.scheme}://{parsed.netloc}{path}{query}"
49
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: pypi-immutable-release-workflow
3
+ description: Workflow procedure for PyPI package releases and post-release patch handling
4
+ triggers:
5
+ - "pypi release"
6
+ - "publish to pypi"
7
+ - "HTTP 400 File already exists"
8
+ - "release tag failed"
9
+ ---
10
+
11
+ # PyPI Immutable Release Workflow
12
+
13
+ ## The Insight
14
+ The Python Package Index (PyPI) enforces strict immutability: once any artifact (`.whl` or `.tar.gz`) is uploaded for version `X.Y.Z`, PyPI permanently rejects any subsequent upload for the same version with HTTP 400 `File already exists`.
15
+ Never attempt to force-push an existing git tag or re-run a publish workflow on the same tag after applying a fix.
16
+
17
+ ## Why This Matters
18
+ If a CI check or build step fails after a partial publish or if a linter/security issue is discovered post-release, pushing to the existing tag will fail the GitHub Actions publish job.
19
+
20
+ ## Recognition Pattern
21
+ - `Publish to PyPI` workflow fails with `HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/`
22
+ - "File already exists" error during twine/flit/uv publish
23
+
24
+ ## The Approach
25
+ 1. **Never reuse or overwrite an existing release tag**.
26
+ 2. When applying any code, linter, typings, or security fix post-release:
27
+ - Increment the patch version in `CHANGELOG.md` and `RELEASE_NOTES.md` (`2.4.0` -> `2.4.1` -> `...`).
28
+ - Commit changes to `master` / `main`.
29
+ - Create a brand new git annotated tag: `git tag -a vX.Y.Z+1 -m "Release vX.Y.Z+1"`.
30
+ - Push both the branch and the new tag: `git push origin master && git push origin vX.Y.Z+1`.
31
+ - Monitor the GitHub Actions `Publish to PyPI` and `tests` workflows until completion.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: terminal-output-hygiene-expertise
3
+ description: Principle of zero tolerance for terminal warnings, deprecation notices, and proactive tool maintenance
4
+ triggers:
5
+ - "warning:"
6
+ - "new version available"
7
+ - "DeprecationWarning"
8
+ - "terminal output hygiene"
9
+ ---
10
+
11
+ # Terminal Output Hygiene & Zero Warning Policy
12
+
13
+ ## The Insight
14
+ An `exit code 0` does not mean an execution is clean. Compilers, linters, test runners, and package managers often emit warnings, deprecation notices, or update recommendations alongside a successful exit code.
15
+ Treating warnings as noise leads to creeping technical debt, stale dependencies, and unnoticed regressions.
16
+
17
+ ## Why This Matters
18
+ - Deprecation warnings often turn into breaking errors in subsequent minor releases.
19
+ - Outdated tools (like `pyright`, `eslint`, `vitest`) may produce false positives or miss newly supported language features.
20
+ - Cluttered terminal output hides real, critical warnings.
21
+
22
+ ## Recognition Pattern
23
+ - Console output contains strings like `WARNING: there is a new version available`
24
+ - Pytest output shows unhandled `DeprecationWarning` or `StarletteDeprecationWarning`
25
+ - Jest/Vitest output shows module resolution warnings (e.g. Haste duplicate package names)
26
+
27
+ ## The Approach
28
+ 1. **Active Log Inspection**: Always read the complete `stdout` and `stderr` of every executed command, not just the exit status.
29
+ 2. **Immediate Remediation**:
30
+ - For outdated tooling warnings (e.g., `pyright`): Run `uv pip install -U <package>` or `npm update <package>` immediately.
31
+ - For deprecation warnings: Add appropriate pytest filters (`filterwarnings`) or update the calling code to modern APIs (e.g. FastAPI `lifespan`).
32
+ - For Jest Haste collisions: Add `modulePathIgnorePatterns: ['<rootDir>/.next/', '<rootDir>/.agent/']` in `jest.config.ts`.
33
+ 3. **Clean Baseline**: Maintain a clean terminal baseline where routine check commands run with 0 errors and 0 warnings.
@@ -40,9 +40,10 @@ ou interroge l'API publique en cache en cas d'absence :
40
40
  documentation (`AGENTS.md`), de site/landing page ou autres tâches de synchronisation de
41
41
  manière autonome. Si vous estimez qu'une mise à jour automatique est pertinente ou non, prenez
42
42
  la décision par vous-même sans attendre la validation explicite de l'utilisateur.
43
- - **Validation pre-commit systématique (Zéro échec de CI)** : Pour éviter tout échec de build ou de formatage en CI,
44
- exécutez systématiquement la validation complète locale via `rtk pre-commit run --all-files` avant de pousser
45
- tout commit vers origin. Résolvez toutes les alertes (formatage, imports `isort`, typage) localement.
43
+ - **Protocole Strict Pre-Commit & Re-Stage (Zéro échec de CI)** :
44
+ 1. Toujours appliquer `.rstrip() + "\n"` dans les générateurs de fichiers (RST, MD, JSON).
45
+ 2. Exécuter systématiquement `rtk pre-commit run --all-files`.
46
+ 3. Si un hook (end-of-file-fixer, black, isort...) modifie un fichier sur disque : **OBLIGATION de ré-indexer (`rtk git add -u`) et de ré-exécuter `rtk pre-commit run --all-files`** jusqu'à un passage 100% propre avant de créer le commit (`git commit`).
46
47
 
47
48
 
48
49
  ## Karpathy Guidelines (Règles de développement)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffbb-data-client
3
- Version: 2.4.6
3
+ Version: 2.4.8
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
@@ -83,6 +83,10 @@ Dynamic: license-file
83
83
 
84
84
  </div>
85
85
 
86
+ <!-- DISCOVERY_METRICS:START -->
87
+ > 🔄 **Cartographie API synchronisée** : `162` collections Directus OpenAPI cartographiées, `13` index Meilisearch surveillés.
88
+ <!-- DISCOVERY_METRICS:END -->
89
+
86
90
  ---
87
91
 
88
92
  ## 📌 À propos
@@ -27,6 +27,10 @@
27
27
 
28
28
  </div>
29
29
 
30
+ <!-- DISCOVERY_METRICS:START -->
31
+ > 🔄 **Cartographie API synchronisée** : `162` collections Directus OpenAPI cartographiées, `13` index Meilisearch surveillés.
32
+ <!-- DISCOVERY_METRICS:END -->
33
+
30
34
  ---
31
35
 
32
36
  ## 📌 À propos
@@ -0,0 +1,24 @@
1
+ # FFBB API update summary
2
+
3
+ - Timestamp: `2026-09-11T10:11:11.270973+00:00`
4
+ - API base URL: `https://api.ffbb.app/`
5
+ - Meilisearch base URL: `https://meilisearch-prod.ffbb.app/`
6
+ - OpenAPI version: `326edbfd6bf4f57c9f1e22a17f0a177e9c85619b`
7
+ - OpenAPI SHA256: `1c6ecdab182113ad582b154df4d66bc1416a387d6fc4d57dd5b6788f39288a51`
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: `13`
21
+ - Added: None
22
+ - Removed: None
23
+
24
+ Generated by `python scripts/discover_endpoints.py`.
@@ -329,9 +329,9 @@
329
329
  "items/youtube_videos_youtube_tags"
330
330
  ],
331
331
  "metadata": {
332
- "openapi_version": "e5f76d83e876077e80ab344bbb4fc03606f63ca4",
332
+ "openapi_version": "326edbfd6bf4f57c9f1e22a17f0a177e9c85619b",
333
333
  "source": "https://api.ffbb.app/server/specs/oas",
334
- "timestamp": "2026-08-10T19:59:19.080946+00:00"
334
+ "timestamp": "2026-09-11T10:11:11.270973+00:00"
335
335
  },
336
336
  "paths": {
337
337
  "items/configuration": [
@@ -1353,44 +1353,10 @@
1353
1353
  "drift": {
1354
1354
  "directus_openapi": {
1355
1355
  "added_schemas": [],
1356
- "modified_schemas": {
1357
- "ItemsFfbbnationalPratiques": {
1358
- "added_properties": [
1359
- "code_structure",
1360
- "date_validation_ffbb"
1361
- ],
1362
- "modified_properties": {},
1363
- "removed_properties": []
1364
- }
1365
- },
1366
- "removed_schemas": [
1367
- "ItemsFfbbsiteFormsEntries",
1368
- "ItemsFfbbsiteFormsEntriesDirectusFiles"
1369
- ]
1356
+ "modified_schemas": {},
1357
+ "removed_schemas": []
1370
1358
  },
1371
- "meilisearch_indexes": {
1372
- "ffbbnational_pratiques": {
1373
- "added": [
1374
- "code_structure",
1375
- "date_validation_ffbb",
1376
- "date_validation_ffbb_timestamp"
1377
- ],
1378
- "removed": []
1379
- },
1380
- "ffbbserver_rencontres": {
1381
- "added": [],
1382
- "removed": [
1383
- "competition_orgine",
1384
- "competition_origine",
1385
- "horaire",
1386
- "logo",
1387
- "nomExtended",
1388
- "pro",
1389
- "sexe",
1390
- "typeCompetitionGenerique"
1391
- ]
1392
- }
1393
- }
1359
+ "meilisearch_indexes": {}
1394
1360
  },
1395
1361
  "meilisearch": {
1396
1362
  "available_indexes": [
@@ -1434,7 +1400,7 @@
1434
1400
  },
1435
1401
  {
1436
1402
  "available": true,
1437
- "estimatedTotalHits": 253,
1403
+ "estimatedTotalHits": 429,
1438
1404
  "indexUid": "ffbbnational_pratiques",
1439
1405
  "sampleKeys": [
1440
1406
  "_geo",
@@ -1491,7 +1457,7 @@
1491
1457
  },
1492
1458
  {
1493
1459
  "available": true,
1494
- "estimatedTotalHits": 4104,
1460
+ "estimatedTotalHits": 4228,
1495
1461
  "indexUid": "ffbbnational_rss",
1496
1462
  "sampleKeys": [
1497
1463
  "categories",
@@ -1521,7 +1487,7 @@
1521
1487
  },
1522
1488
  {
1523
1489
  "available": true,
1524
- "estimatedTotalHits": 571,
1490
+ "estimatedTotalHits": 1680,
1525
1491
  "indexUid": "ffbbserver_competitions",
1526
1492
  "sampleKeys": [
1527
1493
  "age",
@@ -1601,7 +1567,7 @@
1601
1567
  },
1602
1568
  {
1603
1569
  "available": true,
1604
- "estimatedTotalHits": 144,
1570
+ "estimatedTotalHits": 146,
1605
1571
  "indexUid": "ffbbserver_formations",
1606
1572
  "sampleKeys": [
1607
1573
  "certification",
@@ -1636,7 +1602,7 @@
1636
1602
  },
1637
1603
  {
1638
1604
  "available": true,
1639
- "estimatedTotalHits": 4642,
1605
+ "estimatedTotalHits": 4714,
1640
1606
  "indexUid": "ffbbserver_organismes",
1641
1607
  "sampleKeys": [
1642
1608
  "_geo",
@@ -1644,6 +1610,7 @@
1644
1610
  "adresseClubPro",
1645
1611
  "cartographie",
1646
1612
  "code",
1613
+ "code_emploi",
1647
1614
  "commune",
1648
1615
  "communeClubPro",
1649
1616
  "dateAffiliation",
@@ -1671,7 +1638,7 @@
1671
1638
  },
1672
1639
  {
1673
1640
  "available": true,
1674
- "estimatedTotalHits": 96,
1641
+ "estimatedTotalHits": 5000,
1675
1642
  "indexUid": "ffbbserver_rencontres",
1676
1643
  "sampleKeys": [
1677
1644
  "_geo",
@@ -1763,7 +1730,7 @@
1763
1730
  },
1764
1731
  {
1765
1732
  "available": true,
1766
- "estimatedTotalHits": 19,
1733
+ "estimatedTotalHits": 7,
1767
1734
  "indexUid": "ffbbserver_tournois",
1768
1735
  "sampleKeys": [
1769
1736
  "_geo",
@@ -1802,7 +1769,7 @@
1802
1769
  },
1803
1770
  {
1804
1771
  "available": true,
1805
- "estimatedTotalHits": 6106,
1772
+ "estimatedTotalHits": 6229,
1806
1773
  "indexUid": "ffbbsite_news",
1807
1774
  "sampleKeys": [
1808
1775
  "author",
@@ -1831,7 +1798,7 @@
1831
1798
  },
1832
1799
  {
1833
1800
  "available": true,
1834
- "estimatedTotalHits": 1842,
1801
+ "estimatedTotalHits": 1858,
1835
1802
  "indexUid": "youtube_videos",
1836
1803
  "sampleKeys": [
1837
1804
  "channelId",
@@ -1864,7 +1831,7 @@
1864
1831
  ],
1865
1832
  "metadata": {
1866
1833
  "source": "https://meilisearch-prod.ffbb.app/multi-search",
1867
- "timestamp": "2026-08-10T19:59:19.080946+00:00"
1834
+ "timestamp": "2026-09-11T10:11:11.270973+00:00"
1868
1835
  },
1869
1836
  "unavailable_indexes": [
1870
1837
  {
@@ -1900,9 +1867,9 @@
1900
1867
  "metadata": {
1901
1868
  "api_base_url": "https://api.ffbb.app/",
1902
1869
  "meilisearch_base_url": "https://meilisearch-prod.ffbb.app/",
1903
- "openapi_sha256": "d42e75cfb86a35bd5e17f12cc75785563d25a33ac9885ffa1ac0996c0140ff31",
1904
- "openapi_snapshot_sha256": "8a7b1fa7c2e9b499a050bcf7a7d9282c3daa7805f2d43ab61d5dc14d1686ed4d",
1905
- "openapi_version": "e5f76d83e876077e80ab344bbb4fc03606f63ca4",
1906
- "timestamp": "2026-08-10T19:59:19.080946+00:00"
1870
+ "openapi_sha256": "1c6ecdab182113ad582b154df4d66bc1416a387d6fc4d57dd5b6788f39288a51",
1871
+ "openapi_snapshot_sha256": "ddaf588729dc2f1f68ced57a5d4dd6fb5afc3f807be028ef1d4e8e439a3b6219",
1872
+ "openapi_version": "326edbfd6bf4f57c9f1e22a17f0a177e9c85619b",
1873
+ "timestamp": "2026-09-11T10:11:11.270973+00:00"
1907
1874
  }
1908
1875
  }
@@ -0,0 +1,289 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "version": "1.0.0",
4
+ "description": "Dictionnaire de référence métier des champs Directus et attributs Meilisearch de l'écosystème FFBB.",
5
+ "fields": {
6
+ "code_emploi": {
7
+ "name": "code_emploi",
8
+ "description": "Code de conventionnement ou statut employeur/PSF de l'organisme auprès de la FFBB (suivi des postes aidés ANS/PSF et structuration salariée).",
9
+ "category": "statut",
10
+ "usage": "Exposé dans Meilisearch pour filtrer les clubs et structures employeurs."
11
+ },
12
+ "nom": {
13
+ "name": "nom",
14
+ "description": "Nom officiel de l'entité (organisme, compétition, salle, officiel, terrain).",
15
+ "category": "identification",
16
+ "usage": "Champ de recherche textuelle principal."
17
+ },
18
+ "code": {
19
+ "name": "code",
20
+ "description": "Code fédéral unique attribué par la FFBB (ex: ARA0063062 pour un club, 063 pour un comité).",
21
+ "category": "identification",
22
+ "usage": "Identifiant stable de l'organisme dans FBI."
23
+ },
24
+ "id": {
25
+ "name": "id",
26
+ "description": "Identifiant numérique unique de la ressource dans le système Directus FFBB.",
27
+ "category": "identification",
28
+ "usage": "Clé primaire pour requêtes unitaires."
29
+ },
30
+ "commune": {
31
+ "name": "commune",
32
+ "description": "Nom de la commune de rattachement ou de localisation.",
33
+ "category": "geographie",
34
+ "usage": "Filtrage et recherche géographique."
35
+ },
36
+ "communeClubPro": {
37
+ "name": "communeClubPro",
38
+ "description": "Commune de rattachement de la section professionnelle d'un club.",
39
+ "category": "geographie",
40
+ "usage": "Distinction géographique entre structure amateur et structure pro."
41
+ },
42
+ "nom_club_pro": {
43
+ "name": "nom_club_pro",
44
+ "description": "Dénomination officielle de la structure professionnelle (SASP / SAOS) rattachée à l'association.",
45
+ "category": "identification",
46
+ "usage": "Affichage et distinction des clubs professionnels."
47
+ },
48
+ "dateAffiliation": {
49
+ "name": "dateAffiliation",
50
+ "description": "Date d'affiliation officielle de l'organisme auprès de la fédération.",
51
+ "category": "statut",
52
+ "usage": "Historique et ancienneté du club."
53
+ },
54
+ "date_affiliation": {
55
+ "name": "date_affiliation",
56
+ "description": "Date d'affiliation officielle de l'organisme auprès de la fédération (format snake_case).",
57
+ "category": "statut",
58
+ "usage": "Historique et ancienneté du club."
59
+ },
60
+ "saison_en_cours": {
61
+ "name": "saison_en_cours",
62
+ "description": "Indicateur booléen signalant si l'organisme est actif sur la saison sportive courante.",
63
+ "category": "statut",
64
+ "usage": "Filtrage des structures actives."
65
+ },
66
+ "type": {
67
+ "name": "type",
68
+ "description": "Typologie administrative de l'organisme (Club, Comité départemental, Ligue régionale, Groupement, etc.).",
69
+ "category": "statut",
70
+ "usage": "Facette de filtrage Meilisearch."
71
+ },
72
+ "mail": {
73
+ "name": "mail",
74
+ "description": "Adresse email de contact officiel de l'organisme ou du correspondant.",
75
+ "category": "contact",
76
+ "usage": "Coordonnées de communication."
77
+ },
78
+ "telephone": {
79
+ "name": "telephone",
80
+ "description": "Numéro de téléphone de contact officiel de l'organisme.",
81
+ "category": "contact",
82
+ "usage": "Coordonnées de communication."
83
+ },
84
+ "url_site_web": {
85
+ "name": "url_site_web",
86
+ "description": "URL du site internet officiel ou de la page de l'organisme.",
87
+ "category": "contact",
88
+ "usage": "Lien externe web."
89
+ },
90
+ "labellisation": {
91
+ "name": "labellisation",
92
+ "description": "Labels fédéraux obtenus par le club (École Française de MiniBasket, Club Formateur, Basket Santé, Citoyen, etc.).",
93
+ "category": "sportif",
94
+ "usage": "Valorisation des compétences et labels FFBB."
95
+ },
96
+ "offres_pratiques": {
97
+ "name": "offres_pratiques",
98
+ "description": "Types de pratiques basket proposées (5x5, 3x3, Micro-Basket, Basket Santé, Basket Inclusif, etc.).",
99
+ "category": "sportif",
100
+ "usage": "Recherche d'offres de pratique pour les licenciés."
101
+ },
102
+ "engagements_noms": {
103
+ "name": "engagements_noms",
104
+ "description": "Noms textuels des équipes engagées par le club dans les championnats.",
105
+ "category": "sportif",
106
+ "usage": "Recherche textuelle d'équipes par club."
107
+ },
108
+ "code_structure": {
109
+ "name": "code_structure",
110
+ "description": "Code identifiant de la structure organisatrice ou hôte.",
111
+ "category": "identification",
112
+ "usage": "Rattachement administratif."
113
+ },
114
+ "date_validation_ffbb": {
115
+ "name": "date_validation_ffbb",
116
+ "description": "Date à laquelle la FFBB a formellement validé l'élément ou l'offre de pratique.",
117
+ "category": "statut",
118
+ "usage": "Suivi d'homologation."
119
+ },
120
+ "date_validation_ffbb_timestamp": {
121
+ "name": "date_validation_ffbb_timestamp",
122
+ "description": "Timestamp Unix de la date de validation FFBB.",
123
+ "category": "statut",
124
+ "usage": "Tri chronologique performant dans Meilisearch."
125
+ },
126
+ "_geo": {
127
+ "name": "_geo",
128
+ "description": "Coordonnées géographiques de localisation (latitude, longitude) au format standard Meilisearch.",
129
+ "category": "geographie",
130
+ "usage": "Recherche géographique de proximité (_geoRadius, _geoBoundingBox)."
131
+ },
132
+ "typeCompetitionGenerique": {
133
+ "name": "typeCompetitionGenerique",
134
+ "description": "Niveau générique de compétition (Championnat de France, Régional, Départemental, Coupe, Tournoi).",
135
+ "category": "sportif",
136
+ "usage": "Filtrage et classification des compétitions."
137
+ },
138
+ "sexe": {
139
+ "name": "sexe",
140
+ "description": "Genre de la compétition ou de l'équipe (Masculin, Féminin, Mixte).",
141
+ "category": "sportif",
142
+ "usage": "Filtrage par genre."
143
+ },
144
+ "age": {
145
+ "name": "age",
146
+ "description": "Tranche d'âge de la compétition (Seniors, U20, U18, U15, U13, etc.).",
147
+ "category": "sportif",
148
+ "usage": "Filtrage par catégorie d'âge."
149
+ },
150
+ "certification": {
151
+ "name": "certification",
152
+ "description": "Type de diplôme ou brevet délivré par une session de formation (ex: CQP, Brevet Fédéral).",
153
+ "category": "formation",
154
+ "usage": "Recherche et filtrage des formations FFBB."
155
+ },
156
+ "count": {
157
+ "name": "count",
158
+ "description": "Nombre total d'éléments (photos, items, participants) associés.",
159
+ "category": "statistique",
160
+ "usage": "Indicateur quantitatif."
161
+ },
162
+ "cover": {
163
+ "name": "cover",
164
+ "description": "URL ou identifiant de l'image de couverture / affiche.",
165
+ "category": "media",
166
+ "usage": "Affichage visuel de miniature."
167
+ },
168
+ "creator": {
169
+ "name": "creator",
170
+ "description": "Auteur ou créateur de la ressource dans le CMS Directus FFBB.",
171
+ "category": "metadonnees",
172
+ "usage": "Traçabilité éditoriale."
173
+ },
174
+ "date": {
175
+ "name": "date",
176
+ "description": "Date de l'événement, de la rencontre ou de la publication.",
177
+ "category": "temporel",
178
+ "usage": "Tri et affichage chronologique."
179
+ },
180
+ "date_created": {
181
+ "name": "date_created",
182
+ "description": "Date de création initiale de l'enregistrement dans la base Directus.",
183
+ "category": "metadonnees",
184
+ "usage": "Audit et tri."
185
+ },
186
+ "date_updated": {
187
+ "name": "date_updated",
188
+ "description": "Date de dernière mise à jour de l'enregistrement dans la base Directus.",
189
+ "category": "metadonnees",
190
+ "usage": "Gestion du cache et synchronisation."
191
+ },
192
+ "date_published": {
193
+ "name": "date_published",
194
+ "description": "Date de mise en ligne ou publication publique de l'article/contenu.",
195
+ "category": "temporel",
196
+ "usage": "Tri chronologique des flux d'actualités."
197
+ },
198
+ "date_timestamp": {
199
+ "name": "date_timestamp",
200
+ "description": "Timestamp Unix de la date principale pour tri numérique rapide.",
201
+ "category": "temporel",
202
+ "usage": "Tri indexé Meilisearch."
203
+ },
204
+ "title": {
205
+ "name": "title",
206
+ "description": "Titre officiel du contenu, événement ou entité.",
207
+ "category": "contenu",
208
+ "usage": "Recherche textuelle et affichage."
209
+ },
210
+ "titre": {
211
+ "name": "titre",
212
+ "description": "Titre du contenu ou de l'actualité en français.",
213
+ "category": "contenu",
214
+ "usage": "Recherche textuelle et affichage."
215
+ },
216
+ "surtitle": {
217
+ "name": "surtitle",
218
+ "description": "Surtitre ou chapeau introductif de l'article ou de la galerie.",
219
+ "category": "contenu",
220
+ "usage": "Mise en page éditoriale."
221
+ },
222
+ "description": {
223
+ "name": "description",
224
+ "description": "Texte descriptif détaillé de la ressource.",
225
+ "category": "contenu",
226
+ "usage": "Information détaillée et recherche full-text."
227
+ },
228
+ "latitude": {
229
+ "name": "latitude",
230
+ "description": "Coordonnée de latitude géographique.",
231
+ "category": "geographie",
232
+ "usage": "Positionnement cartographique."
233
+ },
234
+ "longitude": {
235
+ "name": "longitude",
236
+ "description": "Coordonnée de longitude géographique.",
237
+ "category": "geographie",
238
+ "usage": "Positionnement cartographique."
239
+ },
240
+ "code_postal": {
241
+ "name": "code_postal",
242
+ "description": "Code postal de localisation.",
243
+ "category": "geographie",
244
+ "usage": "Filtrage territorial et recherche locale."
245
+ },
246
+ "ville": {
247
+ "name": "ville",
248
+ "description": "Nom de la ville de localisation.",
249
+ "category": "geographie",
250
+ "usage": "Filtrage et recherche textuelle géographique."
251
+ },
252
+ "capacite": {
253
+ "name": "capacite",
254
+ "description": "Capacité d'accueil en nombre de places assises / spectateurs de la salle ou tribune.",
255
+ "category": "infrastructure",
256
+ "usage": "Caractéristiques techniques des salles FFBB."
257
+ },
258
+ "type_sol": {
259
+ "name": "type_sol",
260
+ "description": "Revêtement du terrain (Parquet, Synthétique, Résine, Bitume, etc.).",
261
+ "category": "infrastructure",
262
+ "usage": "Homologation et confort de jeu."
263
+ },
264
+ "type_salle": {
265
+ "name": "type_salle",
266
+ "description": "Catégorisation technique de l'équipement sportif (Gymnase, Palais des Sports, Complexe, Terrain extérieur 3x3).",
267
+ "category": "infrastructure",
268
+ "usage": "Filtrage des installations sportives."
269
+ },
270
+ "status": {
271
+ "name": "status",
272
+ "description": "État de publication de l'enregistrement dans Directus (published, draft, archived).",
273
+ "category": "statut",
274
+ "usage": "Filtrage des données actives."
275
+ },
276
+ "horaire": {
277
+ "name": "horaire",
278
+ "description": "Heure programmée de la rencontre (format HH:MM).",
279
+ "category": "temporel",
280
+ "usage": "Calendrier et programmation des matchs."
281
+ },
282
+ "pro": {
283
+ "name": "pro",
284
+ "description": "Indicateur booléen signalant si la rencontre ou la compétition concerne le secteur professionnel (LNB, LFB, etc.).",
285
+ "category": "sportif",
286
+ "usage": "Séparation des compétitions fédérales et professionnelles."
287
+ }
288
+ }
289
+ }