{"openapi":"3.1.0","info":{"title":"EZDojo — API REST","description":"API du serveur Karate (gestion fédérale : territoires, clubs, personnes, licences, grades, compétitions et inscriptions). Toutes les ressources sont sous le préfixe `/api`.","license":{"name":"Projet EZDojo"},"version":"1.0.0-SNAPSHOT"},"externalDocs":{"description":"Swagger UI","url":"/swagger-ui.html"},"servers":[{"url":"http://localhost:8080","description":"Développement local"}],"tags":[{"name":"Activités","description":"CRUD des activités proposées par un club (regroupées par groupe)"},{"name":"Grades obtenus","description":"CRUD grades obtenus (personne id + referentielGrade diplomeCode)"},{"name":"Competitions","description":"CRUD et recherche des compétitions (calendrier fédéral)"},{"name":"Person credentials","description":"List / edit person_credential (no password hash in responses)"},{"name":"Référentiel grades","description":"CRUD grades fédéraux (clé : diplomeCode)"},{"name":"Federations","description":"CRUD fédérations"},{"name":"Clubs","description":"Clubs rattachés à un comité"},{"name":"Kata scoring","description":"Bouts kata, session juge (polling), saisie des notes"},{"name":"Leagues","description":"CRUD leagues (réf. interrégion par id dans le corps JSON)"},{"name":"Licences","description":"Licences (personne + club)"},{"name":"Clubs","description":"CRUD clubs (comité requis : {\"comite\":{\"id\":…}})"},{"name":"Groupes d'activités","description":"CRUD des groupes d'activités proposées par un club"},{"name":"Person scope mandates","description":"List / edit person_scope_mandate and permission keys"},{"name":"Persons","description":"CRUD persons"},{"name":"Authentication","description":"Person login (person_credential.login, person.code_adherent, or e-mail + password) and JWT"},{"name":"Participations compétition","description":"Inscriptions aux compétitions"},{"name":"Diplômes obtenus","description":"Diplômes obtenus par personne"},{"name":"Federations","description":"Hiérarchie territoriale — fédérations"},{"name":"Club coach habilitations","description":"Coach qualifications / habilitations per club"},{"name":"Participations compétition","description":"CRUD inscriptions aux compétitions"},{"name":"Diplômes obtenus","description":"CRUD diplômes obtenus (personne requise à la création)"},{"name":"Comités départementaux","description":"Hiérarchie territoriale — comités"},{"name":"Categories compétition","description":"Catégories (lien N-N avec les compétitions)"},{"name":"Categories compétition","description":"CRUD des catégories (référence N-N pour les compétitions)"},{"name":"Référentiel grades","description":"Grades fédéraux (référentiel)"},{"name":"Affectations instance","description":"CRUD affectations (personne + club)"},{"name":"Licences","description":"CRUD licences (JSON : person et club comme références { \"id\" : … })"},{"name":"Comités départementaux","description":"CRUD comités (ligue requise : {\"league\":{\"id\":…}})"},{"name":"Leagues","description":"Hiérarchie territoriale — leagues"},{"name":"Competitions","description":"Compétitions et calendrier"},{"name":"Grades obtenus","description":"Historique des grades par personne"},{"name":"Affectations instance","description":"Affectations personne / club"}],"paths":{"/api/referentiel-grades/{diplomeCode}":{"get":{"tags":["Référentiel grades"],"summary":"Obtenir un grade par code diplôme","operationId":"getByDiplomeCode","parameters":[{"name":"diplomeCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Référentiel grades"],"summary":"Mettre à jour le libellé d’un grade","operationId":"replace","parameters":[{"name":"diplomeCode","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferentielGradeDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Référentiel grades"],"summary":"Supprimer une entrée référentiel","operationId":"delete","parameters":[{"name":"diplomeCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/persons/{id}":{"get":{"tags":["Persons"],"summary":"Obtenir une person par id","operationId":"getById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Persons"],"summary":"Mettre à jour une person","operationId":"replace_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Persons"],"summary":"Supprimer une person","operationId":"delete_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/person-scope-mandates/{id}":{"get":{"tags":["Person scope mandates"],"operationId":"get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonScopeMandateResponse"}}}}}},"put":{"tags":["Person scope mandates"],"operationId":"update","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonScopeMandateWriteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonScopeMandateResponse"}}}}}},"delete":{"tags":["Person scope mandates"],"operationId":"delete_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"No Content"}}}},"/api/person-credentials/{id}":{"get":{"tags":["Person credentials"],"operationId":"get_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCredentialResponse"}}}}}},"put":{"tags":["Person credentials"],"operationId":"update_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCredentialUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCredentialResponse"}}}}}},"delete":{"tags":["Person credentials"],"operationId":"delete_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"No Content"}}}},"/api/licences/{id}":{"get":{"tags":["Licences"],"summary":"Obtenir une licence par id","operationId":"getById_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Licences"],"summary":"Mettre à jour une licence","operationId":"replace_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenceDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Licences"],"summary":"Supprimer une licence","operationId":"delete_4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/leagues/{id}":{"get":{"tags":["Leagues"],"summary":"Obtenir une league par id","operationId":"getById_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Leagues"],"summary":"Mettre à jour une league","operationId":"replace_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeagueDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Leagues"],"summary":"Supprimer une league","operationId":"delete_5","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/kata-bouts/{boutId}/scoring-state":{"put":{"tags":["Kata scoring"],"summary":"Ouvrir/fermer la saisie (OPEN_AKA, OPEN_AO, CLOSED, DONE)","operationId":"updateScoringState","parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKataScoringStateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KataBoutDto"}}}}}}},"/api/grades-obtenus/{id}":{"get":{"tags":["Grades obtenus"],"summary":"Obtenir un grade obtenu par id","operationId":"getById_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Grades obtenus"],"summary":"Mettre à jour un grade obtenu","operationId":"replace_4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeObtenuDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Grades obtenus"],"summary":"Supprimer un grade obtenu","operationId":"delete_6","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/federations/{id}":{"get":{"tags":["Federations"],"summary":"Obtenir une fédération par id","operationId":"getById_4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Federations"],"summary":"Mettre à jour une fédération","operationId":"replace_5","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FederationDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Federations"],"summary":"Supprimer une fédération","operationId":"delete_7","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/diplomes-obtenus/{id}":{"get":{"tags":["Diplômes obtenus"],"summary":"Obtenir un diplôme obtenu par id","operationId":"getById_5","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Diplômes obtenus"],"summary":"Mettre à jour un diplôme obtenu","operationId":"replace_6","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiplomeObtenuDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Diplômes obtenus"],"summary":"Supprimer un diplôme obtenu","operationId":"delete_8","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/competitions/{id}":{"get":{"tags":["Competitions"],"summary":"Obtenir une compétition par identifiant","operationId":"getById_6","parameters":[{"name":"id","in":"path","description":"Identifiant de la compétition","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Aucune compétition pour cet id"}}},"put":{"tags":["Competitions"],"summary":"Remplacer une compétition (PUT)","operationId":"replace_7","parameters":[{"name":"id","in":"path","description":"Identifiant de la compétition","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"Nouvel état complet de la compétition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDto"}}},"required":true},"responses":{"404":{"description":"Aucune compétition pour cet id"}}},"delete":{"tags":["Competitions"],"summary":"Supprimer une compétition","operationId":"delete_9","parameters":[{"name":"id","in":"path","description":"Identifiant de la compétition","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Suppression effectuée"},"404":{"description":"Aucune compétition pour cet id"}}}},"/api/competition-participations/{id}":{"get":{"tags":["Participations compétition"],"summary":"Obtenir une participation par id","operationId":"getById_7","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Participations compétition"],"summary":"Mettre à jour une participation","operationId":"replace_8","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionParticipationDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Participations compétition"],"summary":"Supprimer une participation","operationId":"delete_10","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/comites-departementaux/{id}":{"get":{"tags":["Comités départementaux"],"summary":"Obtenir un comité par id","operationId":"getById_8","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Comités départementaux"],"summary":"Mettre à jour un comité","operationId":"replace_9","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistrictDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Comités départementaux"],"summary":"Supprimer un comité","operationId":"delete_11","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/clubs/{id}":{"get":{"tags":["Clubs"],"summary":"Obtenir un club par id","operationId":"getById_9","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Clubs"],"summary":"Mettre à jour un club","operationId":"replace_10","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Clubs"],"summary":"Supprimer un club","operationId":"delete_12","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/clubs/{id}/activities":{"get":{"tags":["Clubs"],"summary":"Lister les identifiants des activités d'un club","operationId":"getActivities","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Clubs"],"summary":"Remplacer la liste des activités d'un club","operationId":"setActivities","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}}},"/api/club-coach-habilitations/{id}":{"get":{"tags":["Club coach habilitations"],"operationId":"get_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubCoachHabilitationDto"}}}}}},"put":{"tags":["Club coach habilitations"],"operationId":"update_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubCoachHabilitationUpdateDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubCoachHabilitationDto"}}}}}},"delete":{"tags":["Club coach habilitations"],"operationId":"delete_13","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"No Content"}}}},"/api/categories/{id}":{"get":{"tags":["Categories compétition"],"summary":"Obtenir une catégorie par id","operationId":"getById_10","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Categories compétition"],"summary":"Mettre à jour une catégorie","operationId":"replace_11","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Categories compétition"],"summary":"Supprimer une catégorie","operationId":"delete_14","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/auth/credentials":{"put":{"tags":["Authentication"],"summary":"Update login and/or password (requires current password); returns new JWT","operationId":"updateCredentials","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCredentialRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}}}}},"/api/affectations-instances/{id}":{"get":{"tags":["Affectations instance"],"summary":"Obtenir une affectation par id","operationId":"getById_11","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Affectations instance"],"summary":"Mettre à jour une affectation","operationId":"replace_12","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AffectationInstanceDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Affectations instance"],"summary":"Supprimer une affectation","operationId":"delete_15","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/activity-groups/{id}":{"get":{"tags":["Groupes d'activités"],"summary":"Obtenir un groupe d'activités par id","operationId":"getById_12","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Groupes d'activités"],"summary":"Mettre à jour un groupe d'activités","operationId":"replace_13","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Groupes d'activités"],"summary":"Supprimer un groupe d'activités","operationId":"delete_16","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/activities/{id}":{"get":{"tags":["Activités"],"summary":"Obtenir une activité par id","operationId":"getById_13","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"}}},"put":{"tags":["Activités"],"summary":"Mettre à jour une activité","operationId":"replace_14","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityDto"}}},"required":true},"responses":{"404":{"description":"Non trouvé"}}},"delete":{"tags":["Activités"],"summary":"Supprimer une activité","operationId":"delete_17","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Non trouvé"},"204":{"description":"No Content"}}}},"/api/referentiel-grades":{"get":{"tags":["Référentiel grades"],"summary":"Lister le référentiel des grades","operationId":"list","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReferentielGradeDto"}}}}}}},"post":{"tags":["Référentiel grades"],"summary":"Créer une entrée référentiel","operationId":"create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferentielGradeDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferentielGradeDto"}}}}}}},"/api/persons":{"get":{"tags":["Persons"],"summary":"Lister persons","operationId":"list_1","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonDto"}}}}}}},"post":{"tags":["Persons"],"summary":"Créer une person","operationId":"create_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonDto"}}}}}}},"/api/person-scope-mandates":{"get":{"tags":["Person scope mandates"],"summary":"List all mandate rows","operationId":"list_2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonScopeMandateResponse"}}}}}}},"post":{"tags":["Person scope mandates"],"operationId":"create_2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonScopeMandateWriteRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonScopeMandateResponse"}}}}}}},"/api/person-credentials":{"get":{"tags":["Person credentials"],"summary":"List all credential rows","operationId":"list_3","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonCredentialResponse"}}}}}}},"post":{"tags":["Person credentials"],"operationId":"create_3","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCredentialCreateRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCredentialResponse"}}}}}}},"/api/licences":{"get":{"tags":["Licences"],"summary":"Lister les licences","operationId":"list_4","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LicenceDto"}}}}}}},"post":{"tags":["Licences"],"summary":"Créer une licence","operationId":"create_4","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenceDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenceDto"}}}}}}},"/api/licences/import-ffkda":{"post":{"tags":["Licences"],"summary":"Importer un export CSV FFKDA (licences actives, séparateur ;)","operationId":"importFfkda","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Fichier CSV FFKDA"}},"required":["file"]}}}},"responses":{"400":{"description":"Fichier invalide"}}}},"/api/leagues":{"get":{"tags":["Leagues"],"summary":"Lister les leagues","operationId":"list_5","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LeagueDto"}}}}}}},"post":{"tags":["Leagues"],"summary":"Créer une league","operationId":"create_5","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeagueDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeagueDto"}}}}}}},"/api/kata-bouts/{boutId}/scores":{"post":{"tags":["Kata scoring"],"summary":"Envoyer une note (0,0–10,0) pour le coin ouvert","operationId":"submitScore","parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitKataScoreRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KataBoutDto"}}}}}}},"/api/grades-obtenus":{"get":{"tags":["Grades obtenus"],"summary":"Lister les grades obtenus","operationId":"list_6","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GradeObtenuDto"}}}}}}},"post":{"tags":["Grades obtenus"],"summary":"Créer un grade obtenu","operationId":"create_6","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeObtenuDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeObtenuDto"}}}}}}},"/api/federations":{"get":{"tags":["Federations"],"summary":"Lister les fédérations","operationId":"list_7","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FederationDto"}}}}}}},"post":{"tags":["Federations"],"summary":"Créer une fédération","operationId":"create_7","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FederationDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FederationDto"}}}}}}},"/api/diplomes-obtenus":{"get":{"tags":["Diplômes obtenus"],"summary":"Lister les diplômes obtenus","operationId":"list_8","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DiplomeObtenuDto"}}}}}}},"post":{"tags":["Diplômes obtenus"],"summary":"Créer un diplôme obtenu","operationId":"create_8","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiplomeObtenuDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiplomeObtenuDto"}}}}}}},"/api/competitions":{"get":{"tags":["Competitions"],"summary":"Lister ou rechercher des compétitions","operationId":"list_9","parameters":[{"name":"name","in":"query","description":"Filtre sur le libellé (contient)","required":false,"schema":{"type":"string"}},{"name":"discipline","in":"query","description":"Discipline (ex. KARATE)","required":false,"schema":{"type":"string"}},{"name":"scope","in":"query","description":"Échelon : DEPARTEMENTAL, LEAGUE, NATIONAL","required":false,"schema":{"type":"string","enum":["DEPARTEMENTAL","LEAGUE","NATIONAL"]}},{"name":"qualificative","in":"query","description":"Compétition qualificative","required":false,"schema":{"type":"boolean"}},{"name":"active","in":"query","description":"Compétition active au calendrier","required":false,"schema":{"type":"boolean"}},{"name":"organizer","in":"query","description":"Filtre sur l’organisateur","required":false,"schema":{"type":"string"}},{"name":"location","in":"query","description":"Filtre sur le lieu","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Date de début minimale (inclusive)","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","description":"Date de fin maximale (inclusive)","required":false,"schema":{"type":"string","format":"date"}},{"name":"seasonYear","in":"query","description":"Saison sportive (ex. 2026)","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompetitionDto"}}}}}}},"post":{"tags":["Competitions"],"summary":"Créer une compétition","operationId":"create_9","requestBody":{"description":"Corps de la compétition (sans id ou id ignoré)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDto"}}}}}}},"/api/competitions/{competitionId}/kata-bouts":{"get":{"tags":["Kata scoring"],"summary":"Lister les bouts kata d’une compétition","operationId":"listBouts","parameters":[{"name":"competitionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KataBoutDto"}}}}}}},"post":{"tags":["Kata scoring"],"summary":"Créer un bout (tapis / tirage)","operationId":"createBout","parameters":[{"name":"competitionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKataBoutRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KataBoutDto"}}}}}}},"/api/competition-participations":{"get":{"tags":["Participations compétition"],"summary":"Lister les participations (filtres optionnels)","operationId":"list_10","parameters":[{"name":"competitionId","in":"query","description":"Filtrer par compétition","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"codeAdherent","in":"query","description":"Filtrer par code adhérent","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompetitionParticipationDto"}}}}}}},"post":{"tags":["Participations compétition"],"summary":"Créer une participation","operationId":"create_10","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionParticipationDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionParticipationDto"}}}}}}},"/api/comites-departementaux":{"get":{"tags":["Comités départementaux"],"summary":"Lister les comités départementaux","operationId":"list_11","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DistrictDto"}}}}}}},"post":{"tags":["Comités départementaux"],"summary":"Créer un comité","operationId":"create_11","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistrictDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistrictDto"}}}}}}},"/api/clubs":{"get":{"tags":["Clubs"],"summary":"Lister les clubs","operationId":"list_12","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClubDto"}}}}}}},"post":{"tags":["Clubs"],"summary":"Créer un club","operationId":"create_12","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubDto"}}}}}}},"/api/club-coach-habilitations":{"get":{"tags":["Club coach habilitations"],"summary":"List coach habilitations","operationId":"list_13","parameters":[{"name":"clubId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"seasonYear","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClubCoachHabilitationDto"}}}}}}},"post":{"tags":["Club coach habilitations"],"operationId":"create_13","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubCoachHabilitationCreateDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubCoachHabilitationDto"}}}}}}},"/api/club-coach-habilitations/{id}/validate":{"post":{"tags":["Club coach habilitations"],"operationId":"validate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClubCoachHabilitationDto"}}}}}}},"/api/categories":{"get":{"tags":["Categories compétition"],"summary":"Lister les catégories","operationId":"list_14","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryDto"}}}}}}},"post":{"tags":["Categories compétition"],"summary":"Créer une catégorie","operationId":"create_14","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryDto"}}}}}}},"/api/auth/login":{"post":{"tags":["Authentication"],"summary":"Login with credential login, adherent code (person.code_adherent), or e-mail + password; returns JWT access token","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}}}}},"/api/affectations-instances":{"get":{"tags":["Affectations instance"],"summary":"Lister les affectations","operationId":"list_15","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AffectationInstanceDto"}}}}}}},"post":{"tags":["Affectations instance"],"summary":"Créer une affectation","operationId":"create_15","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AffectationInstanceDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AffectationInstanceDto"}}}}}}},"/api/activity-groups":{"get":{"tags":["Groupes d'activités"],"summary":"Lister les groupes d'activités","operationId":"list_16","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityGroupDto"}}}}}}},"post":{"tags":["Groupes d'activités"],"summary":"Créer un groupe d'activités","operationId":"create_16","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupDto"}}}}}}},"/api/activities":{"get":{"tags":["Activités"],"summary":"Lister les activités","operationId":"list_17","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityDto"}}}}}}},"post":{"tags":["Activités"],"summary":"Créer une activité","operationId":"create_17","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityDto"}}}}}}},"/api/person-scope-mandates/by-person/{personId}":{"get":{"tags":["Person scope mandates"],"operationId":"listByPerson","parameters":[{"name":"personId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonScopeMandateResponse"}}}}}}}},"/api/person-credentials/by-person/{personId}":{"get":{"tags":["Person credentials"],"operationId":"getByPerson","parameters":[{"name":"personId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCredentialResponse"}}}}}}},"/api/competitions/{competitionId}/kata-scoring/session":{"get":{"tags":["Kata scoring"],"summary":"Session courante pour l’app juge (polling)","operationId":"getScoringSession","parameters":[{"name":"competitionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KataScoringSessionDto"}}}}}}},"/api/club-coach-habilitations/valid":{"get":{"tags":["Club coach habilitations"],"summary":"List validated coaches for registration (current season, in-date)","operationId":"listValid","parameters":[{"name":"clubId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClubCoachHabilitationDto"}}}}}}}},"/api/auth/me":{"get":{"tags":["Authentication"],"summary":"Current person and mandates (from JWT)","operationId":"me","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMeResponse"}}}}}}}},"components":{"schemas":{"ReferentielGradeDto":{"type":"object","properties":{"diplomeCode":{"type":"string"},"libelle":{"type":"string"}}},"PersonDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"codeAdherent":{"type":"string"},"civilite":{"type":"string"},"lastName":{"type":"string"},"firstName":{"type":"string"},"birthDate":{"type":"string","format":"date"},"sex":{"type":"string"},"nationality":{"type":"string"},"inseeCommuneCode":{"type":"string"},"personStatus":{"type":"string"},"email":{"type":"string"},"email2":{"type":"string"},"phone":{"type":"string"},"phone2":{"type":"string"},"mobile":{"type":"string"},"mobile2":{"type":"string"},"fax":{"type":"string"},"addrAppartment":{"type":"string"},"addrBuilding":{"type":"string"},"addrStreet":{"type":"string"},"addrHamlet":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"birthLastName":{"type":"string"},"birthCountry":{"type":"string"},"firstName2":{"type":"string"},"firstName3":{"type":"string"},"birthDepartment":{"type":"string"},"birthCity":{"type":"string"},"fatherLastName":{"type":"string"},"fatherFirstName":{"type":"string"},"motherLastName":{"type":"string"},"motherFirstName":{"type":"string"},"photoData":{"type":"string","format":"byte"},"photoMimeType":{"type":"string"},"photoFederationConsent":{"type":"boolean"},"photoClubConsent":{"type":"boolean"},"familySituation":{"type":"string"},"profession":{"type":"string"},"socioProfessionalCategory":{"type":"string"},"addressUseConsent":{"type":"string"},"photoPublishConsent":{"type":"string"},"newsletterConsent":{"type":"string"},"disabilityFlag":{"type":"string"}}},"PersonScopeMandateWriteRequest":{"type":"object","properties":{"personId":{"type":"integer","format":"int64"},"scopeLevel":{"type":"string","enum":["FEDERATION","LEAGUE","DISTRICT","CLUB"]},"federationId":{"type":"integer","format":"int64"},"leagueId":{"type":"integer","format":"int64"},"districtId":{"type":"integer","format":"int64"},"clubId":{"type":"integer","format":"int64"},"permissionKeys":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"required":["personId","scopeLevel"]},"PersonScopeMandateResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"personId":{"type":"integer","format":"int64"},"scopeLevel":{"type":"string","enum":["FEDERATION","LEAGUE","DISTRICT","CLUB"]},"federationId":{"type":"integer","format":"int64"},"leagueId":{"type":"integer","format":"int64"},"districtId":{"type":"integer","format":"int64"},"clubId":{"type":"integer","format":"int64"},"permissionKeys":{"type":"array","items":{"type":"string"},"uniqueItems":true}}},"PersonCredentialUpdateRequest":{"type":"object","properties":{"login":{"type":"string","minLength":1},"enabled":{"type":"boolean"},"newPassword":{"type":"string"}}},"PersonCredentialResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"personId":{"type":"integer","format":"int64"},"login":{"type":"string"},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"LicenceDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"noLicence":{"type":"string"},"person":{"$ref":"#/components/schemas/LongRefDto"},"club":{"$ref":"#/components/schemas/LongRefDto"},"seasonYear":{"type":"integer","format":"int32"},"entryDate":{"type":"string","format":"date"},"tariffLabel":{"type":"string"},"validFrom":{"type":"string","format":"date-time"},"validTo":{"type":"string","format":"date-time"},"editionDate":{"type":"string","format":"date"},"editionState":{"type":"string"},"categoryAge":{"type":"string"},"style":{"type":"string"},"mainDiscipline":{"type":"string"},"licenceState":{"type":"string"},"previousSeason":{"type":"string"},"quaArbitre":{"type":"string"},"quaGrade":{"type":"string"},"quaDiplome":{"type":"string"},"productCode":{"type":"string"},"amount":{"type":"number"},"medicalCertificateDate":{"type":"string","format":"date"},"adherentEmail":{"type":"string"},"attestationLicenceRef":{"type":"string"},"attestationHistoriqueRef":{"type":"string"}}},"LongRefDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"}}},"LeagueDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"name":{"type":"string"}}},"UpdateKataScoringStateRequest":{"type":"object","properties":{"state":{"type":"string","enum":["CLOSED","OPEN_AKA","OPEN_AO","DONE"]}},"required":["state"]},"KataBoutDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"competitionId":{"type":"integer","format":"int64"},"drawPosition":{"type":"integer","format":"int32"},"boutLevel":{"type":"string"},"akaPersonId":{"type":"integer","format":"int64"},"aoPersonId":{"type":"integer","format":"int64"},"scoreAka":{"type":"number"},"scoreAo":{"type":"number"},"scoringState":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}}},"GradeObtenuDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"person":{"$ref":"#/components/schemas/LongRefDto"},"referentielGrade":{"$ref":"#/components/schemas/ReferentielGradeDto"},"obtainedOn":{"type":"string","format":"date"},"voieObtention":{"type":"string"},"commission":{"type":"string"},"styleGrade":{"type":"string"},"disciplineLastLicence":{"type":"string"},"styleLastLicence":{"type":"string"},"seasonExport":{"type":"integer","format":"int32"}}},"FederationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"name":{"type":"string"}}},"DiplomeObtenuDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"person":{"$ref":"#/components/schemas/LongRefDto"},"exportFunction":{"type":"string"},"obtainedOn":{"type":"string","format":"date"},"validUntil":{"type":"string","format":"date"},"pathway":{"type":"string"},"commission":{"type":"string"},"tariffGrade":{"type":"string"},"csdgeDate":{"type":"string","format":"date"},"commentText":{"type":"string"},"diplomaNumber":{"type":"string"},"discipline":{"type":"string"},"activity":{"type":"string"},"nature":{"type":"string"},"diplomaTypeLabel":{"type":"string"},"freeText":{"type":"string"},"lastGradeLabel":{"type":"string"},"lastGradeStyle":{"type":"string"},"disciplineLastLicence":{"type":"string"},"styleLastLicence":{"type":"string"},"seasonFirst":{"type":"integer","format":"int32"},"personStateSnapshot":{"type":"string"}}},"CategoryDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"name":{"type":"string"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"}}},"CompetitionDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"scope":{"type":"string"},"discipline":{"type":"string"},"competitionFormat":{"type":"string"},"qualificative":{"type":"boolean"},"active":{"type":"boolean"},"organizer":{"type":"string"},"locationLabel":{"type":"string"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"seasonYear":{"type":"integer","format":"int32"},"categories":{"type":"array","items":{"$ref":"#/components/schemas/CategoryDto"}}}},"CompetitionParticipationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"competition":{"$ref":"#/components/schemas/LongRefDto"},"codeAdherent":{"type":"string"},"codeClub":{"type":"string"},"status":{"type":"string"},"registeredCategory":{"type":"string"},"styleCode":{"type":"string"},"notes":{"type":"string"},"registeredAt":{"type":"string","format":"date-time"}}},"DistrictDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"name":{"type":"string"},"league":{"$ref":"#/components/schemas/LeagueRefDto"}}},"LeagueRefDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"name":{"type":"string"}}},"ClubDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"codeStructure":{"type":"string"},"name":{"type":"string"},"shortName":{"type":"string"},"typeStructure":{"type":"string"},"website":{"type":"string"},"comite":{"$ref":"#/components/schemas/LongRefDto"},"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"addressLine3":{"type":"string"},"addressLine4":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"email":{"type":"string"},"email2":{"type":"string"},"phone":{"type":"string"},"phone2":{"type":"string"},"mobile":{"type":"string"},"mobile2":{"type":"string"}}},"ClubCoachHabilitationUpdateDto":{"type":"object","properties":{"qualification":{"type":"string"},"discipline":{"type":"string"},"issueDate":{"type":"string","format":"date"},"expiryDate":{"type":"string","format":"date"}}},"ClubCoachHabilitationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"club":{"$ref":"#/components/schemas/LongRefDto"},"coach":{"$ref":"#/components/schemas/LongRefDto"},"qualification":{"type":"string"},"discipline":{"type":"string"},"issueDate":{"type":"string","format":"date"},"expiryDate":{"type":"string","format":"date"},"seasonYear":{"type":"integer","format":"int32"},"habilitation":{"type":"boolean"},"validator":{"$ref":"#/components/schemas/LongRefDto"},"state":{"type":"string"},"coachCode":{"type":"string"},"coachLabel":{"type":"string"},"coachSex":{"type":"string"},"licenceSeasonYear":{"type":"integer","format":"int32"},"validatorLabel":{"type":"string"}}},"UpdateCredentialRequest":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1},"newLogin":{"type":"string"},"newPassword":{"type":"string"}}},"TokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"tokenType":{"type":"string"},"expiresInSeconds":{"type":"integer","format":"int64"}}},"AffectationInstanceDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"person":{"$ref":"#/components/schemas/LongRefDto"},"club":{"$ref":"#/components/schemas/LongRefDto"},"instanceType":{"type":"string"},"fonction":{"type":"string"},"styles":{"type":"string"}}},"ActivityGroupDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"label":{"type":"string"}}},"ActivityDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"label":{"type":"string"},"activityGroup":{"$ref":"#/components/schemas/LongRefDto"}}},"PersonCredentialCreateRequest":{"type":"object","properties":{"personId":{"type":"integer","format":"int64"},"login":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"enabled":{"type":"boolean"}},"required":["personId"]},"SubmitKataScoreRequest":{"type":"object","properties":{"corner":{"type":"string","enum":["AKA","AO"]},"score":{"type":"number","maximum":10.0,"minimum":0.0}},"required":["corner","score"]},"CreateKataBoutRequest":{"type":"object","properties":{"drawPosition":{"type":"integer","format":"int32"},"boutLevel":{"type":"string","minLength":1},"akaPersonId":{"type":"integer","format":"int64"},"aoPersonId":{"type":"integer","format":"int64"}},"required":["akaPersonId","aoPersonId","drawPosition"]},"ClubCoachHabilitationCreateDto":{"type":"object","properties":{"clubId":{"type":"integer","format":"int64"},"coachId":{"type":"integer","format":"int64"},"qualification":{"type":"string"},"discipline":{"type":"string"},"issueDate":{"type":"string","format":"date"},"expiryDate":{"type":"string","format":"date"}}},"LoginRequest":{"type":"object","properties":{"login":{"type":"string","minLength":1},"password":{"type":"string","minLength":1}}},"KataCornerAthleteDto":{"type":"object","properties":{"personId":{"type":"integer","format":"int64"},"displayName":{"type":"string"},"clubName":{"type":"string"},"countryLabel":{"type":"string"}}},"KataScoringSessionDto":{"type":"object","properties":{"scoringState":{"type":"string"},"boutId":{"type":"integer","format":"int64"},"drawPosition":{"type":"integer","format":"int32"},"boutLevel":{"type":"string"},"aka":{"$ref":"#/components/schemas/KataCornerAthleteDto"},"ao":{"$ref":"#/components/schemas/KataCornerAthleteDto"}}},"AuthMeResponse":{"type":"object","properties":{"personId":{"type":"integer","format":"int64"},"login":{"type":"string"},"mandates":{"type":"array","items":{"$ref":"#/components/schemas/MandateSnapshot"}}}},"MandateSnapshot":{"type":"object","properties":{"scopeLevel":{"type":"string","enum":["FEDERATION","LEAGUE","DISTRICT","CLUB"]},"federationId":{"type":"integer","format":"int64"},"leagueId":{"type":"integer","format":"int64"},"districtId":{"type":"integer","format":"int64"},"clubId":{"type":"integer","format":"int64"},"permissionKeys":{"type":"array","items":{"type":"string"},"uniqueItems":true}}}}}}