{"openapi":"3.0.0","paths":{"/v1/disciplines":{"get":{"operationId":"DictionariesController_disciplines","parameters":[],"responses":{"200":{"description":"Дисциплины вида спорта"}},"security":[{"bearer":[]}],"summary":"Пять дисциплин","tags":["dictionaries"]}},"/v1/dictionaries/levels":{"get":{"operationId":"DictionariesController_levels","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Пять пар kind + scope","tags":["dictionaries"]}},"/v1/dictionaries/series":{"get":{"operationId":"DictionariesController_series","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Шесть серий","tags":["dictionaries"]}},"/v1/dictionaries/ranks":{"get":{"operationId":"DictionariesController_ranks","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Восемь разрядов","tags":["dictionaries"]}},"/v1/dictionaries/roles":{"get":{"operationId":"DictionariesController_roles","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Пять ролей участия","tags":["dictionaries"]}},"/v1/dictionaries/categories":{"get":{"operationId":"DictionariesController_categories","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"speed, accuracy, game","tags":["dictionaries"]}},"/v1/dictionaries/age-groups":{"get":{"operationId":"DictionariesController_ageGroups","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Возрастные группы правил 2026 года","tags":["dictionaries"]}},"/v1/dictionaries/branches":{"get":{"operationId":"DictionariesController_branches","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"89 отделений","tags":["dictionaries"]}},"/v1/competitions":{"get":{"operationId":"CompetitionsController_list","parameters":[{"name":"discipline_code","required":false,"in":"query","schema":{"type":"string"}},{"name":"year","required":false,"in":"query","description":"Сравнивается с season_year","schema":{"type":"string"}}],"responses":{"200":{"description":"Соревнования без списка участников"}},"security":[{"bearer":[]}],"summary":"Список стартов","tags":["competitions"]}},"/v1/competitions/{id}":{"get":{"operationId":"CompetitionsController_one","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Карточка старта без участников","tags":["competitions"]}},"/v1/persons":{"get":{"operationId":"PersonsController_search","parameters":[{"name":"fsp_person_id","required":false,"in":"query","schema":{"type":"string"}},{"name":"full_name","required":false,"in":"query","schema":{"type":"string"}},{"name":"birth_date","required":false,"in":"query","schema":{"type":"string"}},{"name":"regional_branch_code","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Краткая карточка. Без ФИО, контакта, кода подтверждения и досье.","content":{"application/json":{"schema":{"example":{"match":"unique","fsp_person_id":"fsp-001","regional_branch_code":"77","channel_mask":"email:…abcd@example.test"}}}}},"404":{"description":"","content":{"application/json":{"schema":{"example":{"code":"person_not_found","message":"Персона не найдена"}}}}}},"security":[{"bearer":[]}],"summary":"Поиск персоны: unique, ambiguous или 404","tags":["persons"]}},"/v1/persons/{fspPersonId}/dossier":{"get":{"operationId":"DossierController_get","parameters":[{"name":"fspPersonId","required":true,"in":"path","schema":{"type":"string"}},{"name":"since","required":false,"in":"query","description":"Курсор updated_at, записи строго новее","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"example":{"history":"empty","summary":[],"participations":[],"results":[],"ranks":[],"national_teams":[]}}}}}},"security":[{"bearer":[]}],"summary":"Досье: сводка L1 и факты. since режет participations, results и ranks","tags":["dossier"]}},"/v1/persons/{fspPersonId}/ownership-challenges":{"post":{"operationId":"OwnershipController_issue","parameters":[{"name":"fspPersonId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"example":{}}}}},"responses":{"200":{"description":"202","content":{"application/json":{"schema":{"example":{"challenge_id":"00000000-0000-4000-8000-000000000000","channel_mask":"email:…abcd@example.test"}}}}}},"security":[{"bearer":[]}],"summary":"Выпуск кода владения. Код в тело не кладётся","tags":["ownership"]}},"/v1/persons/{fspPersonId}/ownership-challenges/{challengeId}/confirm":{"post":{"operationId":"OwnershipController_confirm","parameters":[{"name":"fspPersonId","required":true,"in":"path","schema":{"type":"string"}},{"name":"challengeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"example":{"code":"<код>"}}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Проверка кода владения","tags":["ownership"]}},"/health":{"get":{"operationId":"HealthController_live","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"example":{"status":"ok"}}}}}},"summary":"Живость процесса","tags":["health"]}}},"info":{"title":"Мок реестра ФСП","description":"HTTP-контракт мока реестра ФСП. Платформа вызывает его сервисным Bearer-токеном. Код подтверждения владения и полный контакт в ответах не публикуются.","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{}}}