# Eridos ## spec - single detection includes one photo - demo photos are a special screen - photo is recognized right after adding - OKT is implemented the same as retina, but with different endpoint (category model) - photo report is functionally the same in portrait/landscape - "add detection" screen is opened from detections screen - "detections" screen is detail screen opened from category menu - "retinopaty button" in menu opens another detail "detections screen"? ## android ui - login screen - logo - email input - password input - forgotten password link - login button - signup button - signup screen - email input - password input - city input - country dropdown - name input - surname input - patronim input - occupation dropdown - promocode input - signup button - menu screen - profile button - review button - retinopathy button - OKT button - profile screen - name - about me - country - city - email - occupation - position - organization - exit button - review screen - stars - feedback form - star rating - textbox - submit button - reviews list - card - stars - name - review - date - add detection menu screen - open file - take picture - open demo picture - detections screen (portrait) - exit button - photos gallery - detection screen (landscape) - (center) photo - view toggle (raw/processed) - left arrow button - right arrow button - (right) recognitions, list - recognition card - circle with color - label - (left) conclusions, list - conclusion card - label - status label (found/notfound) - chart card - label - chart - button link to full report ## ios UI - login screen - logo - email input - password input - forgotten password link - submit button - signup button - signup screen - email input - password input - city input - country dropdown - name input - surname input - patronim input - occupation dropdown - promocode input - submit button - category screen - (top left) logout button to login screen - (top right) profile button - retinopathy category navigation item - OKT category navigation item - retinopathy/OKT detail screen - add from gallery button - take picture button - add demo button - list of detections - back button to menu screen - photo screen - back button to detection screen - (left) photo - (botton center) view toggle (raw/processed) - (top center) left arrow button - (top center) right arrow button - (right) report button (show/hide) - (right) report sidebar - (top) tab panel - recognitions tab - conclusions tab - recognitions, list - recognition card - circle with color - label - conclusions, list - conclusion card - label - status label (found/notfound) - chart card - label - chart - button link to full report - profile screen - name - about me - country - city - email - occupation - position - organization - back button to menu ## API Все контуры имеют одинаковое представление в виде списка из списков с целыми числами и имеют следующий вид: ** Обработка фундус фото #+begin_src restclient POST https://functions.yandexcloud.net/d4e5t0njkd4f1mb9kh5l Content-Type: text/plain Accept: */* { "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImZldHNvcm5AZ21haWwuY29tIiwiaWF0IjoxNjI3MTMxMzgyfQ.CGQgvWOCcNBeo-AxTC1ApaJZZs1OKKEsM1ublnW679y4l78qjsebAtM1hD7Or5NrckZ29DwA8qmvZoJzjSfGrMJ3NrmnTHBVIx1EIx44IwZdJNPW6zXVrpTbyVL1gNyGrLS5FKVDh48lLANojMlg8zvOkQEMrgv440GG4LZubyj1APJ8m51Qm2uC_Nn0mgv-ooKoJHAQI8YCLDpCkXv2WMOVpMxgKOBX7iKknM8IYlh3oMNtIfxG5F4VeL_nYzIwIbbAZhtnvWJm-0bTbRhBk0FGDYYd2s8e2AZGPl5S7ZDU-RFU1Jau4czpUxt2dMuhve2acsVWnNxcKStU_M7bRZ6XJL9Nebme5-7iuejF8lpd2c1wBsecbTiF75b0GSagUJx3saeOumDlnGhQ-Y6Mo4dshfkPeAcMRhgo8l0-PJrh8LfbsrSjw2ywfpIE_k-kqV9PczIemFegMEcV_yHwN9iBqkD5900tXPA2nVpTQ_zeHb8rUkXf3jXh9WzUGHjkM1NMKv5L0SlQmcnLghv0qLCrqfGWrG0MJ6ZkTXZvi12kOcKCd88nJ8Li1RKVXE0pDNg7Mm5FoqIHDai_pO_bQjDusGMbp4PFamAHMgzuxqMD6tbs-oWhINID8ywnECMTnzHVzkegPz373x02dS0eMvf435YE_tT877M7fOy8L68", "image": "" } #+end_src #+RESULTS: #+BEGIN_SRC js // POST https://functions.yandexcloud.net/d4e5t0njkd4f1mb9kh5l // HTTP/1.1 401 Unauthorized // Date: Fri, 23 Jun 2023 17:11:37 GMT // Content-Length: 0 // Connection: keep-alive // Access-Control-Allow-Origin: * // Server: Yandex-Cloud-Functions/1.0 // X-Content-Type-Options: nosniff // X-Function-Id: d4e5t0njkd4f1mb9kh5l // X-Function-Version-Id: d4etbadc9vbndqjq61f8 // X-Request-Id: 4db12798-d24e-4062-9418-8777bdd7345a // Request duration: 3.204405s #+END_SRC Адрес: https://functions.yandexcloud.net/d4e5t0njkd4f1mb9kh5l Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: token — строка — токен пользователя; image — строка — data URL изображения в webp формате Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно Поля ответа: exudates_in_macula — булевское значение — true — если в макуле есть экссудаты; exudates_in_fovea — булевское значение — true — если в радиусе 500 микрон от центра макулы есть твердые экссудаты (клинически значимый макулярный отек); height — int32 — высота изображения; width — int32 — ширина изображения; image — строка — data URL изображения с предобработкой; macula — список float32 — список параметров макулы [x центра, y центра, диаметр 500 микрон от центра в пикселях, диаметр макулы в пикселях, масштаб мкм на пиксель]; hard_exudates — список списков int32 — контуры твердых экссудатов; intraretinal_hemorrhages — список списков int32 — контуры интраретинальных кровоизлияний; soft_exudates — список списков int32 — контуры мягких экссудатов; fibrose — список списков int32 — контуры фиброза; laser — список списков int32 — контуры лазерных коагулятов; microaneurysms — список списков int32 — контуры микроаневризмов; neovascularization — список списков int32 — контуры неоваскуляризации; preretinal — список списков int32 — контуры преретинальных кровоизлияний; va — список списков int32 — контуры венозных аномалий. ** Обработка ОКТ #+begin_src restclient POST https://functions.yandexcloud.net/d4e7i7f8odqn50mirlrm Content-Type: text/plain Accept: */* { "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImZldHNvcm5AZ21haWwuY29tIiwiaWF0IjoxNjI3MTMxMzgyfQ.CGQgvWOCcNBeo-AxTC1ApaJZZs1OKKEsM1ublnW679y4l78qjsebAtM1hD7Or5NrckZ29DwA8qmvZoJzjSfGrMJ3NrmnTHBVIx1EIx44IwZdJNPW6zXVrpTbyVL1gNyGrLS5FKVDh48lLANojMlg8zvOkQEMrgv440GG4LZubyj1APJ8m51Qm2uC_Nn0mgv-ooKoJHAQI8YCLDpCkXv2WMOVpMxgKOBX7iKknM8IYlh3oMNtIfxG5F4VeL_nYzIwIbbAZhtnvWJm-0bTbRhBk0FGDYYd2s8e2AZGPl5S7ZDU-RFU1Jau4czpUxt2dMuhve2acsVWnNxcKStU_M7bRZ6XJL9Nebme5-7iuejF8lpd2c1wBsecbTiF75b0GSagUJx3saeOumDlnGhQ-Y6Mo4dshfkPeAcMRhgo8l0-PJrh8LfbsrSjw2ywfpIE_k-kqV9PczIemFegMEcV_yHwN9iBqkD5900tXPA2nVpTQ_zeHb8rUkXf3jXh9WzUGHjkM1NMKv5L0SlQmcnLghv0qLCrqfGWrG0MJ6ZkTXZvi12kOcKCd88nJ8Li1RKVXE0pDNg7Mm5FoqIHDai_pO_bQjDusGMbp4PFamAHMgzuxqMD6tbs-oWhINID8ywnECMTnzHVzkegPz373x02dS0eMvf435YE_tT877M7fOy8L68", "image": "a", "type": "image/png" } #+end_src #+RESULTS: #+BEGIN_SRC js // POST https://functions.yandexcloud.net/d4e7i7f8odqn50mirlrm // HTTP/1.1 401 Unauthorized // Date: Fri, 23 Jun 2023 16:13:46 GMT // Content-Length: 0 // Connection: keep-alive // Access-Control-Allow-Origin: * // Server: Yandex-Cloud-Functions/1.0 // X-Content-Type-Options: nosniff // X-Function-Id: d4e7i7f8odqn50mirlrm // X-Function-Version-Id: d4eo02fuiulg7pqichhs // X-Request-Id: cc93593e-6331-4698-bd79-ebd53c3d3306 // Request duration: 2.938829s #+END_SRC Адрес: https://functions.yandexcloud.net/d4e7i7f8odqn50mirlrm Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: token — строка — токен пользователя; image — строка — data URL изображения в webp формате; type — строка — тип изображения, например, image/png, image/jpeg и т.д. Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно Поля ответа: Druzen — список списков int32 — контуры ретинальных друз; Layer_Bruchs_membrane — список списков int32 — не используется; Layer_Henle_fibers_outer_nuclear — список списков int32 — не используется; Layer_RPE — список списков int32 — не используется; Layer_RPE_and_Bruchs_membrane — список списков int32 — не используется; Layer_ellipsoidal_zone_photoreceptors — список списков int32 — не используется; Layer_ganglion_cells_internal_plexieforms — список списков int32 — не используется; Layer_inner_nuclear — список списков int32 — не используется; Layer_myoid_zone_photoreceptors — список списков int32 — не используется; Layer_nerve_fibers — список списков int32 — не используется; Layer_outer_boundary_membrane — список списков int32 — не используется; Layer_outer_plexiform — список списков int32 — не используется; Layer_outer_segments_photoreceptors — список списков int32 — не используется; RPE_detachment — список списков int32 — контуры отслойки ретинального пигментного эпителия; SHRM — список списков int32 — контуры субретинального гиперрефлективного материала; epiretinal_fibrosis — список списков int32 — не используется; full_macular_hole — список списков int32 — контуры сквозного макулярного разрыва; height — int32 — высота изображения; intraretinal_cyst — список списков int32 — контуры интраретинальных кист; lamellar_macular_hole - список списков int32 — контуры ламеллярного макулярного разрыва; subretinal_fluid — список списков int32 — контуры субретинальной жидкости; vmt — список списков int32 — контуры витреомакулярной тракции; width — int32 — ширина изображения; ** Регистрация #+begin_src restclient POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Content-Type: text/plain { "op": "register", "email": "fetsor@gmail.com", "password": "we28*3sjUBG!uB", "first_name": "Anton", "last_name": "Davydov", "middle_name": "", "country": "Georgia", "city": "Tbilisi", "organization": "Norcivilian Labs", "profession": "Researcher", "promocode": "", "language": "en", "domain": "com", "name": "", "real_name": "" } #+end_src #+RESULTS: #+BEGIN_SRC js { "ok": true } // POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib // HTTP/1.1 200 OK // Date: Fri, 23 Jun 2023 17:09:49 GMT // Content-Type: application/json // Content-Length: 11 // Connection: keep-alive // Access-Control-Allow-Origin: * // Server: Yandex-Cloud-Functions/1.0 // X-Content-Type-Options: nosniff // X-Function-Id: d4esr6ie5khkuno72hib // X-Function-Version-Id: d4eh53g2gb4s7m9ugdqj // X-Request-Id: 7da71136-efbb-47fb-9dd6-614e2ccfd5b9 // Request duration: 3.835323s #+END_SRC Адрес: https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: op — строка — всегда равна "register"; email — строка - обязательно не пустая строка, email пользователя; password — строка - обязательно не пустая строка, пароль; first_name — строка - обязательно не пустая строка, имя; last_name — строка - обязательно не пустая строка, фамилия; middle_name — строка — может быть пустой строкой, отчество; country — строка - обязательно не пустая строка, страна, всегда на английском, выбирается из списка, который приведен ниже; city — строка - обязательно не пустая строка, город; organization — строка — обязательно не пустая строка, название организации; profession — строка — обязательно не пустая строка, профессия, всегда на английском, выбирается из списка, который приведен ниже; promocode — строка — строка с промокодом, который вводит пользователь или пустая строка, если не заполнено; language — строка — двухбуквенный код языка (например, "ru", "en"), domain — строка — всегда "com"; name — строка — всегда пустая строка; real_name — стока — всегда пустая строка. Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 200 — запрос обработан успешно Поля ответа: ok — булевский тип — true — если регистрация успешна, false — если пользователь существует. ** Вход #+begin_src restclient POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Content-Type: text/plain { "op": "login", "email": "fetsorn@gmail.com", "password": "G3jbME5UTjmPRV" } #+end_src #+RESULTS: #+BEGIN_SRC js { "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImZldHNvcm5AZ21haWwuY29tIiwiaWF0IjoxNjI3MTMxMzgyfQ.CGQgvWOCcNBeo-AxTC1ApaJZZs1OKKEsM1ublnW679y4l78qjsebAtM1hD7Or5NrckZ29DwA8qmvZoJzjSfGrMJ3NrmnTHBVIx1EIx44IwZdJNPW6zXVrpTbyVL1gNyGrLS5FKVDh48lLANojMlg8zvOkQEMrgv440GG4LZubyj1APJ8m51Qm2uC_Nn0mgv-ooKoJHAQI8YCLDpCkXv2WMOVpMxgKOBX7iKknM8IYlh3oMNtIfxG5F4VeL_nYzIwIbbAZhtnvWJm-0bTbRhBk0FGDYYd2s8e2AZGPl5S7ZDU-RFU1Jau4czpUxt2dMuhve2acsVWnNxcKStU_M7bRZ6XJL9Nebme5-7iuejF8lpd2c1wBsecbTiF75b0GSagUJx3saeOumDlnGhQ-Y6Mo4dshfkPeAcMRhgo8l0-PJrh8LfbsrSjw2ywfpIE_k-kqV9PczIemFegMEcV_yHwN9iBqkD5900tXPA2nVpTQ_zeHb8rUkXf3jXh9WzUGHjkM1NMKv5L0SlQmcnLghv0qLCrqfGWrG0MJ6ZkTXZvi12kOcKCd88nJ8Li1RKVXE0pDNg7Mm5FoqIHDai_pO_bQjDusGMbp4PFamAHMgzuxqMD6tbs-oWhINID8ywnECMTnzHVzkegPz373x02dS0eMvf435YE_tT877M7fOy8L68", "confirmed": true } // POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib // HTTP/1.1 200 OK // Date: Fri, 23 Jun 2023 17:13:36 GMT // Content-Type: application/json // Content-Length: 812 // Connection: keep-alive // Vary: Accept-Encoding // Access-Control-Allow-Origin: * // Server: Yandex-Cloud-Functions/1.0 // X-Content-Type-Options: nosniff // X-Function-Id: d4esr6ie5khkuno72hib // X-Function-Version-Id: d4eh53g2gb4s7m9ugdqj // X-Request-Id: a5e8352a-427e-4edb-b431-c2eed849804d // Request duration: 1.201843s #+END_SRC "password": "G3jbME5UTjmPRV" "password": "we28*3sjUBG!uB" #+RESULTS: #+BEGIN_SRC js { "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImZldHNvcm5AZ21haWwuY29tIiwiaWF0IjoxNjI3MTMxMzgyfQ.CGQgvWOCcNBeo-AxTC1ApaJZZs1OKKEsM1ublnW679y4l78qjsebAtM1hD7Or5NrckZ29DwA8qmvZoJzjSfGrMJ3NrmnTHBVIx1EIx44IwZdJNPW6zXVrpTbyVL1gNyGrLS5FKVDh48lLANojMlg8zvOkQEMrgv440GG4LZubyj1APJ8m51Qm2uC_Nn0mgv-ooKoJHAQI8YCLDpCkXv2WMOVpMxgKOBX7iKknM8IYlh3oMNtIfxG5F4VeL_nYzIwIbbAZhtnvWJm-0bTbRhBk0FGDYYd2s8e2AZGPl5S7ZDU-RFU1Jau4czpUxt2dMuhve2acsVWnNxcKStU_M7bRZ6XJL9Nebme5-7iuejF8lpd2c1wBsecbTiF75b0GSagUJx3saeOumDlnGhQ-Y6Mo4dshfkPeAcMRhgo8l0-PJrh8LfbsrSjw2ywfpIE_k-kqV9PczIemFegMEcV_yHwN9iBqkD5900tXPA2nVpTQ_zeHb8rUkXf3jXh9WzUGHjkM1NMKv5L0SlQmcnLghv0qLCrqfGWrG0MJ6ZkTXZvi12kOcKCd88nJ8Li1RKVXE0pDNg7Mm5FoqIHDai_pO_bQjDusGMbp4PFamAHMgzuxqMD6tbs-oWhINID8ywnECMTnzHVzkegPz373x02dS0eMvf435YE_tT877M7fOy8L68", "confirmed": true } // POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib // HTTP/1.1 200 OK // Date: Fri, 23 Jun 2023 16:10:50 GMT // Content-Type: application/json // Content-Length: 812 // Connection: keep-alive // Vary: Accept-Encoding // Access-Control-Allow-Origin: * // Server: Yandex-Cloud-Functions/1.0 // X-Content-Type-Options: nosniff // X-Function-Id: d4esr6ie5khkuno72hib // X-Function-Version-Id: d4eh53g2gb4s7m9ugdqj // X-Request-Id: 30e14784-ed10-43d5-b08e-dded2bfba63f // Request duration: 0.923204s #+END_SRC Адрес: https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: op — строка — всегда равна "login"; email — строка - обязательно не пустая строка; password — строка - обязательно не пустая строка; Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно Поля ответа: token — строка — токен пользователя confirmed — булевский тип — true — если пользователь подтвердил email, false - если не подтвердил ** Получение информации о пользователе #+begin_src restclient POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Content-Type: text/plain { "op": "get_info", "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImZldHNvcm5AZ21haWwuY29tIiwiaWF0IjoxNjI3MTMxMzgyfQ.CGQgvWOCcNBeo-AxTC1ApaJZZs1OKKEsM1ublnW679y4l78qjsebAtM1hD7Or5NrckZ29DwA8qmvZoJzjSfGrMJ3NrmnTHBVIx1EIx44IwZdJNPW6zXVrpTbyVL1gNyGrLS5FKVDh48lLANojMlg8zvOkQEMrgv440GG4LZubyj1APJ8m51Qm2uC_Nn0mgv-ooKoJHAQI8YCLDpCkXv2WMOVpMxgKOBX7iKknM8IYlh3oMNtIfxG5F4VeL_nYzIwIbbAZhtnvWJm-0bTbRhBk0FGDYYd2s8e2AZGPl5S7ZDU-RFU1Jau4czpUxt2dMuhve2acsVWnNxcKStU_M7bRZ6XJL9Nebme5-7iuejF8lpd2c1wBsecbTiF75b0GSagUJx3saeOumDlnGhQ-Y6Mo4dshfkPeAcMRhgo8l0-PJrh8LfbsrSjw2ywfpIE_k-kqV9PczIemFegMEcV_yHwN9iBqkD5900tXPA2nVpTQ_zeHb8rUkXf3jXh9WzUGHjkM1NMKv5L0SlQmcnLghv0qLCrqfGWrG0MJ6ZkTXZvi12kOcKCd88nJ8Li1RKVXE0pDNg7Mm5FoqIHDai_pO_bQjDusGMbp4PFamAHMgzuxqMD6tbs-oWhINID8ywnECMTnzHVzkegPz373x02dS0eMvf435YE_tT877M7fOy8L68" } #+end_src #+RESULTS: #+BEGIN_SRC text {"accepted_license":true,"accepted_oct_license":false,"access_level_fundus":null,"access_level_oct":null,"can_use_admin":false,"can_use_amd_dry_form_trainer":null,"can_use_clinical_classification_amd_trainer":null,"can_use_cnv_trainer":null,"can_use_dme_trainer":null,"can_use_fundus":false,"can_use_fundus_dynamic_monitoring":true,"can_use_fundus_self_test":null,"can_use_oct":false,"can_use_oct_dynamic_monitoring":true,"can_use_oct_self_test":null,"can_use_trainer":true,"city":"","confirmed":true,"country":"Russia","domain":null,"email":"fetsorn@gmail.com","first_name":"Anton","fundus_processed_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"fundus_processed_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"fundus_processed_per_year":[0],"fundus_visits_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"fundus_visits_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"fundus_visits_per_year":[0],"id":"1630146849qgUUo","language":"ru","last_activity":"2023-06-23","last_name":"Davydov","middle_name":"","name":"","oct_processed_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"oct_processed_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"oct_processed_per_year":[0],"oct_visits_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"oct_visits_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"oct_visits_per_year":[0],"organization":"fetsorn","profession":"Researcher","promocodes":[],"real_name":"Anton Davydov","reg_date":"2021-07-24","tele_token":null,"trainer_visits_per_day":[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"trainer_visits_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0],"trainer_visits_per_year":[1],"reviews_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"reviews_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"reviews_per_year":[0],"uploaded_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"uploaded_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"uploaded_per_year":[0],"reported_per_day":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"reported_per_month":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"reported_per_year":[0]} POST https://functions.yandexcloud.net/d4esr6ie5khkuno72hib HTTP/1.1 200 OK Date: Fri, 23 Jun 2023 16:13:01 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 2320 Connection: keep-alive Vary: Accept-Encoding Access-Control-Allow-Origin: * Server: Yandex-Cloud-Functions/1.0 X-Content-Type-Options: nosniff X-Function-Id: d4esr6ie5khkuno72hib X-Function-Version-Id: d4eh53g2gb4s7m9ugdqj X-Request-Id: 504b0a3d-6556-4217-b4ad-3173d259944f Request duration: 1.312458s #+END_SRC Адрес: https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: op — строка — всегда равна "get_info"; token — строка — токен пользователя. Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно Поля ответа: accepted_license — булевское значение — true — если пользователь принял соглашение на использование обработки фундус фото; accepted_oct_license — булевское значение — true — если пользователь принял соглашение на использование обработки ОКТ; can_use_admin — булевское значение — true — если пользователь является администратором; can_use_fundus — булевское значение — true — может использовать обработку фундус фото; can_use_oct — булевское значение — true — может использовать обработку ОКТ; can_use_trainer — булевское значение — true — может использовать тренажер; city — строка — название города пользователя; confirmed — булевский тип — true — если пользователь подтвердил email, false - если не подтвердил; country — строка — название страны; domain — строка — домен с которого регистрировался пользователь; email — строка — email пользователя; first_name — строка — имя пользователя; fundus_processed_per_day — список int32 — кол-во обработанных фундус фото по дням; fundus_processed_per_month — список int32 — кол-во обработанных фундус фото по месяцам; fundus_processed_per_year — список int32 — кол-во обработанных фундус фото по годам; fundus_visits_per_day — список int32 — кол-во посещений страницы обработки фундус фото по дням; fundus_visits_per_month — спиосок int32 - кол-во посещений страницы обработки фундус фото по месяцам; fundus_visits_per_year — список int32 - кол-во посещений страницы обработки фундус фото по годам; id — строка — id пользователя в БД; last_activity — строка — дата последней активности; last_name — строка — фамилия пользователя; middle_name — строка — отчество пользователя; name — строка — имя пользователя (не используется); oct_processed_per_day — список int32 — кол-во обработанных сканов ОКТ по дням; oct_processed_per_month - список int32 - кол-во обработанных сканов ОКТ по месяцам; oct_processed_per_year — список int32 - кол-во обработанных сканов ОКТ по годам; oct_visits_per_day — список int32 - кол-во посещений страницы обработки ОКТ по дням; oct_visits_per_month — список int32 - кол-во посещений страницы обработки ОКТ по месяцам; oct_visits_per_year — список int32 - кол-во посещений страницы обработки ОКТ по годам; organization — строка — название организации пользователя; profession — строка — профессия пользователя; promocodes — список строк — список промокодов пользователя; real_name — строка — полное имя пользователя (не используется); reg_date — строка — дата регистрации; reported_per_day — список int32 — кол-во сообщений об ошибках по дням; reported_per_month — список int32 — кол-во сообщений об ошибках по месяцам; reported_per_year — список int32 — кол-во сообщений об ошибках по годам; reviews_per_day — список int32 — кол-во отправленных отзывов по дням; reviews_per_month — список int32 — кол-во отправленных отзывов по месяцам; reviews_per_year — список int32 — кол-во отправленных отзывов по годам; trainer_visits_per_day — список int32 — кол-во посещений тренажера по дням; trainer_visits_per_month — список int32 — кол-во посещений тренажера по месяцам; trainer_visits_per_year — список int32 — кол-во посещений тренажера по годам; uploaded_per_day — список int32 — кол-во пожертвованных фото по дням; uploaded_per_month — список int32 — кол-во пожертвованных фото по месяцам; uploaded_per_year — список int32 — кол-во пожертвованных фото по годам. ** Отправка обратной связи Адрес: https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: op — строка - всегда "problem"; token — строка — токен пользователя; text — строка — текст сообщения об ошибке; language — строка — двухбуквенный код языка (например, ru, en); domain — строка — домен, всегда "com". Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно ** Отправка отзыва Адрес: https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: op — строка - всегда "add_review"; token — строка — токен пользователя; text — строка — текст сообщения об ошибке; grade — int32 — оценка от 0 до 5. Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно ** Получение списка видимых отзывов Адрес: https://functions.yandexcloud.net/d4esr6ie5khkuno72hib Заголовки запроса: Accept: */* Content-Type: text/plain Поля запроса: op — строка - всегда "get_visible_review_list"; token — строка — токен пользователя; Возможные ответы: Статус 500 — ошибка сервера Поля ответа: info — строка — содержит описание ошибки Статус 401 — ошибка авторизации Статус 200 — запрос обработан успешно Ответ представляет собой список объектов со следующими полями: city — строка — город пользователя, написавшего отзыв; country — строка — страна пользователя, написавшего отзыв; first_name — строка - имя; grade — оценка от 0 до 5; id — строка — id отзыва в БД; last_name — строка - фамилия; middle_name — строка — отчество (может быть пустой строкой); organization — строка — название организации; profession — строка - профессия; send_date — строка — дата отправки отзыва; show — булевское значение — true — если отзыв надо показывать, false — если нет; text — строка — текст отзыва; ** Список стран Abkhazia Afghanistan Albania Algeria Andorra Angola Anguilla Antigua and Barbuda Antilles Argentina Armenia Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bolivia Bosnia and Herzegovina Botswana Brazil British virgin islands Brunei Bulgaria Burkina Faso Burundi Butane Cambodia Cameroon Canada Cape Verde Chad Chile China Colombia Congo, Democratic Republic Congo Cook Islands Costa Rica Croatia Cuba Cyprus Czech Denmark Djibouti Dominican Republic Ecuador Egypt Equatorial Guinea Eritrea Estonia Ethiopia Faroe Island Fiji Finland France French Polynesia Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guatemala Guernesey Guinea-Bissau Guinea Guyana Haiti Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Isle of Man Israel Italy Ivory Coast Jamaica Japan Jersey Jordan Kazakhstan Kenya Kuwait Kyrgyzstan Laos Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macedonia Madagascar Malawi Malaysia Maldives Mali Malta Mauritania Mauritius Mexico Moldova Monaco Mongolia Montenegro Morocco Mozambique Myanmar Namibia Nepal Netherlands New Caledonia New Zealand Nicaragua Niger Nigeria North Korea Norway Oman Pakistan Palau Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Islands Poland Portugal Puerto Rico Qatar Romania Russia Rwanda Réunion Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Salvador Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Korea South Ossetia Spain Sri Lanka State of Palestine Sudan Suriname Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu USA Uganda Ukraine United Arab Emirates United Kingdom Uruguay Uzbekistan Vanuatu Vatican Venezuela Vietnam Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe ** Список профессий General Practitioner Ophthalmologist Endocrinologist Optometrist Another Doctor Medical Representative Healthcare Organizer Lecturer Student Researcher Other