openapi: 3.0.3 info: title: 'Ansgar ID' description: '' version: 1.0.0 servers: - url: 'https://id.stage.odinn.cloud' paths: /api/v1/auth/login: post: summary: 'Получение токена доступа' operationId: '' description: "`access_token` является JWT.\nПример payload:\n```json\n{\n \"aud\": \"9e196de3-9324-47c8-9bca-27b633af08c1\",\n \"jti\": \"219e04228fab177899a53e9ce294b77809b12f9306c4c9794ad8a7602b888bbcc233c4ee9661dafe\",\n \"iat\": 1739180144.815972, // issued at time\n \"nbf\": 1739180144.815974,\n \"exp\": 1740389744.806619, // expire time\n \"sub\": \"00000000-0000-4000-8001-000000000002\", // user_id\n \"scopes\": []\n}\n```\n" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: token_type: Bearer expires_in: 120960 access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5ZTE5NmRlMy05MzI0LTQ3YzgtOWJjYS0yN2I2MzNhZjA4YzEiLCJqdGkiOiIyMTllMDQyMjhmYWIxNzc4OTlhNTNlOWNlMjk0Yjc3ODA5YjEyZjkzMDZjNGM5Nzk0YWQ4YTc2MDJiODg4YmJjYzIzM2M0ZWU5NjYxZGFmZSIsImlhdCI6MTczOTE4MDE0NC44MTU5NzIsIm5iZiI6MTczOTE4MDE0NC44MTU5NzQsImV4cCI6MTc0MDM4OTc0NC44MDY2MTksInN1YiI6IjAwMDAwMDAwLTAwMDAtNDAwMC04MDAxLTAwMDAwMDAwMDAwMiIsInNjb3BlcyI6W119.ilMKDdtK8-K4lItpPPRpGNSCxrczHMvlD2gmU_KD8lQFgJp0eL9Jql11O7j5xuY0mOnrTEWGncbDCNtBShLsU7jhlBdQ6r9nfwUJhazGBymaJh_zk2X0I400mFGXuSLqzUo4TnDjRpc3Lx9mYprqFGJ6LqiFfX9jfxsqelqL2EHrDIOhWUrEIZDmPvkS7IWonxMMHhy-M8vpGtfXkOvYeKSzj1liGG_96HkjRqRAC9B36brC_AgYfQ4Lo1RAgkJnWDrsZNg3JhSQmxFAfrnfBlsQq2EnWoW5BSfDQHE1yHQ4n5BHFhigkFjnU_7Q_kXrBHhALPXW9nroztv_U62fS1LFachXLEJx215cYtt_u_Tpjs0WTAR-P1sOqa3l8i0YhLc3fQYr_48GlHoXvjFk6h7Hh6jJhGP9x-qPp-UyxmTCjFLlPslfrevOwOfRi7i2Z4fLUGezwr-LXDEn0dStBfuQl9E6j8gaGm84xu06spMPZF-zNHQDnrB_tJuF2-05FRSRa9jXjakqncXRIuHulZBXsJK-K2-jLvAUghAWr_2lTmhmYvpKpo7pykRk2-KRV8p4Ic-YD1IC-AoCpkqgAC3C5Z-Dq2um8RWb3K78-v7LA9alPX9_Y4lpYDOtUj8Rt-6ExEPSGmyBYKmGclFJ-4ugqGWtqLvVhLT5AjESkKk refresh_token: def50200ededbd90f2ab17b07f3f06e88aa1ae7f7185931f2eecd24c49003aa823c7682795ca2b067c84a80e8778ea541aac1c92f8b1ec4976cb34a7ea5ef131281c530157fc752b78b76e4329e23a18bb9af4f85f670a1e149f68f2e762df1e20327d7888c4191af705227165f50dc281012d7b2c9345a629cf7061af712fd1d988e1454cf9700138c5cc297a40286ff5821d057bec3f4ebb7cbbc71ee8a1a7bbc47bd273ea1822de1ca52571bde28482611a88d8ecd1a2cb0524a583eedfbfc8f923469d196e3b4377aae0aa093c2a4c3a38ce717c20b378f9cc49269615728317a18b4a41fbd84a1e4247991b0629f5ae6990288b16aeed3754ccc2de037b1bba577b855dbdd65ae782aefb86a86326a5bb7d879b9bce919b72b0e1f0db67cc55bb3b90931986385e6ce13557c202f4e30c8d47d7fb5fedb1acef8d50087d595405a94177bf22fec406b5d445925cc57c05a9fd9a3dbda28cfaf07bca507910b520b9a35fc7cf7603b38d745389d9fea79083414a65e305af640f738ad14c01dd05d14e8efe199be8b1cd185a34285dbb21afb3a94072903282dfa05670393d823dc07408f1661c logged_in_at: '2025-02-10T09:35:44.806157Z' user: id: 00000000-0000-4000-8001-000000000002 name: 'Test Admin' username: admin email: almaximal+admin@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0002-000000000001 code: 'roles:list' verb: 'просматривать все роли' title: 'Просмотр всех ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: token_type: type: string example: Bearer expires_in: type: integer example: 120960 access_token: type: string example: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5ZTE5NmRlMy05MzI0LTQ3YzgtOWJjYS0yN2I2MzNhZjA4YzEiLCJqdGkiOiIyMTllMDQyMjhmYWIxNzc4OTlhNTNlOWNlMjk0Yjc3ODA5YjEyZjkzMDZjNGM5Nzk0YWQ4YTc2MDJiODg4YmJjYzIzM2M0ZWU5NjYxZGFmZSIsImlhdCI6MTczOTE4MDE0NC44MTU5NzIsIm5iZiI6MTczOTE4MDE0NC44MTU5NzQsImV4cCI6MTc0MDM4OTc0NC44MDY2MTksInN1YiI6IjAwMDAwMDAwLTAwMDAtNDAwMC04MDAxLTAwMDAwMDAwMDAwMiIsInNjb3BlcyI6W119.ilMKDdtK8-K4lItpPPRpGNSCxrczHMvlD2gmU_KD8lQFgJp0eL9Jql11O7j5xuY0mOnrTEWGncbDCNtBShLsU7jhlBdQ6r9nfwUJhazGBymaJh_zk2X0I400mFGXuSLqzUo4TnDjRpc3Lx9mYprqFGJ6LqiFfX9jfxsqelqL2EHrDIOhWUrEIZDmPvkS7IWonxMMHhy-M8vpGtfXkOvYeKSzj1liGG_96HkjRqRAC9B36brC_AgYfQ4Lo1RAgkJnWDrsZNg3JhSQmxFAfrnfBlsQq2EnWoW5BSfDQHE1yHQ4n5BHFhigkFjnU_7Q_kXrBHhALPXW9nroztv_U62fS1LFachXLEJx215cYtt_u_Tpjs0WTAR-P1sOqa3l8i0YhLc3fQYr_48GlHoXvjFk6h7Hh6jJhGP9x-qPp-UyxmTCjFLlPslfrevOwOfRi7i2Z4fLUGezwr-LXDEn0dStBfuQl9E6j8gaGm84xu06spMPZF-zNHQDnrB_tJuF2-05FRSRa9jXjakqncXRIuHulZBXsJK-K2-jLvAUghAWr_2lTmhmYvpKpo7pykRk2-KRV8p4Ic-YD1IC-AoCpkqgAC3C5Z-Dq2um8RWb3K78-v7LA9alPX9_Y4lpYDOtUj8Rt-6ExEPSGmyBYKmGclFJ-4ugqGWtqLvVhLT5AjESkKk refresh_token: type: string example: def50200ededbd90f2ab17b07f3f06e88aa1ae7f7185931f2eecd24c49003aa823c7682795ca2b067c84a80e8778ea541aac1c92f8b1ec4976cb34a7ea5ef131281c530157fc752b78b76e4329e23a18bb9af4f85f670a1e149f68f2e762df1e20327d7888c4191af705227165f50dc281012d7b2c9345a629cf7061af712fd1d988e1454cf9700138c5cc297a40286ff5821d057bec3f4ebb7cbbc71ee8a1a7bbc47bd273ea1822de1ca52571bde28482611a88d8ecd1a2cb0524a583eedfbfc8f923469d196e3b4377aae0aa093c2a4c3a38ce717c20b378f9cc49269615728317a18b4a41fbd84a1e4247991b0629f5ae6990288b16aeed3754ccc2de037b1bba577b855dbdd65ae782aefb86a86326a5bb7d879b9bce919b72b0e1f0db67cc55bb3b90931986385e6ce13557c202f4e30c8d47d7fb5fedb1acef8d50087d595405a94177bf22fec406b5d445925cc57c05a9fd9a3dbda28cfaf07bca507910b520b9a35fc7cf7603b38d745389d9fea79083414a65e305af640f738ad14c01dd05d14e8efe199be8b1cd185a34285dbb21afb3a94072903282dfa05670393d823dc07408f1661c logged_in_at: type: string example: '2025-02-10T09:35:44.806157Z' user: type: object properties: id: type: string example: 00000000-0000-4000-8001-000000000002 name: type: string example: 'Test Admin' username: type: string example: admin email: type: string example: almaximal+admin@ya.ru phone: type: string example: null email_verified_at: type: string example: null deleted_at: type: string example: null created_at: type: string example: '2025-02-06T10:34:15.000000Z' updated_at: type: string example: '2025-02-06T10:34:15.000000Z' roles: type: array example: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0002-000000000001 code: 'roles:list' verb: 'просматривать все роли' title: 'Просмотр всех ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 9e257a75-2de3-4607-99db-91cf7c73850f code: type: string example: admin name: type: string example: Админ params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0002-000000000001 code: 'roles:list' verb: 'просматривать все роли' title: 'Просмотр всех ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0002-000000000001 code: type: string example: 'roles:list' verb: type: string example: 'просматривать все роли' title: type: string example: 'Просмотр всех ролей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: username: type: string description: '' example: tempore nullable: false password: type: string description: '' example: 'tq=mFxZO,' nullable: false required: - username - password security: [] /api/v1/auth/refresh: post: summary: 'Обновление токена' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: token_type: Bearer expires_in: 120960 access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5ZTE5NmRlMy05MzI0LTQ3YzgtOWJjYS0yN2I2MzNhZjA4YzEiLCJqdGkiOiI3MjAxNDMxZDEzZmMxNGRhYjA0NjY2NjI2NDgxZTA0MzVkOTA3ZDg1OTA5Nzk0MTBlYTA5N2VkYWFlNTg4M2E5YmU1YjRiYjU4MTI5NDU2OSIsImlhdCI6MTczOTE4MDU0Mi4zNDg3LCJuYmYiOjE3MzkxODA1NDIuMzQ4NzAyLCJleHAiOjE3NDAzOTAxNDIuMzQxNjAzLCJzdWIiOiIwMDAwMDAwMC0wMDAwLTQwMDAtODAwMS0wMDAwMDAwMDAwMDIiLCJzY29wZXMiOltdfQ.u7mqxZI343AWM1iEZwJ-i7PMsdUKT162z6HurihK_4nPAusQa14JmAnZg9_k2MukvyYf9xjdZPKM37MyvXEcFpJUlq61JQ-pB8D955dDJ7XEkeWuEnPODnhZYS56X-Xxa6Ut1E-7r-D5J2VX5TLi59Zs8ZWJ96kvsDysU21O93Wo0jht7KoJ-M33mZYZgvbyVXcnc1MS8JEGGXQaSAMe9z9XqPWYGLT3PDM-9mvdBRJBaBC2m__bYl01MF-IySznP4e13pAm7yDhuCpNkvg9Z30G7D0fPYZCF08oZ9sXJvFKzV_6fyz4IpIsteTmNuQ1g1cDAVHGg0upMMTulKBPap0a2IdHT8UGLig6MXxAka4ECUCV7ILXAq1IBXNrnWQ0k1YqwPPmsSoGYu80m9l2VJd6NmDMkVMeqdllvlIYh2diRe6tRkcvH0yGbwl2OAnDedAHMIYJwWbhXsxjB_Pd1_dSb1mR29lOCWtbN2TVksProHxTbhGv2qjNv3N1UgO8XuyC2N1HHjiq1L6ijpoFT58BK-yh_C5JfCpCzXb-c8n5HZnUln_Nhmn-MxT_CZ3KAmeHdiHlaINhacUj6_JimCE0EOGC0c8XuW_OxvF9MOiLPcKkPC6_Y8DE0q0Fzy1ik42ZGcFiSGaRKSqY6jETfj-WphZonBNgx3IBcUUW54Y refresh_token: def50200a554a490c59e09811dc700f8f34bc52236c9b316e503fe89c2294c8395912517654fad3600c8ae4850e52f649600846a9d887163f0c5b5df93d1379dc0fbd4dd0636a3b83dfb9a2b897c06bc0a882f67837e3d425d272ef8e4c32f68e53ab39ba503802b05b0e37a6cf084200213c02faa559ecc03316d09777658bd69919dcb8e5a332a8e0e94ddd4b26673d5d11c2ac5871c9d618667299129ed9dbbec8621b5eca62e40a7e5ec5029094d68b53094bed74c9c3977577be4d147059a110a27b0e22d580e677897ce1131d8cae2353c7dad9694bcd77daf62db3ad378632870d2363ffc6d3001590cb190b9a157a7d960a28791055f3f7d4276228985c8cad79820ab0afa6eb1632d8555303d22f2a4a89d50a0dbc18f682de5ace934560a2d271a1b97d9ef40fd74dd84cba686e3bbb31d943fe93fc41847059942ef9d5b685e458b0e936557aceb8c1f46a18f10f6837413cba6fddc89572e7ec0ceccfe5f3a97f3d7a5c7ba66ebf64371c4b222dbb4e63191e9388fc497681ce071fc2bb156ac9bbad29b99e9628cb07139059d411e7b69c1b111e6629cfab9a25b0633ac44bd030c62 properties: token_type: type: string example: Bearer expires_in: type: integer example: 120960 access_token: type: string example: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5ZTE5NmRlMy05MzI0LTQ3YzgtOWJjYS0yN2I2MzNhZjA4YzEiLCJqdGkiOiI3MjAxNDMxZDEzZmMxNGRhYjA0NjY2NjI2NDgxZTA0MzVkOTA3ZDg1OTA5Nzk0MTBlYTA5N2VkYWFlNTg4M2E5YmU1YjRiYjU4MTI5NDU2OSIsImlhdCI6MTczOTE4MDU0Mi4zNDg3LCJuYmYiOjE3MzkxODA1NDIuMzQ4NzAyLCJleHAiOjE3NDAzOTAxNDIuMzQxNjAzLCJzdWIiOiIwMDAwMDAwMC0wMDAwLTQwMDAtODAwMS0wMDAwMDAwMDAwMDIiLCJzY29wZXMiOltdfQ.u7mqxZI343AWM1iEZwJ-i7PMsdUKT162z6HurihK_4nPAusQa14JmAnZg9_k2MukvyYf9xjdZPKM37MyvXEcFpJUlq61JQ-pB8D955dDJ7XEkeWuEnPODnhZYS56X-Xxa6Ut1E-7r-D5J2VX5TLi59Zs8ZWJ96kvsDysU21O93Wo0jht7KoJ-M33mZYZgvbyVXcnc1MS8JEGGXQaSAMe9z9XqPWYGLT3PDM-9mvdBRJBaBC2m__bYl01MF-IySznP4e13pAm7yDhuCpNkvg9Z30G7D0fPYZCF08oZ9sXJvFKzV_6fyz4IpIsteTmNuQ1g1cDAVHGg0upMMTulKBPap0a2IdHT8UGLig6MXxAka4ECUCV7ILXAq1IBXNrnWQ0k1YqwPPmsSoGYu80m9l2VJd6NmDMkVMeqdllvlIYh2diRe6tRkcvH0yGbwl2OAnDedAHMIYJwWbhXsxjB_Pd1_dSb1mR29lOCWtbN2TVksProHxTbhGv2qjNv3N1UgO8XuyC2N1HHjiq1L6ijpoFT58BK-yh_C5JfCpCzXb-c8n5HZnUln_Nhmn-MxT_CZ3KAmeHdiHlaINhacUj6_JimCE0EOGC0c8XuW_OxvF9MOiLPcKkPC6_Y8DE0q0Fzy1ik42ZGcFiSGaRKSqY6jETfj-WphZonBNgx3IBcUUW54Y refresh_token: type: string example: def50200a554a490c59e09811dc700f8f34bc52236c9b316e503fe89c2294c8395912517654fad3600c8ae4850e52f649600846a9d887163f0c5b5df93d1379dc0fbd4dd0636a3b83dfb9a2b897c06bc0a882f67837e3d425d272ef8e4c32f68e53ab39ba503802b05b0e37a6cf084200213c02faa559ecc03316d09777658bd69919dcb8e5a332a8e0e94ddd4b26673d5d11c2ac5871c9d618667299129ed9dbbec8621b5eca62e40a7e5ec5029094d68b53094bed74c9c3977577be4d147059a110a27b0e22d580e677897ce1131d8cae2353c7dad9694bcd77daf62db3ad378632870d2363ffc6d3001590cb190b9a157a7d960a28791055f3f7d4276228985c8cad79820ab0afa6eb1632d8555303d22f2a4a89d50a0dbc18f682de5ace934560a2d271a1b97d9ef40fd74dd84cba686e3bbb31d943fe93fc41847059942ef9d5b685e458b0e936557aceb8c1f46a18f10f6837413cba6fddc89572e7ec0ceccfe5f3a97f3d7a5c7ba66ebf64371c4b222dbb4e63191e9388fc497681ce071fc2bb156ac9bbad29b99e9628cb07139059d411e7b69c1b111e6629cfab9a25b0633ac44bd030c62 tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: refresh_token: type: string description: '' example: ut nullable: false required: - refresh_token security: [] /api/v1/check-auth: get: summary: 'Проверка авторизации пользователя' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: true properties: data: type: boolean example: true tags: - 'User API' /api/v1/users: post: summary: 'Создать пользователя' operationId: '' description: '' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 00000000-0000-4000-8001-000000000006 name: 'Test Executor 3' username: executor3 email: almaximal+executor3@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' properties: id: type: string example: 00000000-0000-4000-8001-000000000006 name: type: string example: 'Test Executor 3' username: type: string example: executor3 email: type: string example: almaximal+executor3@ya.ru phone: type: string example: null email_verified_at: type: string example: null deleted_at: type: string example: null created_at: type: string example: '2025-02-06T10:34:15.000000Z' updated_at: type: string example: '2025-02-06T10:34:15.000000Z' roles: type: array example: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: type: string example: executor name: type: string example: Исполнитель params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: users:create' properties: message: type: string example: 'User does not have any of permissions: users:create' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: tgtpfcz nullable: false username: type: string description: 'Количество символов в поле value должно быть не меньше 4. Количество символов в значении поля value не может превышать 50.' example: fzpmaqkinyhaxolhemgidxhns nullable: false password: type: string description: 'Количество символов в поле value должно быть не меньше 5.' example: '3"T$spv{uEzK/QRtR[' nullable: true phone: type: string description: 'Количество символов в поле value должно быть от 10 до 11.' example: '1494540366' nullable: true email: type: string description: 'Значение поля value должно быть действительным электронным адресом.' example: ilene08@example.net nullable: true roles: type: array description: 'The code of an existing record in the roles table.' example: - aliquam items: type: string required: - name - username - roles get: summary: 'Получить список пользователей' operationId: '' description: '' parameters: - in: query name: role description: 'Код роли, в которой искать пользователя (код полностью).' example: null required: false schema: type: string description: 'Код роли, в которой искать пользователя (код полностью).' example: null nullable: false - in: query name: name description: 'Отфильтровать имя или юзернейм (подстрока).' example: null required: false schema: type: string description: 'Отфильтровать имя или юзернейм (подстрока).' example: null nullable: false - in: query name: permission description: 'Отфильтровать по доступу (user:auth, roles:list).' example: null required: false schema: type: string description: 'Отфильтровать по доступу (user:auth, roles:list).' example: null nullable: false - in: query name: page description: 'Номер страницы.' example: 1 required: false schema: type: integer description: 'Номер страницы.' example: 1 nullable: false - in: query name: page-size description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 required: false schema: type: integer description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: current_page: 1 data: - id: 00000000-0000-4000-8001-000000000002 name: 'Test Admin' username: admin email: almaximal+admin@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 00000000-0000-4000-8001-000000000003 name: 'Test Employee' username: employee email: almaximal+employee@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 00000000-0000-4000-8001-000000000004 name: 'Test Executor 1' username: executor1 email: almaximal+executor1@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' first_page_url: 'http://app_users:8080/api/v1/users?page=1' from: 1 last_page: 1 last_page_url: 'http://app_users:8080/api/v1/users?page=1' links: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/users?page=1' label: '1' active: true - url: null label: 'Вперёд »' active: false next_page_url: null path: 'http://app_users:8080/api/v1/users' per_page: 50 prev_page_url: null to: 3 total: 3 properties: current_page: type: integer example: 1 data: type: array example: - id: 00000000-0000-4000-8001-000000000002 name: 'Test Admin' username: admin email: almaximal+admin@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 00000000-0000-4000-8001-000000000003 name: 'Test Employee' username: employee email: almaximal+employee@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 00000000-0000-4000-8001-000000000004 name: 'Test Executor 1' username: executor1 email: almaximal+executor1@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 00000000-0000-4000-8001-000000000002 name: type: string example: 'Test Admin' username: type: string example: admin email: type: string example: almaximal+admin@ya.ru phone: type: string example: null email_verified_at: type: string example: null deleted_at: type: string example: null created_at: type: string example: '2025-02-06T10:34:15.000000Z' updated_at: type: string example: '2025-02-06T10:34:15.000000Z' roles: type: array example: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-2de3-4607-99db-91cf7c73850f code: type: string example: admin name: type: string example: Админ params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' first_page_url: type: string example: 'http://app_users:8080/api/v1/users?page=1' from: type: integer example: 1 last_page: type: integer example: 1 last_page_url: type: string example: 'http://app_users:8080/api/v1/users?page=1' links: type: array example: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/users?page=1' label: '1' active: true - url: null label: 'Вперёд »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Назад' active: type: boolean example: false next_page_url: type: string example: null path: type: string example: 'http://app_users:8080/api/v1/users' per_page: type: integer example: 50 prev_page_url: type: string example: null to: type: integer example: 3 total: type: integer example: 3 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: users:list' properties: message: type: string example: 'User does not have any of permissions: users:list' tags: - 'User API' /api/v1/users/bulk-read: post: summary: 'Получить информацию по нескольким пользователям' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - id: 00000000-0000-4000-8001-000000000011 name: 'Test Admin 2' username: admintest2 email: almaximal+admin2@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 00000000-0000-4000-8001-000000000002 name: 'Test Admin' username: admin email: almaximal+admin@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: users:list' properties: message: type: string example: 'User does not have any of permissions: users:list' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'Значение поля value должно быть корректным UUID.' example: - 4310bbb5-1ccf-3612-a1c2-21c39f1e8a14 items: type: string required: - ids /api/v1/users/current: get: summary: 'Получить текущего пользователя' operationId: '' description: 'Получить данные о текущем пользователе' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 00000000-0000-4000-8001-000000000006 name: 'Test Executor 3' username: executor3 email: almaximal+executor3@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' properties: id: type: string example: 00000000-0000-4000-8001-000000000006 name: type: string example: 'Test Executor 3' username: type: string example: executor3 email: type: string example: almaximal+executor3@ya.ru phone: type: string example: null email_verified_at: type: string example: null deleted_at: type: string example: null created_at: type: string example: '2025-02-06T10:34:15.000000Z' updated_at: type: string example: '2025-02-06T10:34:15.000000Z' roles: type: array example: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: type: string example: executor name: type: string example: Исполнитель params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' tags: - 'User API' /api/v1/users/current/permissions: get: summary: 'Получить разрешения текущего пользователя' operationId: '' description: 'Получить разрешения пользователя в виде массива кодов' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: string example: - 'roles:list' - 'roles:create' - 'roles:update' - 'roles:delete' - 'roles:assign' tags: - 'User API' '/api/v1/users/{id}': get: summary: 'Информация о пользователе' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - id: 00000000-0000-4000-8001-000000000006 name: 'Test Executor 3' username: executor3 email: almaximal+executor3@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: users:get' properties: message: type: string example: 'User does not have any of permissions: users:get' 404: description: '' content: application/json: schema: type: object example: message: 'User not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'User not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' put: summary: 'Обновить пользователя' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 00000000-0000-4000-8001-000000000006 name: 'Test Executor 3' username: executor3 email: almaximal+executor3@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' properties: id: type: string example: 00000000-0000-4000-8001-000000000006 name: type: string example: 'Test Executor 3' username: type: string example: executor3 email: type: string example: almaximal+executor3@ya.ru phone: type: string example: null email_verified_at: type: string example: null deleted_at: type: string example: null created_at: type: string example: '2025-02-06T10:34:15.000000Z' updated_at: type: string example: '2025-02-06T10:34:15.000000Z' roles: type: array example: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: type: string example: executor name: type: string example: Исполнитель params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: users:update' properties: message: type: string example: 'User does not have any of permissions: users:update' 404: description: '' content: application/json: schema: type: object example: message: 'User not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'User not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: xtykqghvbnvsbeais nullable: false username: type: string description: 'Количество символов в поле value должно быть не меньше 4. Количество символов в значении поля value не может превышать 50.' example: egmmjdsxfjjvljl nullable: false password: type: string description: 'Количество символов в поле value должно быть не меньше 5.' example: '2,@Q|:' nullable: true phone: type: string description: 'Количество символов в поле value должно быть от 10 до 11.' example: '8653199207' nullable: true email: type: string description: 'Значение поля value должно быть действительным электронным адресом.' example: hipolito.rolfson@example.net nullable: true roles: type: array description: 'The code of an existing record in the roles table.' example: - quia items: type: string required: - name - username - roles parameters: - in: path name: id description: 'Идентификатор (UUID)' example: ca40ffe7-bbaa-3f3a-8f6f-25f25ebcdfb3 required: true schema: type: uuid '/api/v1/users/{id}/roles': put: summary: 'Назначить роли' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 00000000-0000-4000-8001-000000000006 name: 'Test Executor 3' username: executor3 email: almaximal+executor3@ya.ru phone: null email_verified_at: null deleted_at: null created_at: '2025-02-06T10:34:15.000000Z' updated_at: '2025-02-06T10:34:15.000000Z' roles: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' properties: id: type: string example: 00000000-0000-4000-8001-000000000006 name: type: string example: 'Test Executor 3' username: type: string example: executor3 email: type: string example: almaximal+executor3@ya.ru phone: type: string example: null email_verified_at: type: string example: null deleted_at: type: string example: null created_at: type: string example: '2025-02-06T10:34:15.000000Z' updated_at: type: string example: '2025-02-06T10:34:15.000000Z' roles: type: array example: - id: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: executor name: Исполнитель params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-1c86-468e-b95c-c4b557cbf440 code: type: string example: executor name: type: string example: Исполнитель params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: users:update' properties: message: type: string example: 'User does not have any of permissions: users:update' 404: description: '' content: application/json: schema: type: object example: message: 'User not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'User not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: roles: type: array description: 'Must match the regex /^[a-z0-9_:*]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 32.' example: - mjgsjret items: type: string required: - roles parameters: - in: path name: id description: 'Идентификатор (UUID)' example: 6add1290-64ff-3ab7-8a1e-0310171b19ca required: true schema: type: uuid /api/v1/roles: get: summary: 'Получить список всех ролей' operationId: '' description: '' parameters: - in: query name: page description: 'Номер страницы.' example: 1 required: false schema: type: integer description: 'Номер страницы.' example: 1 nullable: false - in: query name: page-size description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 required: false schema: type: integer description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: current_page: 1 data: - id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' first_page_url: 'http://app_users:8080/api/v1/roles?page=1' from: 1 last_page: 1 last_page_url: 'http://app_users:8080/api/v1/roles?page=1' links: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/roles?page=1' label: '1' active: true - url: null label: 'Вперёд »' active: false next_page_url: null path: 'http://app_users:8080/api/v1/roles' per_page: 50 prev_page_url: null to: 2 total: 2 properties: current_page: type: integer example: 1 data: type: array example: - id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' first_page_url: type: string example: 'http://app_users:8080/api/v1/roles?page=1' from: type: integer example: 1 last_page: type: integer example: 1 last_page_url: type: string example: 'http://app_users:8080/api/v1/roles?page=1' links: type: array example: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/roles?page=1' label: '1' active: true - url: null label: 'Вперёд »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Назад' active: type: boolean example: false next_page_url: type: string example: null path: type: string example: 'http://app_users:8080/api/v1/roles' per_page: type: integer example: 50 prev_page_url: type: string example: null to: type: integer example: 2 total: type: integer example: 2 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: roles:list' properties: message: type: string example: 'User does not have any of permissions: roles:list' tags: - 'User API' post: summary: 'Создать роль' operationId: '' description: '' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0004-000000000001 code: type: string example: 'users:list' verb: type: string example: 'просматривать всех пользователей' title: type: string example: 'Просмотр всех пользователей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: roles:create' properties: message: type: string example: 'User does not have any of permissions: roles:create' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must match the regex /^[a-z0-9_:*]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 32.' example: pypldtwcyvpqx nullable: false name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: sebyhq nullable: false params: type: object description: '' example: null nullable: true properties: { } notes: type: string description: 'Количество символов в значении поля value не может превышать 500.' example: igxfjbgdueggyyylcrkzqiu nullable: true permissions: type: array description: 'Must match the regex /^[a-z0-9_:*-]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 100.' example: - clrxsknzqiagb items: type: string required: - code - name - permissions '/api/v1/roles/{id}': get: summary: 'Получить информацию о роли' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0004-000000000001 code: type: string example: 'users:list' verb: type: string example: 'просматривать всех пользователей' title: type: string example: 'Просмотр всех пользователей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: roles:list' properties: message: type: string example: 'User does not have any of permissions: roles:list' 404: description: '' content: application/json: schema: type: object example: message: 'Role not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Role not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' put: summary: 'Обновить роль' operationId: '' description: 'Нельзя обновить системные роли: `root`, `auth`.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0004-000000000001 code: type: string example: 'users:list' verb: type: string example: 'просматривать всех пользователей' title: type: string example: 'Просмотр всех пользователей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: roles:update' properties: message: type: string example: 'User does not have any of permissions: roles:update' 404: description: '' content: application/json: schema: type: object example: message: 'Role not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Role not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must match the regex /^[a-z0-9_:*]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 32.' example: oeb nullable: false name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: oehaudijcahomwjosi nullable: false params: type: object description: '' example: null nullable: true properties: { } notes: type: string description: 'Количество символов в значении поля value не может превышать 500.' example: ihtzcidacpsqvebrq nullable: true permissions: type: array description: 'Must match the regex /^[a-z0-9_:*-]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 100.' example: - tfhjxnmmpttbnvpmtcd items: type: string required: - code - name - permissions delete: summary: 'Удалить роль' operationId: '' description: 'Нельзя удалить системные роли: `root`, `auth`.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: true properties: data: type: boolean example: true 403: description: '' content: application/json: schema: oneOf: - description: '' type: object example: message: 'User does not have any of permissions: roles:delete' properties: message: type: string example: 'User does not have any of permissions: roles:delete' - description: '' type: object example: message: 'System role cannot be deleted.' properties: message: type: string example: 'System role cannot be deleted.' 404: description: '' content: application/json: schema: type: object example: message: 'Role not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Role not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' parameters: - in: path name: id description: 'Идентификатор (UUID)' example: 05ec63e3-d72b-3710-a1e8-21c1c98856b0 required: true schema: type: uuid /api/v1/permissions: get: summary: 'Получить список всех разрешений' operationId: '' description: 'Массив объектов разрешений.' parameters: - in: query name: page description: 'Номер страницы.' example: 1 required: false schema: type: integer description: 'Номер страницы.' example: 1 nullable: false - in: query name: page-size description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 required: false schema: type: integer description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: current_page: 1 data: - id: 00000000-0000-0000-0002-000000000001 code: 'roles:list' verb: 'просматривать все роли' title: 'Просмотр всех ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0002-000000000002 code: 'roles:create' verb: 'создавать роли' title: 'Создание ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0002-000000000003 code: 'roles:update' verb: 'обновлять роли' title: 'Обновление ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0002-000000000004 code: 'roles:delete' verb: 'удалять роли' title: 'Удаление ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null first_page_url: 'http://app_users:8080/api/v1/permissions?page=1' from: 1 last_page: 4 last_page_url: 'http://app_users:8080/api/v1/permissions?page=4' links: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/permissions?page=1' label: '1' active: true - url: 'http://app_users:8080/api/v1/permissions?page=2' label: '2' active: false - url: 'http://app_users:8080/api/v1/permissions?page=3' label: '3' active: false - url: 'http://app_users:8080/api/v1/permissions?page=4' label: '4' active: false - url: 'http://app_users:8080/api/v1/permissions?page=2' label: 'Вперёд »' active: false next_page_url: 'http://app_users:8080/api/v1/permissions?page=2' path: 'http://app_users:8080/api/v1/permissions' per_page: 50 prev_page_url: null to: 50 total: 160 properties: current_page: type: integer example: 1 data: type: array example: - id: 00000000-0000-0000-0002-000000000001 code: 'roles:list' verb: 'просматривать все роли' title: 'Просмотр всех ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0002-000000000002 code: 'roles:create' verb: 'создавать роли' title: 'Создание ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0002-000000000003 code: 'roles:update' verb: 'обновлять роли' title: 'Обновление ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0002-000000000004 code: 'roles:delete' verb: 'удалять роли' title: 'Удаление ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0002-000000000001 code: type: string example: 'roles:list' verb: type: string example: 'просматривать все роли' title: type: string example: 'Просмотр всех ролей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null first_page_url: type: string example: 'http://app_users:8080/api/v1/permissions?page=1' from: type: integer example: 1 last_page: type: integer example: 4 last_page_url: type: string example: 'http://app_users:8080/api/v1/permissions?page=4' links: type: array example: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/permissions?page=1' label: '1' active: true - url: 'http://app_users:8080/api/v1/permissions?page=2' label: '2' active: false - url: 'http://app_users:8080/api/v1/permissions?page=3' label: '3' active: false - url: 'http://app_users:8080/api/v1/permissions?page=4' label: '4' active: false - url: 'http://app_users:8080/api/v1/permissions?page=2' label: 'Вперёд »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Назад' active: type: boolean example: false next_page_url: type: string example: 'http://app_users:8080/api/v1/permissions?page=2' path: type: string example: 'http://app_users:8080/api/v1/permissions' per_page: type: integer example: 50 prev_page_url: type: string example: null to: type: integer example: 50 total: type: integer example: 160 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: permissions:list' properties: message: type: string example: 'User does not have any of permissions: permissions:list' tags: - 'User API' post: summary: 'Создать разрешение' operationId: '' description: '' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 00000000-0000-0000-0002-000000054321 code: 'dms:bench:list' verb: 'просматривать все станки' title: 'Просмотр всех станков' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 00000000-0000-0000-0002-000000054321 code: type: string example: 'dms:bench:list' verb: type: string example: 'просматривать все станки' title: type: string example: 'Просмотр всех станков' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: permissions:create' properties: message: type: string example: 'User does not have any of permissions: permissions:create' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must match the regex /^[a-z0-9_:*-]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 100.' example: wfjupitogsgrruwekfbsft nullable: false verb: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 64.' example: gryiicxsjgueup nullable: false title: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: ctfjzjkfqnlmklwedchrsh nullable: true params: type: object description: '' example: null nullable: true properties: { } notes: type: string description: 'Количество символов в значении поля value не может превышать 500.' example: znuovkeneqaeihir nullable: true required: - code - verb '/api/v1/permissions/{id}': get: summary: 'Получить информацию о разрешении' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 00000000-0000-0000-0002-000000000001 code: 'roles:list' verb: 'просматривать все роли' title: 'Просмотр всех ролей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 00000000-0000-0000-0002-000000000001 code: type: string example: 'roles:list' verb: type: string example: 'просматривать все роли' title: type: string example: 'Просмотр всех ролей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 403: description: '' content: application/json: schema: type: object example: message: 'User does not have any of permissions: permissions:list' properties: message: type: string example: 'User does not have any of permissions: permissions:list' 404: description: '' content: application/json: schema: type: object example: message: 'Permission not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Permission not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' put: summary: 'Обновить разрешение' operationId: '' description: 'Нельзя обновить системные разрешения: `user:`, `users:`, `roles:`, `permissions:`.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 00000000-0000-0000-0002-000000054321 code: 'dms:bench:list' verb: 'просматривать все станки' title: 'Просмотр всех станков' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 00000000-0000-0000-0002-000000054321 code: type: string example: 'dms:bench:list' verb: type: string example: 'просматривать все станки' title: type: string example: 'Просмотр всех станков' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 403: description: '' content: application/json: schema: oneOf: - description: '' type: object example: message: 'User does not have any of permissions: permissions:update' properties: message: type: string example: 'User does not have any of permissions: permissions:update' - description: '' type: object example: message: 'System role cannot be updated.' properties: message: type: string example: 'System role cannot be updated.' 404: description: '' content: application/json: schema: type: object example: message: 'Permission not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Permission not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must match the regex /^[a-z0-9_:*-]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 100.' example: mwtigmouynfurpgxwt nullable: false verb: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 64.' example: tjgfoznnlnntcgbr nullable: false title: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: hooteviipt nullable: true params: type: object description: '' example: null nullable: true properties: { } notes: type: string description: 'Количество символов в значении поля value не может превышать 500.' example: kijilz nullable: true required: - code - verb delete: summary: 'Удалить разрешение' operationId: '' description: 'Нельзя удалить системные разрешения: `user:`, `users:`, `roles:`, `permissions:`.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: true properties: data: type: boolean example: true 403: description: '' content: application/json: schema: oneOf: - description: '' type: object example: message: 'User does not have any of permissions: permissions:delete' properties: message: type: string example: 'User does not have any of permissions: permissions:delete' - description: '' type: object example: message: 'System role cannot be deleted.' properties: message: type: string example: 'System role cannot be deleted.' 404: description: '' content: application/json: schema: type: object example: message: 'Permission not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Permission not found: #00000000-0000-4000-8001-000000000009' tags: - 'User API' parameters: - in: path name: id description: 'Идентификатор (UUID)' example: 8a039346-877f-3d0c-97ec-92907461f247 required: true schema: type: uuid /api/v1/client/login: post: summary: 'Получение ключа клиента' operationId: '' description: "`access_token` является JWT.\n Пример payload:\n ```json\n {\n \"aud\": \"9c876e62-6a44-455f-b33d-5dbe72475274\",\n \"jti\": \"8aa424247a29485b66af9670c7e6532b9f85504745bac4e74a653d78d6aaa4e4f9d938e8278fdc64\",\n \"iat\": 1739180144.815972, // issued at time\n \"nbf\": 1739180144.815974,\n \"exp\": 1740389744.806619, // expire time\n \"sub\": \"\", // user_id здесь нет, т.к. это ключ для действий от имени сервиса\n \"scopes\": []\n }\n ```\n\n" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: token_type: Bearer expires_in: 1209600 access_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5Yzg3NmU2Mi02YTQ0LTQ1NWYtYjMzZC01ZGJlNzI0NzUyNzQiLCJqdGkiOiI4YWE0MjQyNDdhMjk0ODViNjZhZjk2NzBjN2U2NTMyYjlmODU1MDQ3NDViYWM0ZTc0YTY1M2Q3OGQ2YWFhNGU0ZjlkOTM4ZTgyNzhmZGM2NCIsImlhdCI6MTczOTE4MzU1MC45NjU0NzQsIm5iZiI6MTczOTE4MzU1MC45NjU0NzYsImV4cCI6MTc0MDM5MzE1MC45NjEwOCwic3ViIjoiIiwic2NvcGVzIjpbXX0.iaxFl4DYXWDJQIlfJrLUSmaJf-OYKCW2sabUU8qWN9rBK0gFZY-sUt_IzlLdbIMWX_faMpxYcuwasVRMjyLGowIYjdyv4YE2hgz83Wa-bnIwtuSHGlgEBQZR6QrSXdGoFZe5v5ThCWJc6WqGsOlgzyXjuZhrFs-eOuW7f5irtV3nLiswbFEMYlBIWgNMqzmZC7g44CoFMuOWDl-BsAricutmN6ko5jE_kMyH95UVHp1RnCeZxkIaaWzVsvc7sxtSAJSfGXy0wfaszzbrH2lRz3OMyL4Zqylk4K4URKF6PMK7fytSBbyg-TTnQLbfTnZBr6PcHCgbRQL0o4S7Bko739MbRbE0mFWnv9kA8bqwHobjL1PP4zE1KXPJB38L60c0YG3xkLXfq-WOLMfwcs80uT8lXI84Lgh_VblPEsF9sfaOH0_J3lHFYcc3nMOdDGNvL9LFwCDU5ehoQpFPEEB6Ky6XAABVCPZ86zTROkJcTKhdf8arKcgkEugmvrrIm3L6OkVVLNTBwSWNNvUouMxZ3jd0wIYG4zHSbzA4g8QXzCuBb_k9T6sZjj4ECE0UBj2n6EH7R73_00ow_5wsRTbObFUJYoqrN02an36mxSPN5I07nOEJC1PWpoTA7mlOeREM4ug3J0i11g7wMuC1iNIqEYJZCxR01Vk2hr0j8ORUwNc properties: token_type: type: string example: Bearer expires_in: type: integer example: 1209600 access_token: type: string example: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5Yzg3NmU2Mi02YTQ0LTQ1NWYtYjMzZC01ZGJlNzI0NzUyNzQiLCJqdGkiOiI4YWE0MjQyNDdhMjk0ODViNjZhZjk2NzBjN2U2NTMyYjlmODU1MDQ3NDViYWM0ZTc0YTY1M2Q3OGQ2YWFhNGU0ZjlkOTM4ZTgyNzhmZGM2NCIsImlhdCI6MTczOTE4MzU1MC45NjU0NzQsIm5iZiI6MTczOTE4MzU1MC45NjU0NzYsImV4cCI6MTc0MDM5MzE1MC45NjEwOCwic3ViIjoiIiwic2NvcGVzIjpbXX0.iaxFl4DYXWDJQIlfJrLUSmaJf-OYKCW2sabUU8qWN9rBK0gFZY-sUt_IzlLdbIMWX_faMpxYcuwasVRMjyLGowIYjdyv4YE2hgz83Wa-bnIwtuSHGlgEBQZR6QrSXdGoFZe5v5ThCWJc6WqGsOlgzyXjuZhrFs-eOuW7f5irtV3nLiswbFEMYlBIWgNMqzmZC7g44CoFMuOWDl-BsAricutmN6ko5jE_kMyH95UVHp1RnCeZxkIaaWzVsvc7sxtSAJSfGXy0wfaszzbrH2lRz3OMyL4Zqylk4K4URKF6PMK7fytSBbyg-TTnQLbfTnZBr6PcHCgbRQL0o4S7Bko739MbRbE0mFWnv9kA8bqwHobjL1PP4zE1KXPJB38L60c0YG3xkLXfq-WOLMfwcs80uT8lXI84Lgh_VblPEsF9sfaOH0_J3lHFYcc3nMOdDGNvL9LFwCDU5ehoQpFPEEB6Ky6XAABVCPZ86zTROkJcTKhdf8arKcgkEugmvrrIm3L6OkVVLNTBwSWNNvUouMxZ3jd0wIYG4zHSbzA4g8QXzCuBb_k9T6sZjj4ECE0UBj2n6EH7R73_00ow_5wsRTbObFUJYoqrN02an36mxSPN5I07nOEJC1PWpoTA7mlOeREM4ug3J0i11g7wMuC1iNIqEYJZCxR01Vk2hr0j8ORUwNc 401: description: '' content: application/json: schema: type: object example: message: 'Bad Credentials.' properties: message: type: string example: 'Bad Credentials.' tags: - 'Client API' requestBody: required: true content: application/json: schema: type: object properties: client_id: type: string description: 'Значение поля value должно быть корректным UUID.' example: 241b7515-1175-3f66-97e8-7b2d3629af1f nullable: false client_secret: type: string description: 'Количество символов в значении поля value не может превышать 255.' example: weepuxgznnw nullable: false required: - client_id - client_secret security: [] /api/v1/client/check-auth: get: summary: 'Проверка авторизации клиента' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: true properties: data: type: boolean example: true tags: - 'Client API' /api/v1/client/users: post: summary: 'Создать пользователя' operationId: '' description: '' parameters: [] responses: 201: description: '' content: application/json: schema: type: array items: type: object example: - id: 9e2d965e-2663-43d8-8316-c585f98d8748 name: lcezdywovqahbotk username: mmhqxvvejbcgzvohwghbv email: lexie38@example.org phone: '7437899606' email_verified_at: null deleted_at: null created_at: '2025-02-10T11:18:54.000000Z' updated_at: '2025-02-10T11:18:54.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' tags: - 'Client API' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: ch nullable: false username: type: string description: 'Количество символов в поле value должно быть не меньше 4. Количество символов в значении поля value не может превышать 50.' example: rizuxfvsctcfgd nullable: false password: type: string description: 'Количество символов в поле value должно быть не меньше 5.' example: "j:'`zWAfI4f" nullable: true password_hash: type: string description: 'Количество символов в поле value должно быть не меньше 5.' example: xwoiomobgavpciemchftpzjdhtkoucvyvybkhrpssykqkxfgirjdswdxdlwzprachzksbutbhapstkksvvltpcux nullable: true phone: type: string description: 'Количество символов в поле value должно быть от 10 до 11.' example: '11840201796' nullable: true email: type: string description: 'Значение поля value должно быть действительным электронным адресом.' example: laura.auer@example.net nullable: true roles: type: array description: 'The code of an existing record in the roles table.' example: - reiciendis items: type: string required: - name - username - roles get: summary: 'Получить список пользователей' operationId: '' description: "Получить список пользователей с возможностью фильтрации по времени обновления данных.\nПолезно для синхронизации обновлений данных пользователей от других сервисов." parameters: - in: query name: updated_after_timestamp description: 'Unix timestamp. Если задано - вернуться пользователи с временем обновления после этого значения. Значение поля value должно быть не меньше 1.' example: null required: false schema: type: integer description: 'Unix timestamp. Если задано - вернуться пользователи с временем обновления после этого значения. Значение поля value должно быть не меньше 1.' example: null nullable: true - in: query name: page description: 'Номер страницы.' example: 1 required: false schema: type: integer description: 'Номер страницы.' example: 1 nullable: false - in: query name: page-size description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 required: false schema: type: integer description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 nullable: false responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Client API' '/api/v1/client/users/{id}': get: summary: 'Информация о пользователе' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - id: 9e2d965e-2663-43d8-8316-c585f98d8748 name: lcezdywovqahbotk username: mmhqxvvejbcgzvohwghbv email: lexie38@example.org phone: '7437899606' email_verified_at: null deleted_at: null created_at: '2025-02-10T11:18:54.000000Z' updated_at: '2025-02-10T11:18:54.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' 404: description: '' content: application/json: schema: type: object example: message: 'User not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'User not found: #00000000-0000-4000-8001-000000000009' tags: - 'Client API' put: summary: 'Обновить пользователя' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object example: - id: 9e2d965e-2663-43d8-8316-c585f98d8748 name: lcezdywovqahbotk username: mmhqxvvejbcgzvohwghbv email: lexie38@example.org phone: '7437899606' email_verified_at: null deleted_at: null created_at: '2025-02-10T11:18:54.000000Z' updated_at: '2025-02-10T11:18:54.000000Z' roles: - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' 404: description: '' content: application/json: schema: type: object example: message: 'User not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'User not found: #00000000-0000-4000-8001-000000000009' tags: - 'Client API' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: aeanwtygw nullable: false username: type: string description: 'Количество символов в поле value должно быть не меньше 4. Количество символов в значении поля value не может превышать 50.' example: labjuljotggfireywacfoj nullable: false password: type: string description: 'Количество символов в поле value должно быть не меньше 5.' example: ':KNFqy^#*2e(_xJkf:Wv' nullable: true password_hash: type: string description: 'Количество символов в поле value должно быть не меньше 5.' example: cfaonfycprplvomlghwnxykdbdigpqvztnodpyuhwmraptwdqwngzrjpjoaiqtnmrgdqxjpofd nullable: true phone: type: string description: 'Количество символов в поле value должно быть от 10 до 11.' example: '46527938053' nullable: true email: type: string description: 'Значение поля value должно быть действительным электронным адресом.' example: gbogisich@example.org nullable: true roles: type: array description: 'The code of an existing record in the roles table.' example: - sequi items: type: string required: - name - username - roles parameters: - in: path name: id description: 'Идентификатор (UUID)' example: 9e0046c2-d3ff-3a25-8339-e0b58deaa5da required: true schema: type: uuid '/api/v1/client/users/{id}/permissions': get: summary: Разрешения operationId: '' description: 'Получить разрешения пользователя в виде массива кодов' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: string example: - 'roles:list' - 'roles:create' - 'roles:update' - 'roles:delete' - 'roles:assign' 404: description: '' content: application/json: schema: type: object example: message: 'User not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'User not found: #00000000-0000-4000-8001-000000000009' tags: - 'Client API' parameters: - in: path name: id description: 'Идентификатор (UUID)' example: 774c3502-7cc5-35e7-9444-93eeea05b38d required: true schema: type: uuid /api/v1/client/roles: get: summary: 'Получить список всех ролей' operationId: '' description: '' parameters: - in: query name: page description: 'Номер страницы.' example: 1 required: false schema: type: integer description: 'Номер страницы.' example: 1 nullable: false - in: query name: page-size description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 required: false schema: type: integer description: 'Количество элементов, возвращаемых на странице. По умолчанию 50.' example: 50 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: current_page: 1 data: - id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' first_page_url: 'http://app_users:8080/api/v1/roles?page=1' from: 1 last_page: 1 last_page_url: 'http://app_users:8080/api/v1/roles?page=1' links: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/roles?page=1' label: '1' active: true - url: null label: 'Вперёд »' active: false next_page_url: null path: 'http://app_users:8080/api/v1/roles' per_page: 50 prev_page_url: null to: 2 total: 2 properties: current_page: type: integer example: 1 data: type: array example: - id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' - id: 9e257a75-2de3-4607-99db-91cf7c73850f code: admin name: Админ params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' items: type: object properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' first_page_url: type: string example: 'http://app_users:8080/api/v1/roles?page=1' from: type: integer example: 1 last_page: type: integer example: 1 last_page_url: type: string example: 'http://app_users:8080/api/v1/roles?page=1' links: type: array example: - url: null label: '« Назад' active: false - url: 'http://app_users:8080/api/v1/roles?page=1' label: '1' active: true - url: null label: 'Вперёд »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Назад' active: type: boolean example: false next_page_url: type: string example: null path: type: string example: 'http://app_users:8080/api/v1/roles' per_page: type: integer example: 50 prev_page_url: type: string example: null to: type: integer example: 2 total: type: integer example: 2 tags: - 'Client API' post: summary: 'Создать роль' operationId: '' description: '' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0004-000000000001 code: type: string example: 'users:list' verb: type: string example: 'просматривать всех пользователей' title: type: string example: 'Просмотр всех пользователей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null tags: - 'Client API' requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must match the regex /^[a-z0-9_:*]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 32.' example: ujruerzlnrr nullable: false name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: sjeqyfmkdtaindwfur nullable: false params: type: object description: '' example: null nullable: true properties: { } notes: type: string description: 'Количество символов в значении поля value не может превышать 500.' example: cgpzasjbtugy nullable: true permissions: type: array description: 'Must match the regex /^[a-z0-9_:*-]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 100.' example: - yxtulvrzhjcgvtym items: type: string required: - code - name - permissions '/api/v1/client/roles/{id}': get: summary: 'Получить информацию о роли' operationId: '' description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0004-000000000001 code: type: string example: 'users:list' verb: type: string example: 'просматривать всех пользователей' title: type: string example: 'Просмотр всех пользователей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 404: description: '' content: application/json: schema: type: object example: message: 'Role not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Role not found: #00000000-0000-4000-8001-000000000009' tags: - 'Client API' put: summary: 'Обновить роль' operationId: '' description: 'Нельзя обновить системные роли: `root`, `auth`.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 9e257a75-2853-40be-9934-9de8f10d524f code: master name: Мастер params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: '2025-02-06T10:34:14.000000Z' permissions: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null properties: id: type: string example: 9e257a75-2853-40be-9934-9de8f10d524f code: type: string example: master name: type: string example: Мастер params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: '2025-02-06T10:34:14.000000Z' permissions: type: array example: - id: 00000000-0000-0000-0004-000000000001 code: 'users:list' verb: 'просматривать всех пользователей' title: 'Просмотр всех пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null - id: 00000000-0000-0000-0004-000000000002 code: 'users:create' verb: 'создавать пользователей' title: 'Создание пользователей' params: null notes: null author_id: null created_at: '2025-02-06T10:34:14.000000Z' updated_at: null items: type: object properties: id: type: string example: 00000000-0000-0000-0004-000000000001 code: type: string example: 'users:list' verb: type: string example: 'просматривать всех пользователей' title: type: string example: 'Просмотр всех пользователей' params: type: string example: null notes: type: string example: null author_id: type: string example: null created_at: type: string example: '2025-02-06T10:34:14.000000Z' updated_at: type: string example: null 404: description: '' content: application/json: schema: type: object example: message: 'Role not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Role not found: #00000000-0000-4000-8001-000000000009' tags: - 'Client API' requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must match the regex /^[a-z0-9_:*]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 32.' example: nllubmtjvdpqrps nullable: false name: type: string description: 'Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 128.' example: rxjpysyoyuflnvqcq nullable: false params: type: object description: '' example: null nullable: true properties: { } notes: type: string description: 'Количество символов в значении поля value не может превышать 500.' example: boprrgzb nullable: true permissions: type: array description: 'Must match the regex /^[a-z0-9_:*-]+$/. Количество символов в поле value должно быть не меньше 3. Количество символов в значении поля value не может превышать 100.' example: - rwk items: type: string required: - code - name - permissions delete: summary: 'Удалить роль' operationId: '' description: 'Нельзя удалить системные роли: `root`, `auth`.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: true properties: data: type: boolean example: true 403: description: '' content: application/json: schema: type: object example: message: 'System role cannot be deleted.' properties: message: type: string example: 'System role cannot be deleted.' 404: description: '' content: application/json: schema: type: object example: message: 'Role not found: #00000000-0000-4000-8001-000000000009' properties: message: type: string example: 'Role not found: #00000000-0000-4000-8001-000000000009' tags: - 'Client API' parameters: - in: path name: id description: 'Идентификатор (UUID)' example: 98ea0013-74c5-3527-9a59-cfaed67356f6 required: true schema: type: uuid tags: - name: 'User API' description: "\nВзаимодействие от имени пользователя" - name: 'Client API' description: "\nВзаимодействие от имени клиента (сервиса)" components: securitySchemes: default: type: http scheme: bearer description: 'Вы можете получить токен, выполнив аутентификацию:
Для обычных методов: `api/v1/auth/login`.
Для API клиентов (`api/v1/client/*`): `api/v1/client/login`.' security: - default: []