{"openapi":"3.1.0","info":{"title":"Племенная книга — REST API","version":"1.0.0","description":"Описание собрано из тех же коллекций, из которых построен сам API, и обновляется вместе с ними — расходиться им негде.\n\n**Как войти.** POST /api/users/login возвращает токен. Дальше его передают заголовком `Authorization: JWT <токен>`. Браузер может пользоваться cookie `payload-token`, которую ставит та же ручка.\n\n**Чего здесь нет.** Прав доступа: одна и та же ручка отдаёт разное разным, и это свойство правил, а не схемы. Рядом с REST работает GraphQL на /api/graphql — та же модель, другой способ спрашивать.\n\n**Разделы.** Имя каждой группы ручек начинается с раздела — «Стадо · Животные». Разделов в самом формате OpenAPI нет, поэтому они приклеены к именам; порядок ниже — тот же, что на странице.\n\n- **Стадо** — Животные, их площадки, смена владельца и сохранённые способы смотреть на них.\n- **События** — Что происходило с животным во времени. Отёлы, осеменения и дойки — отдельными коллекциями: их пишут тысячами строк, и у каждой свои поля.\n- **Оценка** — Племенная ценность и то, из чего она считается: признаки, экстерьер, профили весов и базы сравнения.\n- **Проверка** — Путь данных от загрузки до подписи Ассоциации: пакеты, заявки и правила, по которым записи сверяют.\n- **Документы** — Свидетельства, протоколы и файлы, которыми они подтверждены.\n- **Люди** — Учётные записи, хозяйства и приглашения сотрудников.\n- **Доступ** — Вход в систему и то, кому открыты ваши записи: точечный доступ хозяйствам и ссылки на просмотр для тех, у кого учётной записи нет.\n- **Журналы** — Что происходило с данными и кто это сделал. Журналы не пишутся через API: записать в них можно только служебным вызовом.\n- **Справочники** — Ведутся Ассоциацией и одни на всю книгу: своя порода или своя причина выбытия у каждого хозяйства сделала бы записи несравнимыми.\n- **Платформа** — Замеры производительности и прогоны проверок: факты о самой системе. Через API не пишутся — их кладут служебные маршруты."},"servers":[{"url":"dvasincom-sketch-plemkniga-6202.twc1.net"}],"tags":[{"name":"Стадо · Животные"},{"name":"Стадо · Стада"},{"name":"Стадо · Перемещения"},{"name":"Стадо · Сохранённые отборы"},{"name":"События · Отёлы"},{"name":"События · Осеменения"},{"name":"События · Контрольные дойки"},{"name":"События · События здоровья"},{"name":"События · События"},{"name":"Оценка · История оценок"},{"name":"Оценка · Оценки экстерьера"},{"name":"Оценка · Профили индекса"},{"name":"Оценка · Значения индекса"},{"name":"Оценка · Базы сравнения"},{"name":"Проверка · Пакеты загрузки данных"},{"name":"Проверка · Заявки на верификацию"},{"name":"Проверка · Настройки проверок"},{"name":"Проверка · Пороги проверок","description":"Числа, по которым срабатывают автоматические проверки. Строка нужна только там, где значение отличается от заложенного."},{"name":"Проверка · Неопознанные колонки"},{"name":"Документы · Документы"},{"name":"Документы · Медиа"},{"name":"Люди · Пользователи"},{"name":"Люди · Организации"},{"name":"Люди · Приглашения"},{"name":"Доступ · Запросы доступа"},{"name":"Доступ · Точечные доступы"},{"name":"Доступ · Ссылки на просмотр"},{"name":"Доступ · Вход","description":"Получить токен и узнать, кто вы."},{"name":"Журналы · Журнал правок"},{"name":"Журналы · Журнал операций"},{"name":"Журналы · Журнал просмотров"},{"name":"Журналы · Реестр удалённых записей","description":"След записей, убранных из книги. Пополняется сценарием очистки архива, руками не правится."},{"name":"Справочники · Породы","description":"Соответствует полю «NPOR» в ИАС «Селэкс»"},{"name":"Справочники · Линии и семейства","description":"Соответствует полю «NLIN / NVETKA / FAMILY» в ИАС «Селэкс»"},{"name":"Справочники · Категории племучёта","description":"Соответствует полю «NKAT» в ИАС «Селэкс»"},{"name":"Справочники · Классы племенной ценности","description":"Соответствует полю «NKKLASS» в ИАС «Селэкс»"},{"name":"Справочники · Назначения животного","description":"Соответствует полю «NNAZNACH» в ИАС «Селэкс»"},{"name":"Справочники · Причины выбытия","description":"Соответствует полю «NPV» в ИАС «Селэкс»"},{"name":"Справочники · Масти","description":"Соответствует полю «NMAST» в ИАС «Селэкс»"},{"name":"Справочники · Группы крови","description":"Соответствует полю «GRUPPA_KRO» в ИАС «Селэкс»"},{"name":"Справочники · Методы воспроизводства","description":"Соответствует полю «NRIP» в ИАС «Селэкс»"},{"name":"Справочники · Типы биоматериала","description":"Соответствует полю «NTIP_SPERM» в ИАС «Селэкс»"},{"name":"Справочники · Результаты осеменения","description":"Соответствует полю «NREZOT» в ИАС «Селэкс»"},{"name":"Справочники · Типы ДНК-тестов"},{"name":"Справочники · Типы гаплотипов"},{"name":"Справочники · Типы событий здоровья"},{"name":"Справочники · Специалисты по осеменению","description":"Соответствует полю «NTEXN» в ИАС «Селэкс»"},{"name":"Платформа · Замеры производительности"},{"name":"Платформа · Прогоны проверок"},{"name":"Прочее · Взвешивания"},{"name":"Прочее · Бонитировки"},{"name":"Прочее · Страны"},{"name":"Прочее · Регионы"},{"name":"Прочее · Районы"},{"name":"Прочее · Типы пород"}],"paths":{"/api/users":{"get":{"tags":["Люди · Пользователи"],"summary":"Список: Пользователи","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/users"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Люди · Пользователи"],"summary":"Создать: Пользователь","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/users"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/users/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Люди · Пользователи"],"summary":"Запись: Пользователь","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/users"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Люди · Пользователи"],"summary":"Изменить: Пользователь","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/users"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Люди · Пользователи"],"summary":"Удалить: Пользователь","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/organizations":{"get":{"tags":["Люди · Организации"],"summary":"Список: Организации","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/organizations"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Люди · Организации"],"summary":"Создать: Организация","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/organizations"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/organizations/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Люди · Организации"],"summary":"Запись: Организация","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/organizations"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Люди · Организации"],"summary":"Изменить: Организация","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/organizations"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Люди · Организации"],"summary":"Удалить: Организация","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/herds":{"get":{"tags":["Стадо · Стада"],"summary":"Список: Стада","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/herds"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Стадо · Стада"],"summary":"Создать: Стадо","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/herds"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/herds/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Стадо · Стада"],"summary":"Запись: Стадо","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/herds"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Стадо · Стада"],"summary":"Изменить: Стадо","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/herds"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Стадо · Стада"],"summary":"Удалить: Стадо","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/animals":{"get":{"tags":["Стадо · Животные"],"summary":"Список: Животные","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/animals"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Стадо · Животные"],"summary":"Создать: Животное","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animals"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/animals/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Стадо · Животные"],"summary":"Запись: Животное","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/animals"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Стадо · Животные"],"summary":"Изменить: Животное","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animals"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Стадо · Животные"],"summary":"Удалить: Животное","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/movements":{"get":{"tags":["Стадо · Перемещения"],"summary":"Список: Перемещения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/movements"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Стадо · Перемещения"],"summary":"Создать: Перемещение","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/movements"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/movements/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Стадо · Перемещения"],"summary":"Запись: Перемещение","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/movements"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Стадо · Перемещения"],"summary":"Изменить: Перемещение","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/movements"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Стадо · Перемещения"],"summary":"Удалить: Перемещение","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/calvings":{"get":{"tags":["События · Отёлы"],"summary":"Список: Отёлы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/calvings"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["События · Отёлы"],"summary":"Создать: Отёл","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/calvings"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/calvings/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["События · Отёлы"],"summary":"Запись: Отёл","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/calvings"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["События · Отёлы"],"summary":"Изменить: Отёл","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/calvings"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["События · Отёлы"],"summary":"Удалить: Отёл","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/inseminations":{"get":{"tags":["События · Осеменения"],"summary":"Список: Осеменения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/inseminations"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["События · Осеменения"],"summary":"Создать: Осеменение","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/inseminations"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/inseminations/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["События · Осеменения"],"summary":"Запись: Осеменение","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/inseminations"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["События · Осеменения"],"summary":"Изменить: Осеменение","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/inseminations"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["События · Осеменения"],"summary":"Удалить: Осеменение","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/milk-tests":{"get":{"tags":["События · Контрольные дойки"],"summary":"Список: Контрольные дойки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/milk-tests"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["События · Контрольные дойки"],"summary":"Создать: Контрольная дойка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/milk-tests"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/milk-tests/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["События · Контрольные дойки"],"summary":"Запись: Контрольная дойка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/milk-tests"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["События · Контрольные дойки"],"summary":"Изменить: Контрольная дойка","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/milk-tests"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["События · Контрольные дойки"],"summary":"Удалить: Контрольная дойка","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/weighings":{"get":{"tags":["Прочее · Взвешивания"],"summary":"Список: Взвешивания","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/weighings"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Прочее · Взвешивания"],"summary":"Создать: Взвешивание","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/weighings"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/weighings/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Прочее · Взвешивания"],"summary":"Запись: Взвешивание","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/weighings"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Прочее · Взвешивания"],"summary":"Изменить: Взвешивание","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/weighings"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Прочее · Взвешивания"],"summary":"Удалить: Взвешивание","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/health-events":{"get":{"tags":["События · События здоровья"],"summary":"Список: События здоровья","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/health-events"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["События · События здоровья"],"summary":"Создать: Событие здоровья","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/health-events"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/health-events/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["События · События здоровья"],"summary":"Запись: Событие здоровья","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/health-events"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["События · События здоровья"],"summary":"Изменить: Событие здоровья","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/health-events"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["События · События здоровья"],"summary":"Удалить: Событие здоровья","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-evaluations":{"get":{"tags":["Оценка · История оценок"],"summary":"Список: История оценок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/animal-evaluations"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Оценка · История оценок"],"summary":"Создать: Оценка животного","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-evaluations"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-evaluations/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Оценка · История оценок"],"summary":"Запись: Оценка животного","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-evaluations"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Оценка · История оценок"],"summary":"Изменить: Оценка животного","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-evaluations"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Оценка · История оценок"],"summary":"Удалить: Оценка животного","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-exteriors":{"get":{"tags":["Оценка · Оценки экстерьера"],"summary":"Список: Оценки экстерьера","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/animal-exteriors"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Оценка · Оценки экстерьера"],"summary":"Создать: Оценка экстерьера","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-exteriors"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-exteriors/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Оценка · Оценки экстерьера"],"summary":"Запись: Оценка экстерьера","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-exteriors"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Оценка · Оценки экстерьера"],"summary":"Изменить: Оценка экстерьера","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-exteriors"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Оценка · Оценки экстерьера"],"summary":"Удалить: Оценка экстерьера","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/gradings":{"get":{"tags":["Прочее · Бонитировки"],"summary":"Список: Бонитировки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/gradings"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Прочее · Бонитировки"],"summary":"Создать: Бонитировка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/gradings"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/gradings/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Прочее · Бонитировки"],"summary":"Запись: Бонитировка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gradings"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Прочее · Бонитировки"],"summary":"Изменить: Бонитировка","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/gradings"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Прочее · Бонитировки"],"summary":"Удалить: Бонитировка","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-revisions":{"get":{"tags":["Журналы · Журнал правок"],"summary":"Список: Журнал правок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/animal-revisions"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Журналы · Журнал правок"],"summary":"Создать: Правка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-revisions"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-revisions/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Журналы · Журнал правок"],"summary":"Запись: Правка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-revisions"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Журналы · Журнал правок"],"summary":"Изменить: Правка","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-revisions"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Журналы · Журнал правок"],"summary":"Удалить: Правка","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-removals":{"get":{"tags":["Журналы · Реестр удалённых записей"],"summary":"Список: Реестр удалённых записей","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/animal-removals"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Журналы · Реестр удалённых записей"],"summary":"Создать: Удалённая запись","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-removals"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-removals/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Журналы · Реестр удалённых записей"],"summary":"Запись: Удалённая запись","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-removals"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Журналы · Реестр удалённых записей"],"summary":"Изменить: Удалённая запись","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-removals"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Журналы · Реестр удалённых записей"],"summary":"Удалить: Удалённая запись","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/data-submissions":{"get":{"tags":["Проверка · Пакеты загрузки данных"],"summary":"Список: Пакеты загрузки данных","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/data-submissions"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Проверка · Пакеты загрузки данных"],"summary":"Создать: Пакет данных","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-submissions"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/data-submissions/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Проверка · Пакеты загрузки данных"],"summary":"Запись: Пакет данных","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-submissions"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Проверка · Пакеты загрузки данных"],"summary":"Изменить: Пакет данных","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-submissions"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Проверка · Пакеты загрузки данных"],"summary":"Удалить: Пакет данных","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/verification-requests":{"get":{"tags":["Проверка · Заявки на верификацию"],"summary":"Список: Заявки на верификацию","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/verification-requests"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Проверка · Заявки на верификацию"],"summary":"Создать: Заявка на верификацию","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/verification-requests"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/verification-requests/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Проверка · Заявки на верификацию"],"summary":"Запись: Заявка на верификацию","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/verification-requests"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Проверка · Заявки на верификацию"],"summary":"Изменить: Заявка на верификацию","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/verification-requests"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Проверка · Заявки на верификацию"],"summary":"Удалить: Заявка на верификацию","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/invitations":{"get":{"tags":["Люди · Приглашения"],"summary":"Список: Приглашения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/invitations"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Люди · Приглашения"],"summary":"Создать: Приглашение","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitations"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/invitations/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Люди · Приглашения"],"summary":"Запись: Приглашение","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitations"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Люди · Приглашения"],"summary":"Изменить: Приглашение","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitations"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Люди · Приглашения"],"summary":"Удалить: Приглашение","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/operations":{"get":{"tags":["Журналы · Журнал операций"],"summary":"Список: Журнал операций","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/operations"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Журналы · Журнал операций"],"summary":"Создать: Операция","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/operations"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/operations/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Журналы · Журнал операций"],"summary":"Запись: Операция","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/operations"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Журналы · Журнал операций"],"summary":"Изменить: Операция","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/operations"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Журналы · Журнал операций"],"summary":"Удалить: Операция","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/access-requests":{"get":{"tags":["Доступ · Запросы доступа"],"summary":"Список: Запросы доступа","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/access-requests"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Доступ · Запросы доступа"],"summary":"Создать: Запрос доступа","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-requests"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/access-requests/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Доступ · Запросы доступа"],"summary":"Запись: Запрос доступа","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-requests"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Доступ · Запросы доступа"],"summary":"Изменить: Запрос доступа","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-requests"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Доступ · Запросы доступа"],"summary":"Удалить: Запрос доступа","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/access-grants":{"get":{"tags":["Доступ · Точечные доступы"],"summary":"Список: Точечные доступы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/access-grants"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Доступ · Точечные доступы"],"summary":"Создать: Точечный доступ","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-grants"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/access-grants/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Доступ · Точечные доступы"],"summary":"Запись: Точечный доступ","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-grants"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Доступ · Точечные доступы"],"summary":"Изменить: Точечный доступ","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-grants"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Доступ · Точечные доступы"],"summary":"Удалить: Точечный доступ","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/access-views":{"get":{"tags":["Журналы · Журнал просмотров"],"summary":"Список: Журнал просмотров","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/access-views"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Журналы · Журнал просмотров"],"summary":"Создать: Просмотр карточки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-views"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/access-views/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Журналы · Журнал просмотров"],"summary":"Запись: Просмотр карточки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-views"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Журналы · Журнал просмотров"],"summary":"Изменить: Просмотр карточки","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/access-views"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Журналы · Журнал просмотров"],"summary":"Удалить: Просмотр карточки","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/share-links":{"get":{"tags":["Доступ · Ссылки на просмотр"],"summary":"Список: Ссылки на просмотр","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/share-links"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Доступ · Ссылки на просмотр"],"summary":"Создать: Ссылка на просмотр","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/share-links"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/share-links/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Доступ · Ссылки на просмотр"],"summary":"Запись: Ссылка на просмотр","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/share-links"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Доступ · Ссылки на просмотр"],"summary":"Изменить: Ссылка на просмотр","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/share-links"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Доступ · Ссылки на просмотр"],"summary":"Удалить: Ссылка на просмотр","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/check-settings":{"get":{"tags":["Проверка · Настройки проверок"],"summary":"Список: Настройки проверок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/check-settings"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Проверка · Настройки проверок"],"summary":"Создать: Настройка проверки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-settings"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/check-settings/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Проверка · Настройки проверок"],"summary":"Запись: Настройка проверки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-settings"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Проверка · Настройки проверок"],"summary":"Изменить: Настройка проверки","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-settings"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Проверка · Настройки проверок"],"summary":"Удалить: Настройка проверки","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/check-thresholds":{"get":{"tags":["Проверка · Пороги проверок"],"summary":"Список: Пороги проверок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/check-thresholds"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Проверка · Пороги проверок"],"summary":"Создать: Порог проверки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-thresholds"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/check-thresholds/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Проверка · Пороги проверок"],"summary":"Запись: Порог проверки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-thresholds"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Проверка · Пороги проверок"],"summary":"Изменить: Порог проверки","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-thresholds"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Проверка · Пороги проверок"],"summary":"Удалить: Порог проверки","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/index-profiles":{"get":{"tags":["Оценка · Профили индекса"],"summary":"Список: Профили индекса","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/index-profiles"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Оценка · Профили индекса"],"summary":"Создать: Профиль индекса","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-profiles"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/index-profiles/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Оценка · Профили индекса"],"summary":"Запись: Профиль индекса","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-profiles"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Оценка · Профили индекса"],"summary":"Изменить: Профиль индекса","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-profiles"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Оценка · Профили индекса"],"summary":"Удалить: Профиль индекса","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/index-values":{"get":{"tags":["Оценка · Значения индекса"],"summary":"Список: Значения индекса","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/index-values"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Оценка · Значения индекса"],"summary":"Создать: Значение индекса","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-values"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/index-values/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Оценка · Значения индекса"],"summary":"Запись: Значение индекса","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-values"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Оценка · Значения индекса"],"summary":"Изменить: Значение индекса","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-values"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Оценка · Значения индекса"],"summary":"Удалить: Значение индекса","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/index-bases":{"get":{"tags":["Оценка · Базы сравнения"],"summary":"Список: Базы сравнения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/index-bases"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Оценка · Базы сравнения"],"summary":"Создать: База сравнения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-bases"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/index-bases/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Оценка · Базы сравнения"],"summary":"Запись: База сравнения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-bases"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Оценка · Базы сравнения"],"summary":"Изменить: База сравнения","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/index-bases"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Оценка · Базы сравнения"],"summary":"Удалить: База сравнения","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/events":{"get":{"tags":["События · События"],"summary":"Список: События","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/events"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["События · События"],"summary":"Создать: Событие","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/events"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/events/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["События · События"],"summary":"Запись: Событие","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/events"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["События · События"],"summary":"Изменить: Событие","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/events"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["События · События"],"summary":"Удалить: Событие","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/documents":{"get":{"tags":["Документы · Документы"],"summary":"Список: Документы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/documents"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Документы · Документы"],"summary":"Создать: Документ","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/documents"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/documents/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Документы · Документы"],"summary":"Запись: Документ","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/documents"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Документы · Документы"],"summary":"Изменить: Документ","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/documents"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Документы · Документы"],"summary":"Удалить: Документ","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/media":{"get":{"tags":["Документы · Медиа"],"summary":"Список: Медиа","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/media"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Документы · Медиа"],"summary":"Создать: Файл","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/media"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/media/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Документы · Медиа"],"summary":"Запись: Файл","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/media"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Документы · Медиа"],"summary":"Изменить: Файл","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/media"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Документы · Медиа"],"summary":"Удалить: Файл","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/saved-searches":{"get":{"tags":["Стадо · Сохранённые отборы"],"summary":"Список: Сохранённые отборы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/saved-searches"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Стадо · Сохранённые отборы"],"summary":"Создать: Отбор","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/saved-searches"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/saved-searches/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Стадо · Сохранённые отборы"],"summary":"Запись: Отбор","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/saved-searches"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Стадо · Сохранённые отборы"],"summary":"Изменить: Отбор","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/saved-searches"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Стадо · Сохранённые отборы"],"summary":"Удалить: Отбор","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/bench-runs":{"get":{"tags":["Платформа · Замеры производительности"],"summary":"Список: Замеры производительности","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/bench-runs"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Платформа · Замеры производительности"],"summary":"Создать: Замер","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bench-runs"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/bench-runs/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Платформа · Замеры производительности"],"summary":"Запись: Замер","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/bench-runs"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Платформа · Замеры производительности"],"summary":"Изменить: Замер","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bench-runs"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Платформа · Замеры производительности"],"summary":"Удалить: Замер","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/check-runs":{"get":{"tags":["Платформа · Прогоны проверок"],"summary":"Список: Прогоны проверок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/check-runs"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Платформа · Прогоны проверок"],"summary":"Создать: Прогон проверок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-runs"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/check-runs/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Платформа · Прогоны проверок"],"summary":"Запись: Прогон проверок","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-runs"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Платформа · Прогоны проверок"],"summary":"Изменить: Прогон проверок","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/check-runs"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Платформа · Прогоны проверок"],"summary":"Удалить: Прогон проверок","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/pending-columns":{"get":{"tags":["Проверка · Неопознанные колонки"],"summary":"Список: Неопознанные колонки","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/pending-columns"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Проверка · Неопознанные колонки"],"summary":"Создать: Неопознанная колонка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pending-columns"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/pending-columns/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Проверка · Неопознанные колонки"],"summary":"Запись: Неопознанная колонка","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pending-columns"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Проверка · Неопознанные колонки"],"summary":"Изменить: Неопознанная колонка","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pending-columns"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Проверка · Неопознанные колонки"],"summary":"Удалить: Неопознанная колонка","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/breeds":{"get":{"tags":["Справочники · Породы"],"summary":"Список: Породы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/breeds"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Породы"],"summary":"Создать: Порода","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeds"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/breeds/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Породы"],"summary":"Запись: Порода","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeds"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Породы"],"summary":"Изменить: Порода","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeds"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Породы"],"summary":"Удалить: Порода","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/lines":{"get":{"tags":["Справочники · Линии и семейства"],"summary":"Список: Линии и семейства","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/lines"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Линии и семейства"],"summary":"Создать: Линия / семейство","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/lines"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/lines/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Линии и семейства"],"summary":"Запись: Линия / семейство","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/lines"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Линии и семейства"],"summary":"Изменить: Линия / семейство","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/lines"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Линии и семейства"],"summary":"Удалить: Линия / семейство","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/breeding-categories":{"get":{"tags":["Справочники · Категории племучёта"],"summary":"Список: Категории племучёта","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/breeding-categories"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Категории племучёта"],"summary":"Создать: Категория племучёта","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeding-categories"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/breeding-categories/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Категории племучёта"],"summary":"Запись: Категория племучёта","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeding-categories"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Категории племучёта"],"summary":"Изменить: Категория племучёта","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeding-categories"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Категории племучёта"],"summary":"Удалить: Категория племучёта","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/breeding-classes":{"get":{"tags":["Справочники · Классы племенной ценности"],"summary":"Список: Классы племенной ценности","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/breeding-classes"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Классы племенной ценности"],"summary":"Создать: Класс племенной ценности","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeding-classes"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/breeding-classes/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Классы племенной ценности"],"summary":"Запись: Класс племенной ценности","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeding-classes"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Классы племенной ценности"],"summary":"Изменить: Класс племенной ценности","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breeding-classes"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Классы племенной ценности"],"summary":"Удалить: Класс племенной ценности","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-purposes":{"get":{"tags":["Справочники · Назначения животного"],"summary":"Список: Назначения животного","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/animal-purposes"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Назначения животного"],"summary":"Создать: Назначение животного","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-purposes"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/animal-purposes/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Назначения животного"],"summary":"Запись: Назначение животного","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-purposes"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Назначения животного"],"summary":"Изменить: Назначение животного","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/animal-purposes"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Назначения животного"],"summary":"Удалить: Назначение животного","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/disposal-reasons":{"get":{"tags":["Справочники · Причины выбытия"],"summary":"Список: Причины выбытия","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/disposal-reasons"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Причины выбытия"],"summary":"Создать: Причина выбытия","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/disposal-reasons"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/disposal-reasons/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Причины выбытия"],"summary":"Запись: Причина выбытия","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/disposal-reasons"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Причины выбытия"],"summary":"Изменить: Причина выбытия","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/disposal-reasons"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Причины выбытия"],"summary":"Удалить: Причина выбытия","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/coat-colors":{"get":{"tags":["Справочники · Масти"],"summary":"Список: Масти","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/coat-colors"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Масти"],"summary":"Создать: Масть","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/coat-colors"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/coat-colors/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Масти"],"summary":"Запись: Масть","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/coat-colors"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Масти"],"summary":"Изменить: Масть","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/coat-colors"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Масти"],"summary":"Удалить: Масть","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/blood-groups":{"get":{"tags":["Справочники · Группы крови"],"summary":"Список: Группы крови","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/blood-groups"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Группы крови"],"summary":"Создать: Группа крови","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/blood-groups"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/blood-groups/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Группы крови"],"summary":"Запись: Группа крови","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/blood-groups"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Группы крови"],"summary":"Изменить: Группа крови","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/blood-groups"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Группы крови"],"summary":"Удалить: Группа крови","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/reproduction-methods":{"get":{"tags":["Справочники · Методы воспроизводства"],"summary":"Список: Методы воспроизводства","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/reproduction-methods"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Методы воспроизводства"],"summary":"Создать: Метод воспроизводства","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/reproduction-methods"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/reproduction-methods/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Методы воспроизводства"],"summary":"Запись: Метод воспроизводства","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reproduction-methods"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Методы воспроизводства"],"summary":"Изменить: Метод воспроизводства","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/reproduction-methods"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Методы воспроизводства"],"summary":"Удалить: Метод воспроизводства","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/semen-types":{"get":{"tags":["Справочники · Типы биоматериала"],"summary":"Список: Типы биоматериала","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/semen-types"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Типы биоматериала"],"summary":"Создать: Тип биоматериала","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/semen-types"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/semen-types/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Типы биоматериала"],"summary":"Запись: Тип биоматериала","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/semen-types"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Типы биоматериала"],"summary":"Изменить: Тип биоматериала","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/semen-types"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Типы биоматериала"],"summary":"Удалить: Тип биоматериала","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/insemination-results":{"get":{"tags":["Справочники · Результаты осеменения"],"summary":"Список: Результаты осеменения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/insemination-results"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Результаты осеменения"],"summary":"Создать: Результат осеменения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/insemination-results"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/insemination-results/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Результаты осеменения"],"summary":"Запись: Результат осеменения","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/insemination-results"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Результаты осеменения"],"summary":"Изменить: Результат осеменения","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/insemination-results"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Результаты осеменения"],"summary":"Удалить: Результат осеменения","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/dna-test-types":{"get":{"tags":["Справочники · Типы ДНК-тестов"],"summary":"Список: Типы ДНК-тестов","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/dna-test-types"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Типы ДНК-тестов"],"summary":"Создать: Тип ДНК-теста","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dna-test-types"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/dna-test-types/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Типы ДНК-тестов"],"summary":"Запись: Тип ДНК-теста","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dna-test-types"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Типы ДНК-тестов"],"summary":"Изменить: Тип ДНК-теста","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dna-test-types"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Типы ДНК-тестов"],"summary":"Удалить: Тип ДНК-теста","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/haplotype-types":{"get":{"tags":["Справочники · Типы гаплотипов"],"summary":"Список: Типы гаплотипов","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/haplotype-types"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Типы гаплотипов"],"summary":"Создать: Тип гаплотипа","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/haplotype-types"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/haplotype-types/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Типы гаплотипов"],"summary":"Запись: Тип гаплотипа","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/haplotype-types"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Типы гаплотипов"],"summary":"Изменить: Тип гаплотипа","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/haplotype-types"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Типы гаплотипов"],"summary":"Удалить: Тип гаплотипа","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/health-event-types":{"get":{"tags":["Справочники · Типы событий здоровья"],"summary":"Список: Типы событий здоровья","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/health-event-types"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Типы событий здоровья"],"summary":"Создать: Тип события здоровья","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/health-event-types"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/health-event-types/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Типы событий здоровья"],"summary":"Запись: Тип события здоровья","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/health-event-types"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Типы событий здоровья"],"summary":"Изменить: Тип события здоровья","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/health-event-types"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Типы событий здоровья"],"summary":"Удалить: Тип события здоровья","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/countries":{"get":{"tags":["Прочее · Страны"],"summary":"Список: Страны","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/countries"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Прочее · Страны"],"summary":"Создать: Страна","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/countries"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/countries/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Прочее · Страны"],"summary":"Запись: Страна","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/countries"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Прочее · Страны"],"summary":"Изменить: Страна","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/countries"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Прочее · Страны"],"summary":"Удалить: Страна","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/regions":{"get":{"tags":["Прочее · Регионы"],"summary":"Список: Регионы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/regions"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Прочее · Регионы"],"summary":"Создать: Регион","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/regions"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/regions/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Прочее · Регионы"],"summary":"Запись: Регион","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/regions"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Прочее · Регионы"],"summary":"Изменить: Регион","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/regions"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Прочее · Регионы"],"summary":"Удалить: Регион","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/districts":{"get":{"tags":["Прочее · Районы"],"summary":"Список: Районы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/districts"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Прочее · Районы"],"summary":"Создать: Район","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/districts"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/districts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Прочее · Районы"],"summary":"Запись: Район","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/districts"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Прочее · Районы"],"summary":"Изменить: Район","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/districts"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Прочее · Районы"],"summary":"Удалить: Район","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/breed-types":{"get":{"tags":["Прочее · Типы пород"],"summary":"Список: Типы пород","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/breed-types"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Прочее · Типы пород"],"summary":"Создать: Тип породы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breed-types"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/breed-types/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Прочее · Типы пород"],"summary":"Запись: Тип породы","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/breed-types"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Прочее · Типы пород"],"summary":"Изменить: Тип породы","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/breed-types"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Прочее · Типы пород"],"summary":"Удалить: Тип породы","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/technicians":{"get":{"tags":["Справочники · Специалисты по осеменению"],"summary":"Список: Специалисты по осеменению","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","parameters":[{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"Условие отбора в формате Payload: where[поле][оператор]=значение. Операторы: equals, not_equals, greater_than, greater_than_equal, less_than, less_than_equal, like, in, not_in, exists. Условия объединяются through and/or: where[or][0][state][equals]=alive. Стандартными средствами OpenAPI этот язык не описывается — здесь он объявлен строкой намеренно, чтобы не выглядеть точнее, чем есть.","example":"where[state][equals]=alive"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10},"description":"Сколько записей на странице. 0 — без ограничения (осторожно на книге)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Поле сортировки; минус впереди — по убыванию: sort=-createdAt"},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"На сколько уровней разворачивать связи. 0 — только идентификаторы: быстрее и предсказуемее, если связанные записи не нужны."}],"responses":{"200":{"description":"Страница выдачи","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"$ref":"#/components/schemas/technicians"}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"}}}}}}}},"post":{"tags":["Справочники · Специалисты по осеменению"],"summary":"Создать: Специалист ИО","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/technicians"}}}},"responses":{"201":{"description":"Запись создана"},"403":{"description":"Недостаточно прав"}}}},"/api/technicians/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":1}}],"get":{"tags":["Справочники · Специалисты по осеменению"],"summary":"Запись: Специалист ИО","description":"Выдача зависит от того, кто спрашивает: хозяйство видит свои записи и публичные, Ассоциация — все, аноним — только публичные. Это правила доступа, а не схема ответа, и в схеме они не выражены.","responses":{"200":{"description":"Запись","content":{"application/json":{"schema":{"$ref":"#/components/schemas/technicians"}}}},"403":{"description":"Недостаточно прав"},"404":{"description":"Не найдено"}}},"patch":{"tags":["Справочники · Специалисты по осеменению"],"summary":"Изменить: Специалист ИО","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/technicians"}}}},"responses":{"200":{"description":"Изменено"},"403":{"description":"Недостаточно прав"}}},"delete":{"tags":["Справочники · Специалисты по осеменению"],"summary":"Удалить: Специалист ИО","responses":{"200":{"description":"Удалено"},"403":{"description":"Недостаточно прав"}}}},"/api/users/login":{"post":{"tags":["Доступ · Вход"],"summary":"Войти и получить токен","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string"},"password":{"type":"string"}}}}}},"responses":{"200":{"description":"Токен и данные пользователя","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"exp":{"type":"integer"},"user":{"$ref":"#/components/schemas/users"}}}}}},"401":{"description":"Неверная пара e-mail и пароль"}}}},"/api/users/me":{"get":{"tags":["Доступ · Вход"],"summary":"Кто я","responses":{"200":{"description":"Текущий пользователь или null"}}}}},"components":{"schemas":{"users":{"type":"object","description":"Пользователь","properties":{"lastName":{"type":"string","description":"Фамилия"},"firstName":{"type":"string","description":"Имя"},"middleName":{"type":"string","description":"Отчество"},"role":{"type":"string","enum":["farmer","service","individual","expert","admin"],"description":"Роль"},"phone":{"type":"string","description":"Телефон"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство или сервисная организация, к которой привязан пользователь. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"position":{"type":"string","description":"Должность"},"orgRole":{"type":"string","enum":["head","operator","viewer"],"description":"Роль в хозяйстве"},"blockedAt":{"type":"string","format":"date-time","description":"Заблокирован"},"blockedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кем. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"blockReason":{"type":"string","description":"Причина блокировки"},"confirmed":{"type":"boolean","description":"Заявка подтверждена Ассоциацией"},"acceptedPolicy":{"type":"boolean","description":"Согласие на обработку персональных данных"},"notifySubmissions":{"type":"boolean","description":"Проверка пакетов данных"},"notifyTrust":{"type":"boolean","description":"Изменение уровня достоверности"},"notifyNews":{"type":"boolean","description":"Сообщения Ассоциации"},"notifySeenAt":{"type":"string","format":"date-time","description":"Уведомления просмотрены"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"email":{"type":"string"},"resetPasswordToken":{"type":"string"},"resetPasswordExpiration":{"type":"string","format":"date-time"},"salt":{"type":"string"},"hash":{"type":"string"},"loginAttempts":{"type":"number"},"lockUntil":{"type":"string","format":"date-time"},"sessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}}},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["lastName","firstName","role","email"]},"organizations":{"type":"object","description":"Организация","properties":{"name":{"type":"string","description":"Наименование"},"shortName":{"type":"string","description":"Краткое наименование"},"nameKey":{"type":"string","description":"Считается автоматически, служит для поиска дублей"},"presence":{"type":"string","enum":["registered","referenced"],"description":"Присутствие в системе"},"referencedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство, оформлявшее перемещение, — к нему вопросы при разборе дублей. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"mergedInto":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Слито с. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"type":{"type":"string","enum":["farm","service","individual"],"description":"Тип"},"inn":{"type":"string","description":"ИНН"},"kpp":{"type":"string","description":"КПП"},"ogrn":{"type":"string","description":"ОГРН"},"region":{"type":"string","enum":["Самарская область","Московская область","Ленинградская область","Краснодарский край","Красноярский край","Республика Татарстан","Свердловская область","Воронежская область","Кировская область","Удмуртская Республика"],"description":"Регион"},"phone":{"type":"string","description":"Телефон"},"email":{"type":"string","description":"E-mail"},"address":{"type":"string","description":"Адрес"},"membership":{"type":"string","enum":["none","pending","member","suspended"],"description":"Членство в Ассоциации"},"membershipReview":{"type":"object","properties":{"decidedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто решил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"decidedAt":{"type":"string","format":"date-time","description":"Когда"},"since":{"type":"string","format":"date-time","description":"Член с"},"comment":{"type":"string","description":"Основание или причина отказа"}},"description":"Заполняется кабинетом Ассоциации"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["name"]},"herds":{"type":"object","description":"Стадо","properties":{"name":{"type":"string","description":"Название стада"},"code":{"type":"string","description":"Код стада"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Организация. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"address":{"type":"string","description":"Площадка / адрес"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["name","organization"]},"animals":{"type":"object","description":"Животное","properties":{"uuid":{"type":"string","description":"Наш ключ: присваивается при создании и никогда не меняется. Уезжает во ФГИАС ПР в колонку «Идентификатор учётной системы»"},"fgias":{"type":"object","properties":{"baseUuid":{"type":"string","description":"Ключ животного в реестре. Без него выгрузка по животному невозможна"},"registrationUuid":{"type":"string","description":"Регистрационный номер ФГИАС ПР"},"unsm":{"type":"string","description":"Номер бирки или чипа по правилам маркирования — не УНЖ"},"syncedAt":{"type":"string","format":"date-time","description":"Дата обратного файла, из которого их взяли"}},"description":"Номера, присвоенные государственным реестром. Заполняются обратным файлом"},"identNumber":{"type":"string","description":"Индивидуальный №"},"idFormat":{"type":"string","enum":["rf","rus","icar","usa","can","deu","internal"],"description":"Формат ID"},"name":{"type":"string","description":"Кличка"},"nameLatin":{"type":"string","description":"Транслитерация по ГОСТ 7.79-2000 (ISO-9), заполняется автоматически"},"altIds":{"type":"object","properties":{"isoId":{"type":"string","description":"ISO-ID (NIDENT)"},"internationalId":{"type":"string","description":"Международный ID (Interbull)"},"earTag":{"type":"string","description":"Номер ушной бирки"},"inventoryNumber":{"type":"string","description":"Инвентарный № (NINV)"},"chipNumber":{"type":"string","description":"Номер чипа RFID (NINV1)"},"chipDate":{"type":"string","format":"date-time","description":"Дата чипирования"},"gpkMark":{"type":"string","description":"Марка ГПК"},"gpkNumber":{"type":"string","description":"Номер в ГПК"},"originCountry":{"type":"string","enum":["RUS","BLR","KAZ","KGZ","ARM","NLD","DEU","USA","CAN","FRA","DNK","CZE","BEL","ITA","ESP","GBR","IRL","AUT","CHE","POL","SWE","FIN","HUN","ISR","EST","LVA","LTU","AUS","NZL","URY","BRA","ARG"],"description":"Для импортных животных. Пусто означает Россию — так номер и строится"},"originNumber":{"type":"string","description":"Заполняется один раз при вводе импортного животного и не меняется"}},"description":"Дополнительные идентификаторы"},"sex":{"type":"string","enum":["female","male"],"description":"Пол"},"state":{"type":"string","enum":["alive","sold","culled","dead"],"description":"Состояние"},"ageGroup":{"type":"string","enum":["calf","heifer","firstCalf","cow2","cow3","bull"],"description":"Возрастная группа"},"ageGroupDate":{"type":"string","format":"date-time","description":"Проставляется отёлом; для ФГИАС ПР обязательна"},"grade":{"type":"string","enum":["eliteRecord","elite","first","second","outOfClass"],"description":"По инструкции бонитировки, из племенных документов"},"gradeDate":{"type":"string","format":"date-time","description":"Проставляется бонитировкой"},"birthDate":{"type":"string","format":"date-time","description":"Дата рождения"},"breed":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Порода. Ссылка на «breeds». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"breedType":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Тип породы. Ссылка на «breed-types». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"bloodPercent":{"type":"number","description":"Кровность по голштину, %"},"improvers":{"type":"object","properties":{"breed1":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Улучшающая порода 1. Ссылка на «breeds». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"share1":{"type":"number","description":"Доля крови 1, %"},"breed2":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Улучшающая порода 2. Ссылка на «breeds». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"share2":{"type":"number","description":"Доля крови 2, %"}},"description":"Породы-улучшатели (NPOR_UL1 / NKROVN1)"},"coatColor":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Масть. Ссылка на «coat-colors». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"bloodGroup":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Группа крови. Ссылка на «blood-groups». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"purpose":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Назначение. Ссылка на «animal-purposes». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"breedDate":{"type":"string","format":"date-time","description":"Дата определения породы"},"purposeDate":{"type":"string","format":"date-time","description":"Дата определения назначения"},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Владелец. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"herd":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Стадо. Ссылка на «herds». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"author":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Автор записи. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"pastOwners":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Заполняется записью о перемещении. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"trustLevel":{"type":"number","description":"Меняется только решением Ассоциации по заявке. Снаружи не пишется: −1 отклонено, 0 черновик, 1 проверено собственником, 2 подтверждено лабораторией, 3 верифицировано ассоциацией"},"trustCheckedAt":{"type":"string","format":"date-time","description":"Дата подтверждения"},"publicVisible":{"type":"boolean","description":"Показывать в публичном списке"},"publicDetails":{"type":"boolean","description":"Открыть полную карточку анонимным пользователям"},"birthPlace":{"type":"object","properties":{"country":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Страна рождения. Ссылка на «countries». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"region":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Регион рождения. Ссылка на «regions». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"district":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Район рождения. Ссылка на «districts». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"farm":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Если оно заведено в книге — реквизиты возьмутся отсюда. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"farmName":{"type":"string","description":"Когда хозяйства нет в книге: чужое, зарубежное или закрытое. Заполняется, только если связь выше пуста"}},"description":"Требуется шаблоном «Основные сведения» ФГИАС ПР"},"photo":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Фото. Ссылка на «media». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"notes":{"type":"string","description":"Примечание"},"forSale":{"type":"boolean","description":"Выставлено на продажу"},"ipc":{"type":"number","description":"Итоговое значение, выводится в таблице поиска"},"ipcRank":{"type":"number","description":"Ранг по ИПЦ (служебное)"},"ipcDetails":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"},"percentile":{"type":"number","description":"Процентиль"},"center":{"type":"string","description":"Расчётный центр или организация: CDCB, Lactanet, региональный центр, сама Ассоциация"},"base":{"type":"string","description":"Как названа база у источника: CDCB-2025, Interbull-2024, «база 2020 года по области»"}},"description":"Общий индекс племенной ценности"},"evaluationDate":{"type":"string","format":"date-time","description":"Дата последней оценки"},"production":{"type":"object","properties":{"reliabilityLevel":{"type":"number","description":"Уровень достоверности"},"milk":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, кг"},"r":{"type":"number","description":"R, %"}},"description":"Удой, кг"},"fatPercent":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, %"},"r":{"type":"number","description":"R, %"}},"description":"Жир, %"},"proteinPercent":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, %"},"r":{"type":"number","description":"R, %"}},"description":"Белок, %"},"fatKg":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, кг"},"r":{"type":"number","description":"R, %"}},"description":"Жир, кг"},"proteinKg":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, кг"},"r":{"type":"number","description":"R, %"}},"description":"Белок, кг"},"productionIndex":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"ПИ-Продуктивный индекс*"}},"description":"Продуктивные признаки"},"reproduction":{"type":"object","properties":{"fertility":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"У быка это способность его дочерей приходить в охоту и оплодотворяться — не его собственная. Собственная лежит в группе «Семя»"}},"description":"Воспроизводительные качества"},"semen":{"type":"object","properties":{"conception":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"Отклонение стельности от среднего по породе в процентных пунктах: +2 означает, что в стаде со средней стельностью 30 % это семя даёт 32 %"},"inseminations":{"type":"number","description":"Осеменений в расчёте"},"stock":{"type":"object","properties":{"code":{"type":"string","description":"Как семя обозначено в каталоге и на соломинке"},"available":{"type":"boolean","description":"Есть в наличии"},"updatedAt":{"type":"string","format":"date-time","description":"На какой день верно «есть» или «нет»"},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Может не совпадать с владельцем быка: он стоит на племпредприятии, а семя разошлось по дистрибьюторам. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"description":"Про склад, а не про качество: есть ли семя и чьё оно"}},"description":"Собственный признак быка, а не прогноз по дочерям"},"health":{"type":"object","properties":{"reliabilityLevel":{"type":"number","description":"Уровень достоверности"},"productiveLongevity":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"Продуктивное долголетие"},"udderHealth":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, балл"},"r":{"type":"number","description":"R, %"}},"description":"Здоровье вымени, балл"},"calfMortality":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, %"},"r":{"type":"number","description":"R, %"}},"description":"Смертность приплода, %"},"calvingEase":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз, балл"},"r":{"type":"number","description":"R, %"}},"description":"Лёгкость отёла, балл"}},"description":"Признаки здоровья животного"},"calvingRoles":{"type":"object","properties":{"easeSire":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"Насколько легко телятся коровы, осеменённые этим быком"},"easeMgs":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"Насколько легко телятся его дочери"},"stillbirthSire":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"Доля мёртворождённых у коров, осеменённых этим быком"},"stillbirthMgs":{"type":"object","properties":{"forecast":{"type":"number","description":"Прогноз"},"r":{"type":"number","description":"R, %"}},"description":"Доля мёртворождённых у его дочерей"}},"description":"Отёлы по роли быка (как отец телёнка и как дед по матери)"},"linearScore":{"type":"object","properties":{"assessedAt":{"type":"string","format":"date-time","description":"Дата оценки"},"height":{"type":"number","description":"Рост"},"chestWidth":{"type":"number","description":"Ширина груди"},"bodyDepth":{"type":"number","description":"Глубина туловища"},"bodyType":{"type":"number","description":"Тип телосложения"},"rumpAngle":{"type":"number","description":"Положение таза"},"rumpWidth":{"type":"number","description":"Ширина таза"},"rearLegsRear":{"type":"number","description":"Постановка задних ног (вид сзади)"},"rearLegsSide":{"type":"number","description":"Постановка задних ног (вид сбоку)"},"hoofAngle":{"type":"number","description":"Угол копыта"},"frontLegs":{"type":"number","description":"Ориентация передних ног"},"movement":{"type":"number","description":"Гармоничность движения"},"foreUdder":{"type":"number","description":"Прикрепление передних долей вымени"},"frontTeatPlacement":{"type":"number","description":"Расположение передних сосков"},"teatLength":{"type":"number","description":"Длина сосков"},"udderDepth":{"type":"number","description":"Глубина вымени"},"rearUdder":{"type":"number","description":"Прикрепление задних долей вымени"},"centralLigament":{"type":"number","description":"Центральная связка"},"rearTeatPlacement":{"type":"number","description":"Расположение задних сосков"}},"description":"Линейная оценка экстерьера (собственный промер, 1–9)"},"exterior":{"type":"object","properties":{"height":{"type":"number","description":"Рост"},"chestWidth":{"type":"number","description":"Ширина груди"},"bodyDepth":{"type":"number","description":"Глубина туловища"},"bodyType":{"type":"number","description":"Тип телосложения"},"rumpAngle":{"type":"number","description":"Положение таза"},"rumpWidth":{"type":"number","description":"Ширина таза"},"rearLegsRear":{"type":"number","description":"Постановка задних ног (вид сзади)"},"rearLegsSide":{"type":"number","description":"Постановка задних ног (вид сбоку)"},"hoofAngle":{"type":"number","description":"Угол копыта"},"frontLegs":{"type":"number","description":"Ориентация передних ног"},"movement":{"type":"number","description":"Гармоничность движения"},"foreUdder":{"type":"number","description":"Прикрепление передних долей вымени"},"frontTeatPlacement":{"type":"number","description":"Расположение передних сосков"},"teatLength":{"type":"number","description":"Длина сосков"},"udderDepth":{"type":"number","description":"Глубина вымени"},"rearUdder":{"type":"number","description":"Прикрепление задних долей вымени"},"centralLigament":{"type":"number","description":"Центральная связка"},"rearTeatPlacement":{"type":"number","description":"Расположение задних сосков"},"bodyComposite":{"type":"number","description":"Композит тела"},"udderComposite":{"type":"number","description":"Композит вымени"},"legsComposite":{"type":"number","description":"Композит ног"}},"description":"Экстерьер: передача потомству (отклонение, −2…+2)"},"summary":{"type":"object","properties":{"milkYield":{"type":"number","description":"Удой, кг"},"fatPercent":{"type":"number","description":"Жир, %"},"proteinPercent":{"type":"number","description":"Белок, %"},"fatKg":{"type":"number","description":"Жир, кг"},"proteinKg":{"type":"number","description":"Белок, кг"},"fatProteinSum":{"type":"number","description":"СБП, кг"},"milkRank":{"type":"number","description":"Ранг по удою (служебное)"}},"description":"Значения последней завершённой лактации"},"lactations":{"type":"array","items":{"type":"object","properties":{"number":{"type":"number","description":"№ л"},"calvingDate":{"type":"string","format":"date-time","description":"Дата отёла"},"inseminationDate":{"type":"string","format":"date-time","description":"Дата осем."},"serviceBull":{"type":"string","description":"Серв-бык"},"dd":{"type":"number","description":"ДД"},"milkYield":{"type":"number","description":"У кг"},"milk305":{"type":"number","description":"У_305"},"fat305":{"type":"number","description":"Ж 305, %"},"protein305":{"type":"number","description":"Б 305, %"},"scc":{"type":"number","description":"КСК"},"dryOffDate":{"type":"string","format":"date-time","description":"Запуск"},"fatKg":{"type":"number","description":"Жир, кг"},"proteinKg":{"type":"number","description":"Белок, кг"},"endDate":{"type":"string","format":"date-time","description":"Дата окончания лактации"},"id":{"type":"string","description":"ID"}}},"description":"Лактации"},"shows":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date-time","description":"Дата мероприятия"},"title":{"type":"string","description":"Название мероприятия"},"place":{"type":"string","description":"Место проведения"},"awards":{"type":"string","description":"Полученные награды"},"prize":{"type":"string","description":"Как записано в документах: сумма, кубок, приз"},"id":{"type":"string","description":"ID"}}},"description":"Шаблон ФГИАС ПР «Участие в выставках и соревнованиях»"},"category":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Категория племучёта (NKAT). Ссылка на «breeding-categories». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"registrationBasis":{"type":"string","enum":["origin","productivity"],"description":"ТЗ, п. 1.5. Печатается в свидетельстве: «Племенная книга, категория II: внесено по продуктивности»"},"breedingClass":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Класс (NKKLASS). Ссылка на «breeding-classes». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"receiptMethod":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Рождение, пересадка эмбриона, импорт. Ссылка на «reproduction-methods». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"father":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Отец. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"mother":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Мать. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"line":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Линия. Ссылка на «lines». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"family":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Семейство. Ссылка на «lines». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"pedigreeText":{"type":"object","properties":{"fatherId":{"type":"string","description":"Отец, инд. №"},"fatherName":{"type":"string","description":"Отец, кличка"},"motherId":{"type":"string","description":"Мать, инд. №"},"motherName":{"type":"string","description":"Мать, кличка"},"fatherFatherId":{"type":"string","description":"ОО, инд. №"},"motherFatherId":{"type":"string","description":"ОМ, инд. №"}},"description":"Предки (если нет карточек в системе)"},"inbreeding":{"type":"number","description":"Коэффициент инбридинга, %"},"inbreedingNeedsApproval":{"type":"boolean","description":"Требует ручного подтверждения (инбридинг > 25%)"},"genetics":{"type":"object","properties":{"cvm":{"type":"string","enum":["unknown","free","carrier"],"description":"Комплексная вертебральная малформация"},"blad":{"type":"string","enum":["unknown","free","carrier"],"description":"Наследственный иммунодефицит"},"dumps":{"type":"string","enum":["unknown","free","carrier"],"description":"DUMPS"},"kappaCasein":{"type":"string","description":"Каппа-казеин (K_CAS)"},"betaCasein":{"type":"string","description":"Бета-казеин (K_BCAS)"},"betaLactoglobulin":{"type":"string","description":"Бета-лактоглобулин (K_BLGLOB)"}},"description":"Генетические дефекты"},"haplotypes":{"type":"array","items":{"type":"object","properties":{"type":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Тип. Ссылка на «haplotype-types». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"status":{"type":"string","enum":["unknown","free","carrier"],"description":"Статус"},"date":{"type":"string","format":"date-time","description":"Дата определения"},"id":{"type":"string","description":"ID"}}},"description":"Гаплотипы"},"dnaTests":{"type":"array","items":{"type":"object","properties":{"type":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Тип теста. Ссылка на «dna-test-types». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"date":{"type":"string","format":"date-time","description":"Дата"},"laboratory":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Лаборатория. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"verdict":{"type":"string","enum":["confirmed","excluded","inconclusive"],"description":"Свидетельство выпускается только при подтверждённом происхождении"},"result":{"type":"string","description":"Результат"},"certificateNumber":{"type":"string","description":"Номер генетического сертификата"},"certificateDate":{"type":"string","format":"date-time","description":"Дата выдачи сертификата"},"snpCount":{"type":"number","description":"Количество SNP-маркеров"},"authMethod":{"type":"string","enum":["byOM","byO","byM","none"],"description":"Способ подтверждения происхождения"},"isagBm1818":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagBm1824":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagBm2113":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagEth3":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagEth10":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagEth225":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagInra023":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagSps115":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagTgla53":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagTgla122":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagTgla126":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"isagTgla227":{"type":"string","description":"Пара аллелей, как в протоколе: 121/133"},"file":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Протокол. Ссылка на «media». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"id":{"type":"string","description":"ID"}}},"description":"ДНК-тесты"},"arrivalDate":{"type":"string","format":"date-time","description":"Дата поступления (DATE_POSTU)"},"previousOrganization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Предыдущее хозяйство (NHOZ_PRINA). Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"disposalDate":{"type":"string","format":"date-time","description":"Дата выбытия (DATE_V)"},"disposalReason":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Причина выбытия (NPV). Ссылка на «disposal-reasons». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"disposalOrganization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство выбытия (NHOZ_VYBPO). Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"archived":{"type":"boolean","description":"Архив — не «удалено»: карточка уходит из книги и из кабинета, но след о ней остаётся в реестре удалённых записей навсегда"},"archiveReason":{"type":"string","description":"Причина архивации"},"archivedAt":{"type":"string","format":"date-time","description":"Когда отправлено в архив"},"archivedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто отправил в архив. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"lastEditUser":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто изменил последним. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"lastEditTime":{"type":"string","format":"date-time","description":"Когда изменено"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["identNumber","sex","owner"]},"movements":{"type":"object","description":"Перемещение","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"date":{"type":"string","format":"date-time","description":"Дата"},"kind":{"type":"string","enum":["sale","lease","transfer","import","cull","death"],"description":"Вид"},"from":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Пусто — животное поступило извне книги. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"to":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Пусто — выбраковка или падёж. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"fromHerd":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Из стада. Ссылка на «herds». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"toHerd":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"В стадо. Ссылка на «herds». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"basis":{"type":"string","description":"Номер накладной, договора или ветеринарного свидетельства"},"note":{"type":"string","description":"Примечание"},"applied":{"type":"boolean","description":"Отражено в карточке"},"recordedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто записал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","date","kind"]},"calvings":{"type":"object","description":"Отёл","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Корова. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"number":{"type":"number","description":"Номер отёла"},"date":{"type":"string","format":"date-time","description":"Дата отёла"},"eventType":{"type":"string","enum":["calving","abortion","dryOff"],"description":"Тип события"},"result":{"type":"string","enum":["one","twins","triplets","multiple","multipleMixed","unknown"],"description":"Сколько плодов было; пол — числами ниже"},"milkingDays":{"type":"number","description":"Количество дойных дней"},"dryOffDate":{"type":"string","format":"date-time","description":"Дата запуска"},"ease":{"type":"string","enum":["easy","assisted","hard"],"description":"Лёгкость отёла"},"calfWeight":{"type":"number","description":"Вес телёнка, кг"},"liveHeifers":{"type":"number","description":"Живых тёлочек"},"liveBulls":{"type":"number","description":"Живых бычков"},"stillborn":{"type":"number","description":"Включая нежизнеспособных"},"calves":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Полученный приплод. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"comment":{"type":"string","description":"Комментарий"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","number","date"]},"inseminations":{"type":"object","description":"Осеменение","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Корова / тёлка. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"lactationNumber":{"type":"number","description":"К какому отёлу относится осеменение"},"date":{"type":"string","format":"date-time","description":"Дата осеменения"},"bull":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Бык-производитель. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"semenType":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Тип биоматериала. Ссылка на «semen-types». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"method":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Метод воспроизводства. Ссылка на «reproduction-methods». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"doses":{"type":"number","description":"Доз семени"},"attemptNumber":{"type":"number","description":"Кратность осеменения"},"technician":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Техник-осеменатор. Ссылка на «technicians». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"result":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Результат. Ссылка на «insemination-results». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"pregnancyCheckDate":{"type":"string","format":"date-time","description":"Дата теста на стельность"},"comment":{"type":"string","description":"Комментарий"},"source":{"type":"string","enum":["manual","import","api"],"description":"Источник данных"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","date"]},"milk-tests":{"type":"object","description":"Контрольная дойка","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"date":{"type":"string","format":"date-time","description":"Дата замера"},"lactationNumber":{"type":"number","description":"Номер лактации"},"dailyYield":{"type":"number","description":"Удой за день, кг"},"fatPercent":{"type":"number","description":"Жир, %"},"proteinPercent":{"type":"number","description":"Белок, %"},"somaticCells":{"type":"number","description":"Соматические клетки, тыс./мл"},"laboratory":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Лаборатория. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"source":{"type":"string","enum":["lab","owner","import","api"],"description":"Источник данных"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","date","dailyYield"]},"weighings":{"type":"object","description":"Взвешивание","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"date":{"type":"string","format":"date-time","description":"Дата взвешивания"},"weight":{"type":"number","description":"Положительное число, до двух знаков после запятой"},"sign":{"type":"string","enum":["birth","age","firstInsemination","averageLactation","highestLactation","sale","disposal"],"description":"Зачем взвешивали. Реестр требует его ключом: без признака число ничего не значит — 800 кг при продаже и 800 при выбытии говорят о разном"},"lactationNumber":{"type":"number","description":"Только для самок при наличии лактации"},"note":{"type":"string","description":"Примечание"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","date","weight"]},"health-events":{"type":"object","description":"Событие здоровья","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"type":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Тип события. Ссылка на «health-event-types». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"date":{"type":"string","format":"date-time","description":"Дата"},"title":{"type":"string","description":"Краткое описание"},"severity":{"type":"string","enum":["mild","moderate","severe"],"description":"Степень тяжести"},"startDate":{"type":"string","format":"date-time","description":"Начало периода"},"endDate":{"type":"string","format":"date-time","description":"Окончание периода"},"excludeFromAnalytics":{"type":"boolean","description":"Исключать период из расчёта продуктивности"},"description":{"type":"string","description":"Описание"},"reportedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто зарегистрировал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","type","date"]},"animal-evaluations":{"type":"object","description":"Оценка животного","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"evaluatedAt":{"type":"string","format":"date-time","description":"Дата оценки"},"source":{"type":"string","enum":["center","association","import","foreign"],"description":"Кто посчитал. Оценки из разных источников нельзя сравнивать напрямую: у них разные модели и разные базы"},"baseVersion":{"type":"string","description":"Относительно чего считались отклонения; см. index-bases"},"isCurrent":{"type":"boolean","description":"Действующая"},"ipc":{"type":"number","description":"ИПЦ"},"ipcR":{"type":"number","description":"Достоверность, %"},"ipcPercentile":{"type":"number","description":"Процентиль"},"productionReliabilityLevel":{"type":"number","description":"Уровень достоверности оценки"},"milkForecast":{"type":"number","description":"Удой, кг"},"milkR":{"type":"number","description":"R, %"},"fatPercentForecast":{"type":"number","description":"Жир, %"},"fatPercentR":{"type":"number","description":"R, %"},"proteinPercentForecast":{"type":"number","description":"Белок, %"},"proteinPercentR":{"type":"number","description":"R, %"},"fatKgForecast":{"type":"number","description":"Жир, кг"},"fatKgR":{"type":"number","description":"R, %"},"proteinKgForecast":{"type":"number","description":"Белок, кг"},"proteinKgR":{"type":"number","description":"R, %"},"productionIndexForecast":{"type":"number","description":"ПИ-Продуктивный индекс*"},"productionIndexR":{"type":"number","description":"R, %"},"fertilityForecast":{"type":"number","description":"Воспроизводительная способность"},"fertilityR":{"type":"number","description":"R, %"},"healthReliabilityLevel":{"type":"number","description":"Уровень достоверности оценки"},"productiveLongevityForecast":{"type":"number","description":"Продуктивное долголетие"},"productiveLongevityR":{"type":"number","description":"R, %"},"udderHealthForecast":{"type":"number","description":"Здоровье вымени, балл"},"udderHealthR":{"type":"number","description":"R, %"},"calfMortalityForecast":{"type":"number","description":"Смертность приплода, %"},"calfMortalityR":{"type":"number","description":"R, %"},"calvingEaseForecast":{"type":"number","description":"Лёгкость отёла, балл"},"calvingEaseR":{"type":"number","description":"R, %"},"note":{"type":"string","description":"Примечание"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","evaluatedAt","source"]},"animal-exteriors":{"type":"object","description":"Оценка экстерьера","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"assessedAt":{"type":"string","format":"date-time","description":"Дата оценки"},"lactation":{"type":"number","description":"По какой лактации оценивали; 0 — до первого отёла"},"assessor":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Бонитёр. Ссылка на «technicians». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"assessorOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто отвечает за оценку. ФГИАС ПР требует её наименование, ИНН и КПП. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"isCurrent":{"type":"boolean","description":"Действующая"},"height":{"type":"number","description":"Рост"},"chestWidth":{"type":"number","description":"Ширина груди"},"bodyDepth":{"type":"number","description":"Глубина туловища"},"bodyType":{"type":"number","description":"Тип телосложения"},"rumpAngle":{"type":"number","description":"Положение таза"},"rumpWidth":{"type":"number","description":"Ширина таза"},"rearLegsRear":{"type":"number","description":"Постановка задних ног (вид сзади)"},"rearLegsSide":{"type":"number","description":"Постановка задних ног (вид сбоку)"},"hoofAngle":{"type":"number","description":"Угол копыта"},"frontLegs":{"type":"number","description":"Ориентация передних ног"},"movement":{"type":"number","description":"Гармоничность движения"},"foreUdder":{"type":"number","description":"Прикрепление передних долей вымени"},"frontTeatPlacement":{"type":"number","description":"Расположение передних сосков"},"teatLength":{"type":"number","description":"Длина сосков"},"udderDepth":{"type":"number","description":"Глубина вымени"},"rearUdder":{"type":"number","description":"Прикрепление задних долей вымени"},"centralLigament":{"type":"number","description":"Центральная связка"},"rearTeatPlacement":{"type":"number","description":"Расположение задних сосков"},"bodyComposite":{"type":"number","description":"Композит тела"},"udderComposite":{"type":"number","description":"Композит вымени"},"legsComposite":{"type":"number","description":"Композит ног"},"generalView":{"type":"number","description":"Общий вид и развитие"},"bodyVolume":{"type":"number","description":"Объём туловища"},"dairyCharacter":{"type":"number","description":"У быка реестр зовёт это «молочными признаками»"},"legQuality":{"type":"number","description":"Качество ног"},"udderQuality":{"type":"number","description":"Только у коровы"},"rearBody":{"type":"number","description":"Только у быка — вместо вымени, которого у него нет"},"youngGeneral":{"type":"number","description":"Общий вид"},"youngBody":{"type":"number","description":"Голова и шея, грудь, холка, спина, поясница, туловище, зад"},"youngLegs":{"type":"number","description":"Конечности и копыта"},"note":{"type":"string","description":"Примечание"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","assessedAt"]},"gradings":{"type":"object","description":"Бонитировка","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"date":{"type":"string","format":"date-time","description":"Дата оценки"},"grade":{"type":"string","enum":["eliteRecord","elite","first","second","outOfClass"],"description":"Комплексный класс"},"score":{"type":"number","description":"Сумма баллов по инструкции; в свидетельстве бывает не всегда"},"assessorOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто провёл бонитировку. ФГИАС ПР требует ИНН и КПП. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"note":{"type":"string","description":"Примечание"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","date","grade"]},"animal-revisions":{"type":"object","description":"Правка","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"at":{"type":"string","format":"date-time","description":"Когда"},"user":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто изменил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"path":{"type":"string","description":"Путь в модели: birthDate, summary.milkYield"},"label":{"type":"string","description":"Название поля"},"before":{"type":"string","description":"Было"},"after":{"type":"string","description":"Стало"},"source":{"type":"string","enum":["manual","admin","system"],"description":"Откуда правка"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","at","path"]},"animal-removals":{"type":"object","description":"След записей, убранных из книги. Пополняется сценарием очистки архива, руками не правится.","properties":{"identNumber":{"type":"string","description":"Индивидуальный номер"},"name":{"type":"string","description":"Кличка"},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"birthDate":{"type":"string","format":"date-time","description":"Дата рождения"},"archivedAt":{"type":"string","format":"date-time","description":"Отправлено в архив"},"removedAt":{"type":"string","format":"date-time","description":"Удалено из книги"},"archivedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто отправил в архив. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"archiveReason":{"type":"string","description":"Причина архивации"},"removedRecords":{"type":"number","description":"Отёлы, дойки, осеменения, оценки — всё, что ссылалось на карточку"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["identNumber","removedAt"]},"data-submissions":{"type":"object","description":"Пакет данных","properties":{"number":{"type":"string","description":"Присваивается автоматически"},"kind":{"type":"string","enum":["events","animals","productivity","genomics"],"description":"Тип загрузки"},"status":{"type":"string","enum":["uploaded","checking","checked","accepted","rejected"],"description":"Статус"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Организация. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"submittedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто загрузил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"submittedAt":{"type":"string","format":"date-time","description":"Дата загрузки"},"sourceFile":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Исходный файл. Ссылка на «media». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animals":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Заполняется импортом; вручную менять не нужно. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"intake":{"type":"object","properties":{"rows":{"type":"number","description":"Строк в файле"},"created":{"type":"number","description":"Создано записей"},"updated":{"type":"number","description":"Обновлено записей"},"skipped":{"type":"number","description":"Пропущено строк"},"issues":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number","description":"Строка файла"},"ident":{"type":"string","description":"Индивидуальный номер"},"reason":{"type":"string","description":"Причина"},"id":{"type":"string","description":"ID"}}},"description":"Заполняется импортом, до 50 первых"},"valueIssues":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number","description":"Строка файла"},"ident":{"type":"string","description":"Индивидуальный номер"},"columnTitle":{"type":"string","description":"Колонка"},"reason":{"type":"string","description":"Что не так"},"id":{"type":"string","description":"ID"}}},"description":"Заполняется импортом, до 50 первых. Строка при этом принята"}},"description":"Заполняется импортом"},"review":{"type":"object","properties":{"checkedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проверил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"checkedAt":{"type":"string","format":"date-time","description":"Дата и время проверки"},"assignee":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Взял в работу. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"findings":{"type":"array","items":{"type":"object","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"field":{"type":"string","description":"Поле или показатель"},"severity":{"type":"string","enum":["fix","note"],"description":"Насколько существенно"},"text":{"type":"string","description":"Что не так"},"id":{"type":"string","description":"ID"}}},"description":"Заполняется экспертом при разборе пакета"},"comment":{"type":"string","description":"Например: «Все данные прошли успешную проверку» или «Часть данных не прошла проверку»"},"totalRows":{"type":"number","description":"Всего записей"},"acceptedRows":{"type":"number","description":"Принято"},"rejectedRows":{"type":"number","description":"С ошибками"},"errorProtocol":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"XLSX-файл со списком строк, не прошедших проверку. Ссылка на «media». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"description":"Результат проверки"},"consent":{"type":"object","properties":{"agreed":{"type":"boolean","description":"Владелец согласен с результатом и разрешает публикацию данных"},"agreedAt":{"type":"string","format":"date-time","description":"Дата согласия"},"publishedAt":{"type":"string","format":"date-time","description":"Дата публикации данных"}},"description":"Согласие владельца"},"history":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Когда"},"status":{"type":"string","enum":["uploaded","checking","checked","accepted","rejected"],"description":"Статус"},"actor":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"note":{"type":"string","description":"Примечание"},"id":{"type":"string","description":"ID"}}},"description":"История статусов"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["kind","status"]},"verification-requests":{"type":"object","description":"Заявка на верификацию","properties":{"number":{"type":"string","description":"Присваивается автоматически"},"status":{"type":"string","enum":["new","checking","approved","rejected","cancelled"],"description":"Состояние"},"purpose":{"type":"string","enum":["trust","certificate","membership"],"description":"Зачем"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"requestedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто подал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"requestedAt":{"type":"string","format":"date-time","description":"Когда подана"},"animals":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животные заявки. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"comment":{"type":"string","description":"Что хозяйство хочет пояснить о поданных записях"},"withdrawnAt":{"type":"string","format":"date-time","description":"Когда отозвана"},"withdrawnFor":{"type":"string","description":"Номер заявки, ради которой эта отозвана"},"review":{"type":"object","properties":{"assignee":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Взял в работу. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"decidedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Решение принял. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"decidedAt":{"type":"string","format":"date-time","description":"Когда"},"comment":{"type":"string","description":"Заключение"},"approvedCount":{"type":"number","description":"Подтверждено записей"},"heldCount":{"type":"number","description":"Не подтверждено"},"findings":{"type":"array","items":{"type":"object","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"field":{"type":"string","description":"Поле или показатель"},"severity":{"type":"string","enum":["fix","note"],"description":"Насколько существенно"},"text":{"type":"string","description":"Что не так"},"id":{"type":"string","description":"ID"}}},"description":"Замечания"},"dismissed":{"type":"array","items":{"type":"object","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"code":{"type":"string","description":"Код проверки"},"reason":{"type":"string","description":"Почему это не ошибка"},"by":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто снял. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"at":{"type":"string","format":"date-time","description":"Когда"},"id":{"type":"string","description":"ID"}}},"description":"Снятые автоматические находки"}},"description":"Разбор"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["status","animals"]},"invitations":{"type":"object","description":"Приглашение","properties":{"email":{"type":"string","description":"Кому"},"orgRole":{"type":"string","enum":["head","operator","viewer"],"description":"Роль"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"token":{"type":"string","description":"Токен"},"expiresAt":{"type":"string","format":"date-time","description":"Действует до"},"acceptedAt":{"type":"string","format":"date-time","description":"Принято"},"revokedAt":{"type":"string","format":"date-time","description":"Отозвано"},"invitedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто пригласил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"acceptedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто принял. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"note":{"type":"string","description":"Видно только вам"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["email","orgRole","organization","token","expiresAt"]},"operations":{"type":"object","description":"Операция","properties":{"at":{"type":"string","format":"date-time","description":"Когда"},"action":{"type":"string","enum":["login","login-refused","member-invited","invite-revoked","member-joined","role-changed","user-blocked","user-unblocked","animal-created","animal-archived","animal-restored","animal-purged","movement-recorded","submission-published","share-created","share-revoked","grant-issued","grant-revoked","verification-requested","verification-decided","document-issued","membership-decided","directory-merged","directory-confirmed"],"description":"Действие"},"actor":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Пусто — действие системы: срок хранения, пересчёт. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"actorName":{"type":"string","description":"Кто (на тот момент)"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Чьи данные. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"subjectType":{"type":"string","enum":["animal","user","organization","document","share","submission","verification","movement","none"],"description":"Предмет"},"subjectId":{"type":"number","description":"Идентификатор предмета"},"subject":{"type":"string","description":"Предмет (как читается)"},"summary":{"type":"string","description":"Что произошло"},"ip":{"type":"string","description":"Заголовок прокси. Подсказка при разборе, а не доказательство"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["at","action"]},"access-requests":{"type":"object","description":"Запрос доступа","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Заполняется по животному. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"requester":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто запросил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"requesterOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Организация заявителя. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"purpose":{"type":"string","enum":["purchase","semen","mating","verification","research","other"],"description":"Цель запроса"},"status":{"type":"string","enum":["new","approved","declined"],"description":"Состояние"},"scopes":{"type":"array","items":{"type":"string","enum":["origin","production","evaluation","documents"],"description":"Какие области просят"},"description":"Какие области просят"},"comment":{"type":"string","description":"Что именно нужно посмотреть и зачем"},"response":{"type":"string","description":"Ответ хозяйства"},"decidedAt":{"type":"string","format":"date-time","description":"Дата решения"},"decidedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто принял решение. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","purpose","status"]},"access-grants":{"type":"object","description":"Точечный доступ","properties":{"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Подставляется по животному или по сессии. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"grantee":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кому открыто. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Пусто — открыто всё стадо владельца. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"scopes":{"type":"array","items":{"type":"string","enum":["origin","production","evaluation","documents"],"description":"Что открыто"},"description":"Что открыто"},"expiresAt":{"type":"string","format":"date-time","description":"Пусто — бессрочно"},"issuedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто выдал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"revokedAt":{"type":"string","format":"date-time","description":"Отозван"},"revokedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто отозвал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"request":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Пусто — выдан по своей воле, без запроса. Ссылка на «access-requests». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"note":{"type":"string","description":"Зачем выдан — вспомнить через полгода"},"lastSeenAt":{"type":"string","format":"date-time","description":"Последний просмотр"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["owner","grantee","scopes"]},"access-views":{"type":"object","description":"Просмотр карточки","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"viewerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто смотрел. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Чьи данные (копия). Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"grant":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"По какому доступу. Ссылка на «access-grants». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"viewer":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Право у хозяйства, но открывал карточку человек. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"scopes":{"type":"array","items":{"type":"string","enum":["origin","production","evaluation","documents"],"description":"Что было открыто в последний раз"},"description":"Что было открыто в последний раз"},"firstAt":{"type":"string","format":"date-time","description":"Впервые"},"at":{"type":"string","format":"date-time","description":"В последний раз"},"sessions":{"type":"number","description":"Заходов"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","viewerOrg","owner","firstAt","at"]},"share-links":{"type":"object","description":"Ссылка на просмотр","properties":{"token":{"type":"string","description":"Токен ссылки"},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"createdBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто выпустил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"animals":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Записи. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"scopes":{"type":"array","items":{"type":"string","enum":["origin","production","evaluation","documents"],"description":"Что открыто"},"description":"Что открыто"},"expiresAt":{"type":"string","format":"date-time","description":"Действует до"},"revokedAt":{"type":"string","format":"date-time","description":"Отозвана"},"note":{"type":"string","description":"Видно только вам: «Иванову на осмотр», «в страховую»"},"opens":{"type":"number","description":"Открытий"},"lastOpenedAt":{"type":"string","format":"date-time","description":"Последнее открытие"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["token","owner","animals","scopes","expiresAt"]},"check-settings":{"type":"object","description":"Настройка проверки","properties":{"code":{"type":"string","description":"Из реестра `src/lib/checks-registry.ts`"},"enabled":{"type":"boolean","description":"Проверка действует"},"severity":{"type":"string","enum":["fix","note"],"description":"Пусто — как задано в реестре"},"note":{"type":"string","description":"Настройку через год будет читать другой человек. Без причины он не поймёт, можно ли её вернуть"},"updatedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто менял. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code"]},"check-thresholds":{"type":"object","description":"Числа, по которым срабатывают автоматические проверки. Строка нужна только там, где значение отличается от заложенного.","properties":{"key":{"type":"string","description":"Совпадает с именем в реестре порогов"},"value":{"type":"number","description":"Значение"},"note":{"type":"string","description":"Через год объяснять, почему порог не такой, как в реестре, будет другой человек"},"updatedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто изменил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["key","value"]},"index-profiles":{"type":"object","description":"Профиль индекса","properties":{"name":{"type":"string","description":"Название"},"kind":{"type":"string","enum":["selection","economic"],"description":"Вид весов"},"hint":{"type":"string","description":"Одна фраза: какое узкое место хозяйства он закрывает"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Пусто — стандартный профиль Ассоциации, виден всем. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"isDefault":{"type":"boolean","description":"Использовать по умолчанию"},"weights":{"type":"array","items":{"type":"object","properties":{"trait":{"type":"string","enum":["milk","fatKg","proteinKg","productiveLongevity","udderHealth","fertility","calvingEase","calfMortality","bodyComposite","udderComposite","legsComposite"],"description":"Признак"},"weight":{"type":"number","description":"Для селекционных — проценты влияния (отрицательные допустимы), для экономических — рублей на единицу"},"id":{"type":"string","description":"ID"}}},"description":"Веса признаков"},"author":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто создал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["name","kind"]},"index-values":{"type":"object","description":"Значение индекса","properties":{"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Animal. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"profileKey":{"type":"string","description":"Профиль"},"profileName":{"type":"string","description":"Название профиля на момент расчёта"},"kind":{"type":"string","enum":["selection","economic"],"description":"Kind"},"weights":{"description":"Веса на момент расчёта"},"baseVersion":{"type":"string","description":"Версия базы сравнения"},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Владелец (копия). Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"publicVisible":{"type":"boolean","description":"Публичная (копия)"},"archived":{"type":"boolean","description":"В архиве (копия)"},"state":{"type":"string","enum":["alive","sold","culled","dead"],"description":"Состояние (копия)"},"birthYear":{"type":"number","description":"Год рождения (копия)"},"evaluation":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Оценка, по которой посчитано. Ссылка на «animal-evaluations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"value":{"type":"number","description":"Значение индекса"},"reliability":{"type":"number","description":"Достоверность, %"},"percentile":{"type":"number","description":"Процентиль в группе"},"cohort":{"type":"number","description":"Ровесники по книге либо вся книга, если ровесников мало"},"cohortSameYear":{"type":"boolean","description":"Группа — ровесники"},"used":{"type":"number","description":"Used"},"computedAt":{"type":"string","format":"date-time","description":"Когда посчитано"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["animal","profileKey","value"]},"index-bases":{"type":"object","description":"База сравнения","properties":{"version":{"type":"string","description":"Например, АПГ-2026-08 — попадает в каждое рассчитанное значение"},"source":{"type":"string","enum":["own","borrowed"],"description":"Происхождение"},"note":{"type":"string","description":"Пояснение"},"isActive":{"type":"boolean","description":"Действующая"},"animalsUsed":{"type":"number","description":"Животных в выборке"},"computedAt":{"type":"string","format":"date-time","description":"Когда посчитана"},"traits":{"type":"array","items":{"type":"object","properties":{"trait":{"type":"string","enum":["milk","fatKg","proteinKg","productiveLongevity","udderHealth","fertility","calvingEase","calfMortality","bodyComposite","udderComposite","legsComposite"],"description":"Trait"},"mean":{"type":"number","description":"Среднее"},"sd":{"type":"number","description":"Генетическое σ"},"sdObserved":{"type":"number","description":"Разброс оценок"},"meanR":{"type":"number","description":"Средняя достоверность, %"},"n":{"type":"number","description":"По скольким животным посчитано"},"id":{"type":"string","description":"ID"}}},"description":"Признаки"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["version"]},"events":{"type":"object","description":"Событие","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"type":{"type":"string","enum":["dryOff","move","disposal","exteriorScore","calving","insemination","milkTest","vetTreatment"],"description":"Тип события"},"date":{"type":"string","format":"date-time","description":"Дата"},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"title":{"type":"string","description":"Краткое описание"},"value":{"type":"number","description":"Числовое значение"},"comment":{"type":"string","description":"Комментарий"},"status":{"type":"string","enum":["draft","sent","accepted","rejected"],"description":"Статус обработки"},"author":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Автор. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["type","date","animal"]},"documents":{"type":"object","description":"Документ","properties":{"title":{"type":"string","description":"Название"},"type":{"type":"string","enum":["pedigreeCertificate","zootechnicalCertificate","genotypeReport","vetCertificate","saleContract","other"],"description":"Тип документа"},"number":{"type":"string","description":"Номер"},"issuedAt":{"type":"string","format":"date-time","description":"Дата выдачи"},"publicCode":{"type":"string","description":"Печатается на бланке рядом с QR-кодом"},"animal":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Животное. Ссылка на «animals». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Организация. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"file":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Файл. Ссылка на «media». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"snapshot":{"description":"Снимок данных на момент выпуска"},"issuedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто выдал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"labName":{"type":"string","description":"Заполняется у протоколов лаборатории — они дают второй уровень достоверности"},"revoked":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Когда отозван"},"by":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто отозвал. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"reason":{"type":"string","description":"Причина отзыва"}},"description":"Отзыв"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["title"]},"media":{"type":"object","description":"Файл","properties":{"alt":{"type":"string","description":"Альтернативный текст"},"owner":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Хозяйство, которому файл принадлежит. Пусто — виден только Ассоциации. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"visibility":{"type":"string","enum":["private","public"],"description":"Видимость"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"url":{"type":"string","description":"Адрес файла; доступ к нему — по тем же правилам чтения, что и к записи"},"thumbnailURL":{"type":"string","description":"Thumbnail URL"},"filename":{"type":"string"},"mimeType":{"type":"string"},"filesize":{"type":"integer"},"width":{"type":"number"},"height":{"type":"number"},"focalX":{"type":"number"},"focalY":{"type":"number"},"sizes":{"type":"object","properties":{"thumbnail":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"width":{"type":"number"},"height":{"type":"number"},"mimeType":{"type":"string","description":"MIME Type"},"filesize":{"type":"number"},"filename":{"type":"string"}},"description":"thumbnail"},"card":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"width":{"type":"number"},"height":{"type":"number"},"mimeType":{"type":"string","description":"MIME Type"},"filesize":{"type":"number"},"filename":{"type":"string"}},"description":"card"}}},"id":{"type":"integer","description":"Идентификатор записи"}}},"saved-searches":{"type":"object","description":"Отбор","properties":{"name":{"type":"string","description":"Как отбор назовут в списке: «Коровы на выбраковку»"},"place":{"type":"string","enum":["book","herd"],"description":"Где применяется"},"query":{"type":"string","description":"Строка запроса — то же, что стоит в адресе страницы после «?»"},"scope":{"type":"string","enum":["private","organization"],"description":"Кто видит"},"author":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Автор. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Чьё это хозяйство — от него зависит, кому виден общий отбор. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["name","place","query","scope","author"]},"bench-runs":{"type":"object","description":"Замер","properties":{"label":{"type":"string","description":"Имя среды: «Прод». Повторный замер той же среды заменяет прежний — два замера одного места это не сравнение, а история"},"measuredAt":{"type":"string","format":"date-time","description":"Когда снят"},"animals":{"type":"number","description":"Половина смысла всех остальных цифр: на разном объёме они разные"},"runs":{"type":"number","description":"Прогонов на сценарий"},"server":{"description":"На чём мерили"},"rows":{"description":"Строки замера"},"notes":{"description":"То, из-за чего цифры можно понять неверно: объём базы, нехватка данных"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["label","measuredAt","animals","runs","rows"]},"check-runs":{"type":"object","description":"Прогон проверок","properties":{"label":{"type":"string","description":"Имя среды: «Прод», «Разработка». Повторный прогон заменяет прежний — смотрят сюда за нынешним состоянием, а не за лентой одинаковых ночей"},"ranAt":{"type":"string","format":"date-time","description":"Когда прогоняли"},"ok":{"type":"boolean","description":"Ни одна проба не нашла расхождений"},"failed":{"type":"number","description":"Проб с находками"},"total":{"type":"number","description":"Проб прогнано"},"ms":{"type":"number","description":"Заняло, мс"},"version":{"type":"string","description":"Версия платформы"},"results":{"description":"Массив: код пробы, исход, находки, длительность"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["label","ranAt","results"]},"pending-columns":{"type":"object","description":"Неопознанная колонка","properties":{"ownerOrg":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Проставляется автоматически, нужен для доступа прежнего владельца. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"title":{"type":"string","description":"Как называлась в файле"},"normalized":{"type":"string","description":"Приведённое имя"},"dataset":{"type":"string","description":"Паспорт, оценки, отёлы и так далее"},"status":{"type":"string","enum":["new","accepted","declined","duplicate"],"description":"Решение Ассоциации"},"mapsTo":{"type":"string","description":"Ключ признака в реестре, если колонка оказалась известной величиной под чужим названием"},"decision":{"type":"object","properties":{"comment":{"type":"string","description":"Отказ без объяснения возвращается тем же вопросом через полгода — от другого хозяйства"},"decidedBy":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Кто решил. Ссылка на «users». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"decidedAt":{"type":"string","format":"date-time","description":"Когда"}},"description":"Обоснование решения"},"seenTimes":{"type":"number","description":"Раз встречалась"},"rowsWithValue":{"type":"number","description":"Колонка из одного заполненного поля и колонка на три тысячи строк — разный разговор"},"firstSeenAt":{"type":"string","format":"date-time","description":"Впервые"},"lastSeenAt":{"type":"string","format":"date-time","description":"В последний раз"},"samples":{"description":"Примеры значений"},"organizations":{"type":"array","items":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"От каких хозяйств приходила. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."}},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["title","normalized"]},"breeds":{"type":"object","description":"Соответствует полю «NPOR» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"whffCode":{"type":"string","description":"Трёхбуквенный код: HOL — голштинская, JER — джерсейская. Справочник ведёт Interbull, один и тот же код у WHFF и ICAR. Уезжает в обмен по ADE и входит в международный номер животного; без него порода наружу не идёт"},"isImprover":{"type":"boolean","description":"Может использоваться как порода-улучшатель"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"lines":{"type":"object","description":"Соответствует полю «NLIN / NVETKA / FAMILY» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"kind":{"type":"string","enum":["line","branch","family"],"description":"Тип"},"parentLine":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Родительская линия. Ссылка на «lines». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"breeding-categories":{"type":"object","description":"Соответствует полю «NKAT» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"allowsIncompletePedigree":{"type":"boolean","description":"Отмечается для категории II — животное внесено по продуктивности (ТЗ, п. 1.5)"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"breeding-classes":{"type":"object","description":"Соответствует полю «NKKLASS» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"animal-purposes":{"type":"object","description":"Соответствует полю «NNAZNACH» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"disposal-reasons":{"type":"object","description":"Соответствует полю «NPV» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"coat-colors":{"type":"object","description":"Соответствует полю «NMAST» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"blood-groups":{"type":"object","description":"Соответствует полю «GRUPPA_KRO» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"reproduction-methods":{"type":"object","description":"Соответствует полю «NRIP» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"semen-types":{"type":"object","description":"Соответствует полю «NTIP_SPERM» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"insemination-results":{"type":"object","description":"Соответствует полю «NREZOT» в ИАС «Селэкс»","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"dna-test-types":{"type":"object","description":"Тип ДНК-теста","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"markerKind":{"type":"string","enum":["genetic-defect","protein","parentage","genomic-evaluation"],"description":"Вид маркера"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"haplotype-types":{"type":"object","description":"Тип гаплотипа","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"health-event-types":{"type":"object","description":"Тип события здоровья","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"affectsProductivity":{"type":"boolean","description":"Периоды таких событий могут исключаться из расчётов (ТЗ, п. 5.6, требование №4)"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"countries":{"type":"object","description":"Страна","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"regions":{"type":"object","description":"Регион","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"districts":{"type":"object","description":"Район","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"breed-types":{"type":"object","description":"Тип породы","properties":{"code":{"type":"string","description":"Короткое обозначение или числовой код из «Селэкс»"},"name":{"type":"string","description":"Наименование"},"sortOrder":{"type":"number","description":"Чем меньше, тем выше в списках"},"description":{"type":"string","description":"Описание"},"fgiasUuid":{"type":"string","description":"UUID той же записи в государственном реестре. Заполняется сверкой"},"isActive":{"type":"boolean","description":"Снимите галочку, чтобы скрыть из выпадающих списков"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["code","name"]},"technicians":{"type":"object","description":"Соответствует полю «NTEXN» в ИАС «Селэкс»","properties":{"fullName":{"type":"string","description":"ФИО"},"certificateNumber":{"type":"string","description":"Номер удостоверения"},"organization":{"oneOf":[{"type":"integer"},{"type":"object"}],"description":"Организация. Ссылка на «organizations». При depth=0 приходит идентификатор, при depth>0 — вложенная запись."},"isActive":{"type":"boolean","description":"Работает"},"updatedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Идентификатор записи"}},"required":["fullName"]}},"securitySchemes":{"jwt":{"type":"apiKey","in":"header","name":"Authorization","description":"Значение вида «JWT <токен>». Токен выдаёт POST /api/users/login."},"cookie":{"type":"apiKey","in":"cookie","name":"payload-token"}}},"security":[{"jwt":[]},{"cookie":[]}]}