diff --git a/docs/insomnia.json b/docs/insomnia.json new file mode 100644 index 0000000..2dec1b1 --- /dev/null +++ b/docs/insomnia.json @@ -0,0 +1 @@ +{"_type":"export","__export_format":4,"__export_date":"2023-07-04T23:23:38.788Z","__export_source":"insomnia.desktop.app:v2023.2.2","resources":[{"_id":"req_c054a2de073a4102b1b61254b9b1a55f","parentId":"fld_1793588e48814524a642d5dcc7bf8021","modified":1688512195075,"created":1688512195075,"url":"{{ _.base_url }}/requests/amount/{{ _.range }}","name":"Get number of requisitions for a specific period","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195075,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_1793588e48814524a642d5dcc7bf8021","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512195056,"created":1688512195056,"name":"Requests","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512195056,"_type":"request_group"},{"_id":"wrk_b3896d546c554b56b1f7fc0bd22144f1","parentId":null,"modified":1688512976728,"created":1688512169042,"name":"Untitled","description":"Do not worry about managing the multiple versions of the Bible RESTful Bible API with 7 versions, 4 languages and multiple features to simplify your day to day.\n\n[Contact us - Website](https://www.abibliadigital.com.br/)\n\n[BSD 2-Clause \"Simplified\" License](https://github.com/omarciovsena/abibliadigital/blob/master/LICENSE.md)","scope":"design","_type":"workspace"},{"_id":"req_e9166a89e78e4a6b90a0e6d20a4d7c8e","parentId":"fld_1793588e48814524a642d5dcc7bf8021","modified":1688512195073,"created":1688512195073,"url":"{{ _.base_url }}/requests/{{ _.range }}","name":"Get requests for a specific period","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195073,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_9dc555fc294543d7b3518054d3c6cecf","parentId":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","modified":1688512195072,"created":1688512195072,"url":"{{ _.base_url }}/users/password/{{ _.email }}","name":"Resend user password","description":"","method":"POST","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195072,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512195055,"created":1688512195055,"name":"Users","description":"The project will always be open source. Authentication is only to identify how many users are using the project and to inform about new updates.","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512195055,"_type":"request_group"},{"_id":"req_987884d9c5cb43b8b6ab64aadf3c9c28","parentId":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","modified":1688512195071,"created":1688512195071,"url":"{{ _.base_url }}/users/token","name":"Update token","description":"","method":"PUT","body":{"mimeType":"application/json","text":"{\n \"email\": \"user@example.com\",\n \"password\": \"string\"\n}"},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195071,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_56e941aea89a421eb0537481a10e2086","parentId":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","modified":1688512195069,"created":1688512195069,"url":"{{ _.base_url }}/users/stats","name":"Get user statistics","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195069,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_4ee1b92a721e4dc5a4a21d02eb7f7066","parentId":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","modified":1688512195068,"created":1688512195068,"url":"{{ _.base_url }}/users/{{ _.email }}","name":"Get a user","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195068,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_fc7901dd9f0c4c759044f6b7bbae6dcd","parentId":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","modified":1688512195066,"created":1688512195066,"url":"{{ _.base_url }}/users","name":"Delete user","description":"","method":"DELETE","body":{"mimeType":"application/json","text":"{\n \"email\": \"user@example.com\",\n \"password\": \"string\"\n}"},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195066,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_0077437dc4e948b3a60bda326da1825e","parentId":"fld_1f9b90d0e7fd484ab93e5d7c8af1b14f","modified":1688512195065,"created":1688512195065,"url":"{{ _.base_url }}/users","name":"Create a new user","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n \"name\": \"string\",\n \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"notifications\": true\n}"},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1688512195065,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_2b10adecdabd4d12b426c7bd9ea7772d","parentId":"fld_153108cda55d4c5b9ef5f845244faaae","modified":1688512195064,"created":1688512195064,"url":"{{ _.base_url }}/versions","name":"Get Bible Versions","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195064,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_153108cda55d4c5b9ef5f845244faaae","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512195053,"created":1688512195053,"name":"Versions","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512195053,"_type":"request_group"},{"_id":"req_ada3880be75b42e3ab84061252e1d461","parentId":"fld_ace2c5a94562456d95bf419124291011","modified":1688512195063,"created":1688512195063,"url":"{{ _.base_url }}/verses/search","name":"Search verses by word","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n \"version\": \"string\",\n \"search\": \"string\"\n}"},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195063,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_ace2c5a94562456d95bf419124291011","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512195051,"created":1688512195051,"name":"Verses","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512195051,"_type":"request_group"},{"_id":"req_bcbab1fa0a604eb3a08525142b1cee28","parentId":"fld_ace2c5a94562456d95bf419124291011","modified":1688512195062,"created":1688512195062,"url":"{{ _.base_url }}/verses/{{ _.version }}/{{ _.abbrev }}/random","name":"Get a random verse from a specific book","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195062,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_12e583c774304b8ea149295bf0444ac2","parentId":"fld_ace2c5a94562456d95bf419124291011","modified":1688512195061,"created":1688512195061,"url":"{{ _.base_url }}/verses/{{ _.version }}/random","name":"Get a random verse","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195061,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_b94a5bd5669e4ec5a7ee05f941e53538","parentId":"fld_ace2c5a94562456d95bf419124291011","modified":1688512195060,"created":1688512195060,"url":"{{ _.base_url }}/verses/{{ _.version }}/{{ _.abbrev }}/{{ _.chapter }}/{{ _.number }}","name":"Get a verse from a chapter","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195060,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_a386c64a55994b6884ffef06c06d7baa","parentId":"fld_ace2c5a94562456d95bf419124291011","modified":1688512195059,"created":1688512195059,"url":"{{ _.base_url }}/verses/{{ _.version }}/{{ _.abbrev }}/{{ _.chapter }}","name":"Get all verses and details of a chapter","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195059,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_fdb77dc26be64d78af0a75b879a1d35b","parentId":"fld_e1f008bb359f4484ace7f7cd01b95626","modified":1688512195057,"created":1688512195057,"url":"{{ _.base_url }}/books/{{ _.abbrev }}","name":"Get Book","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195057,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_e1f008bb359f4484ace7f7cd01b95626","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512195050,"created":1688512195050,"name":"Books","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512195050,"_type":"request_group"},{"_id":"req_9bcf822e8a574ca886f2bbc663a94d1a","parentId":"fld_e1f008bb359f4484ace7f7cd01b95626","modified":1688512195056,"created":1688512195056,"url":"{{ _.base_url }}/books","name":"Get Books","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512195056,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_3b3f0b8bcf994f9fae9c7b436bd221d3","parentId":"fld_98ef0b24db834b8ca0e5b2bf4e6a1933","modified":1688512169069,"created":1688512169069,"url":"{{ _.base_url }}/requests/amount/{{ _.range }}","name":"Get number of requisitions for a specific period","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169069,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_98ef0b24db834b8ca0e5b2bf4e6a1933","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169057,"created":1688512169057,"name":"Requests","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512169057,"_type":"request_group"},{"_id":"req_3fca4eb2339b495db0c025a3355e837f","parentId":"fld_98ef0b24db834b8ca0e5b2bf4e6a1933","modified":1688512169068,"created":1688512169068,"url":"{{ _.base_url }}/requests/{{ _.range }}","name":"Get requests for a specific period","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169068,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_e1e1f7a580f0402b9ea285511b1a4de5","parentId":"fld_50328b5bce93497e87fb0630fff2b6ed","modified":1688512169064,"created":1688512169064,"url":"{{ _.base_url }}/versions","name":"Get Bible Versions","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169064,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_50328b5bce93497e87fb0630fff2b6ed","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169056,"created":1688512169056,"name":"Versions","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512169056,"_type":"request_group"},{"_id":"req_1ab411f18fc745aebf6c7eaca743ed62","parentId":"fld_114d45db9cf449f8aecb49b747c8ec47","modified":1688512169067,"created":1688512169067,"url":"{{ _.base_url }}/users/token","name":"Update token","description":"","method":"PUT","body":{"mimeType":"application/json","text":"{\n \"email\": \"user@example.com\",\n \"password\": \"string\"\n}"},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169067,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_114d45db9cf449f8aecb49b747c8ec47","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169056,"created":1688512169056,"name":"Users","description":"The project will always be open source. Authentication is only to identify how many users are using the project and to inform about new updates.","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512169056,"_type":"request_group"},{"_id":"req_061990b2204944378c7d6e2195842229","parentId":"fld_114d45db9cf449f8aecb49b747c8ec47","modified":1688512169067,"created":1688512169067,"url":"{{ _.base_url }}/users/password/{{ _.email }}","name":"Resend user password","description":"","method":"POST","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169067,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_c76a2355b5614fefb66c2dcd7a229d8f","parentId":"fld_114d45db9cf449f8aecb49b747c8ec47","modified":1688512169066,"created":1688512169066,"url":"{{ _.base_url }}/users/stats","name":"Get user statistics","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169066,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_dd9217062915487990d6e7ee0abca756","parentId":"fld_114d45db9cf449f8aecb49b747c8ec47","modified":1688512169065,"created":1688512169065,"url":"{{ _.base_url }}/users","name":"Delete user","description":"","method":"DELETE","body":{"mimeType":"application/json","text":"{\n \"email\": \"user@example.com\",\n \"password\": \"string\"\n}"},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169065,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_5843f3111a7e4fa2aeda60726ef22459","parentId":"fld_114d45db9cf449f8aecb49b747c8ec47","modified":1688512169065,"created":1688512169065,"url":"{{ _.base_url }}/users/{{ _.email }}","name":"Get a user","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169065,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_89c370b1f27e42d5a134fae214c4e4d4","parentId":"fld_114d45db9cf449f8aecb49b747c8ec47","modified":1688512169064,"created":1688512169064,"url":"{{ _.base_url }}/users","name":"Create a new user","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n \"name\": \"string\",\n \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"notifications\": true\n}"},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1688512169064,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_a83a74f3b4254ccc90992e7132d5845b","parentId":"fld_d7c4e962089a4ec1bfe2b599b5de74bd","modified":1688512169058,"created":1688512169058,"url":"{{ _.base_url }}/books/{{ _.abbrev }}","name":"Get Book","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169058,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_d7c4e962089a4ec1bfe2b599b5de74bd","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169055,"created":1688512169055,"name":"Books","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512169055,"_type":"request_group"},{"_id":"req_1ff3aa1964864fbb92a399f927a3b349","parentId":"fld_d7c4e962089a4ec1bfe2b599b5de74bd","modified":1688512169057,"created":1688512169057,"url":"{{ _.base_url }}/books","name":"Get Books","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169057,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_b2a907d12e7d4b6fb054b6b33854ee03","parentId":"fld_186e62d1dd1b428194591c3a36d6328b","modified":1688512169063,"created":1688512169063,"url":"{{ _.base_url }}/verses/search","name":"Search verses by word","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n \"version\": \"string\",\n \"search\": \"string\"\n}"},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169063,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_186e62d1dd1b428194591c3a36d6328b","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169055,"created":1688512169055,"name":"Verses","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1688512169055,"_type":"request_group"},{"_id":"req_3b922722a80847de9c8fe41f7a5e6091","parentId":"fld_186e62d1dd1b428194591c3a36d6328b","modified":1688512169062,"created":1688512169062,"url":"{{ _.base_url }}/verses/{{ _.version }}/{{ _.abbrev }}/random","name":"Get a random verse from a specific book","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169062,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_73ea4c35b758456fbb09fdd93e832df2","parentId":"fld_186e62d1dd1b428194591c3a36d6328b","modified":1688512169059,"created":1688512169059,"url":"{{ _.base_url }}/verses/{{ _.version }}/{{ _.abbrev }}/{{ _.chapter }}/{{ _.number }}","name":"Get a verse from a chapter","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169059,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_709231b82739491ba0e88a567c463f12","parentId":"fld_186e62d1dd1b428194591c3a36d6328b","modified":1688512169059,"created":1688512169059,"url":"{{ _.base_url }}/verses/{{ _.version }}/random","name":"Get a random verse","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169059,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_bbeb2d2f69a34d1f974a646d3c1b18fc","parentId":"fld_186e62d1dd1b428194591c3a36d6328b","modified":1688512169058,"created":1688512169058,"url":"{{ _.base_url }}/verses/{{ _.version }}/{{ _.abbrev }}/{{ _.chapter }}","name":"Get all verses and details of a chapter","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{"type":"bearer","token":"{{ _.bearerToken }}","prefix":""},"metaSortKey":-1688512169058,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"env_96fe0e591b74486a8deca88d8029804b","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169051,"created":1688512169051,"name":"Base environment","data":{"base_url":"{{ _.scheme }}://{{ _.host }}{{ _.base_path }}"},"dataPropertyOrder":null,"color":null,"isPrivate":false,"metaSortKey":1688512169052,"_type":"environment"},{"_id":"jar_06129e33808cf9851d8386201c049fc682991cbe","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512169089,"created":1688512169089,"name":"Default Jar","cookies":[],"_type":"cookie_jar"},{"_id":"spc_1535d69e2c114893be731ce8a1b0b8e3","parentId":"wrk_b3896d546c554b56b1f7fc0bd22144f1","modified":1688512189939,"created":1688512169045,"fileName":"BíbliaDigital | A RESTful API for Bible","contents":"openapi: '3.0.0'\n\ninfo:\n title: ABíbliaDigital | A RESTful API for Bible\n description:\n Do not worry about managing the multiple versions of the Bible\n RESTful Bible API with 7 versions, 4 languages and multiple features to simplify your day to day.\n contact:\n name: Contact us\n url: https://www.abibliadigital.com.br/\n license:\n name: BSD 2-Clause \"Simplified\" License\n url: https://github.com/omarciovsena/abibliadigital/blob/master/LICENSE.md\n version: 0.3.2\n\nservers:\n - url: https://www.abibliadigital.com.br/api\n description: Production server\n\n - url: http://localhost:3000/api\n description: Local server\n\ntags:\n - name: Books\n\n - name: Verses\n\n - name: Versions\n\n - name: Users\n description:\n The project will always be open source. Authentication is only to identify how many users are using the project and to inform about new updates.\n\n - name: Requests\n\ncomponents:\n securitySchemes:\n bearerAuth:\n type: http\n scheme: bearer\n bearerFormat: JWT\n description: >\n Without authentication the limit rate is 20 requests/hour/ip;\n With user token, requests are unlimited (it's free).\n\n To create a new user, see the API endpoint `POST /users` for more details.\n Note The limit rate was created to decrease the effectiveness of the attacks that we have been suffering from since 3/29/2020\n\n schemas:\n Book:\n type: object\n properties:\n abbrev:\n type: object\n properties:\n pt:\n type: string\n en:\n type: string\n author:\n type: string\n chapters:\n type: number\n comment:\n type: string\n group:\n type: string\n name:\n type: string\n testament:\n type: string\n version:\n type: string\n required:\n - abbrev\n - author\n - chapters\n - comment\n - group\n - name\n - testament\n\n Chapter:\n oneOf:\n - type: object\n properties:\n number:\n type: integer\n verses:\n type: integer\n required:\n - number\n - verses\n - type: integer\n\n Verse:\n type: object\n properties:\n book:\n type: object\n properties:\n id:\n type: string\n format: uuid\n abbrev:\n type: object\n properties:\n pt:\n type: string\n en:\n type: string\n required:\n - id\n - abbrev\n chapter:\n \"$ref\": \"#/components/schemas/Chapter\"\n number:\n type: number\n text:\n type: string\n version:\n type: string\n comment:\n type: string\n required:\n - book\n - chapter\n - number\n - text\n - version\n\n User:\n type: object\n properties:\n name:\n type: string\n email:\n type: string\n format: email\n password:\n type: string\n token:\n type: string\n notifications:\n type: boolean\n required:\n - name\n - email\n - password\n - token\n - notifications\n additionalProperties: false\n\n Version:\n type: object\n properties:\n version:\n type: string\n verses:\n type: integer\n required:\n - version\n - verses\n\n SearchResponse:\n type: object\n properties:\n occurrence:\n type: integer\n version:\n type: string\n verses:\n type: array\n items:\n $ref: \"#/components/schemas/Verse\"\n required:\n - occurrence\n - version\n - verses\n\n RateLimitResponse:\n type: object\n properties:\n msg:\n type: string\n example: Too many accounts created from this IP, please try again after an hour or login\n required:\n - msg\n\nsecurity:\n - bearerAuth: []\n\npaths:\n /books:\n get:\n summary: Get Books\n description: Returns a list of 66 bible books\n operationId: getBooks\n tags:\n - Books\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: array\n items:\n $ref: '#/components/schemas/Book'\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /books/{abbrev}:\n get:\n summary: Get Book\n description: Returns details of a bible book\n operationId: getBook\n parameters:\n - in: path\n name: abbrev\n description: The abbreviation of the book\n schema:\n type: string\n required: true\n tags:\n - Books\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Book'\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /verses/{version}/{abbrev}/{chapter}:\n get:\n summary: Get all verses and details of a chapter\n operationId: getChapter\n parameters:\n - name: version\n in: path\n required: true\n description: The version of the Bible (e.g., \"nvi\")\n schema:\n type: string\n - name: abbrev\n in: path\n required: true\n description: The abbreviation of the book (e.g., \"gn\" for Genesis)\n schema:\n type: string\n - name: chapter\n in: path\n required: true\n description: The chapter number\n schema:\n type: integer\n tags:\n - Verses\n responses:\n '200':\n description: Successful response containing the chapter details and verses\n content:\n application/json:\n schema:\n type: object\n properties:\n book:\n $ref: \"#/components/schemas/Book\"\n chapter:\n $ref: \"#/components/schemas/Chapter\"\n verses:\n type: array\n items:\n $ref: \"#/components/schemas/Verse\"\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /verses/{version}/{abbrev}/{chapter}/{number}:\n get:\n summary: Get a verse from a chapter\n operationId: getVerse\n parameters:\n - name: version\n in: path\n required: true\n description: The version of the Bible (e.g., \"nvi\")\n schema:\n type: string\n - name: abbrev\n in: path\n required: true\n description: The abbreviation of the book (e.g., \"gn\" for Genesis)\n schema:\n type: string\n - name: chapter\n in: path\n required: true\n description: The chapter number\n schema:\n type: integer\n - name: number\n in: path\n required: true\n description: The verse number\n schema:\n type: integer\n tags:\n - Verses\n responses:\n '200':\n description: Successful response containing the verse\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/Verse\"\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /verses/{version}/random:\n get:\n summary: Get a random verse\n operationId: getRandomVerse\n parameters:\n - name: version\n in: path\n required: true\n description: The version of the Bible (e.g., \"nvi\")\n schema:\n type: string\n tags:\n - Verses\n responses:\n '200':\n description: Successful response containing the random verse\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/Verse\"\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /verses/{version}/{abbrev}/random:\n get:\n summary: Get a random verse from a specific book\n operationId: getRandomVerseFromBook\n parameters:\n - name: version\n in: path\n required: true\n description: The version of the Bible (e.g., \"nvi\")\n schema:\n type: string\n - name: abbrev\n in: path\n required: true\n description: The abbreviation of the book (e.g., \"gn\" for Genesis)\n schema:\n type: string\n tags:\n - Verses\n responses:\n '200':\n description: Successful response containing the random verse from the specified book\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/Verse\"\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n\n /verses/search:\n post:\n summary: Search verses by word\n operationId: search\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n properties:\n version:\n type: string\n search:\n type: string\n required:\n - version\n - search\n\n tags:\n - Verses\n responses:\n '200':\n description: Successful response containing the search results\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SearchResponse\"\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /versions:\n get:\n summary: Get Bible Versions\n description: Returns all Bible versions and the number of verses in each version.\n operationId: getVersions\n tags:\n - Versions\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: array\n items:\n $ref: '#/components/schemas/Version'\n\n '409':\n description: Rate limit exceeded\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RateLimitResponse\"\n\n /users:\n post:\n security: []\n summary: Create a new user\n operationId: createUser\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n properties:\n name:\n type: string\n email:\n type: string\n format: email\n password:\n type: string\n minLength: 6\n notifications:\n type: boolean\n required:\n - name\n - email\n - password\n - notifications\n tags:\n - Users\n\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n name:\n type: string\n email:\n type: string\n format: email\n token:\n type: string\n notifications:\n type: boolean\n delete:\n summary: Delete user\n operationId: removeUser\n security:\n - bearerAuth: []\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n properties:\n email:\n type: string\n format: email\n password:\n type: string\n minLength: 6\n required:\n - email\n - password\n tags:\n - Users\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n msg:\n type: string\n\n /users/{email}:\n get:\n summary: Get a user\n operationId: getUser\n parameters:\n - name: email\n in: path\n description: User email address\n required: true\n schema:\n type: string\n format: email\n tags:\n - Users\n security:\n - bearerAuth: []\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n name:\n type: string\n email:\n type: string\n format: email\n token:\n type: string\n notifications:\n type: boolean\n lastLogin:\n type: string\n format: date-time\n /users/stats:\n get:\n summary: Get user statistics\n operationId: getUserStats\n security:\n - bearerAuth: []\n tags:\n - Users\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n lastLogin:\n type: string\n format: date-time\n requestsPerMonth:\n type: array\n items:\n type: object\n properties:\n range:\n type: string\n total:\n type: integer\n\n /users/token:\n put:\n summary: Update token\n operationId: updateToken\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n properties:\n email:\n type: string\n format: email\n password:\n type: string\n minLength: 6\n required:\n - email\n - password\n tags:\n - Users\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n name:\n type: string\n email:\n type: string\n format: email\n token:\n type: string\n\n /users/password/{email}:\n post:\n summary: Resend user password\n operationId: resendNewPassword\n parameters:\n - name: email\n in: path\n description: User email address\n required: true\n schema:\n type: string\n format: email\n tags:\n - Users\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n msg:\n type: string\n\n /requests/{range}:\n get:\n summary: Get requests for a specific period\n operationId: getRequests\n parameters:\n - name: range\n in: path\n description: Period range (month, week, day)\n required: true\n schema:\n type: string\n tags:\n - Requests\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: array\n items:\n type: object\n properties:\n url:\n type: string\n date:\n type: string\n format: date-time\n\n /requests/amount/{range}:\n get:\n summary: Get number of requisitions for a specific period\n operationId: getRequestsNumber\n parameters:\n - name: range\n in: path\n description: Period range (month, week, day)\n required: true\n schema:\n type: string\n tags:\n - Requests\n responses:\n '200':\n description: OK\n content:\n application/json:\n schema:\n type: object\n properties:\n total:\n type: integer\n requests:\n type: array\n items:\n type: object\n properties:\n _id:\n type: string\n count:\n type: integer\n","contentType":"yaml","_type":"api_spec"},{"_id":"env_51c18458f1fe43b2ae5a1a18940e7dfb","parentId":"env_96fe0e591b74486a8deca88d8029804b","modified":1688512877817,"created":1688512169053,"name":"abibliadigital.com.br","data":{"scheme":"https","base_path":"/api","host":"www.abibliadigital.com.br","bearerToken":"bearerToken"},"dataPropertyOrder":{"&":["scheme","base_path","host","bearerToken"]},"color":"#1b4796","isPrivate":false,"metaSortKey":1688512169053,"_type":"environment"},{"_id":"env_b8756e7d54bc49b9b56a29bd3be2746f","parentId":"env_96fe0e591b74486a8deca88d8029804b","modified":1688512864169,"created":1688512169054,"name":"development","data":{"scheme":"http","base_path":"/api","host":"localhost:3000","bearerToken":"bearerToken"},"dataPropertyOrder":null,"color":"#67cbbf","isPrivate":false,"metaSortKey":1688512169054,"_type":"environment"}]} \ No newline at end of file diff --git a/docs/openapi.yaml b/docs/openapi.yaml new file mode 100644 index 0000000..28f25c6 --- /dev/null +++ b/docs/openapi.yaml @@ -0,0 +1,733 @@ +openapi: '3.0.0' + +info: + title: ABíbliaDigital | A RESTful API for Bible + description: + Do not worry about managing the multiple versions of the Bible + RESTful Bible API with 7 versions, 4 languages and multiple features to simplify your day to day. + contact: + name: Contact us + url: https://www.abibliadigital.com.br/ + license: + name: BSD 2-Clause "Simplified" License + url: https://github.com/omarciovsena/abibliadigital/blob/master/LICENSE.md + version: 0.3.2 + +servers: + - url: https://www.abibliadigital.com.br/api + description: Production server + + - url: http://localhost:3000/api + description: Local server + +tags: + - name: Books + + - name: Verses + + - name: Versions + + - name: Users + description: + The project will always be open source. Authentication is only to identify how many users are using the project and to inform about new updates. + + - name: Requests + +components: + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT + description: > + Without authentication the limit rate is 20 requests/hour/ip; + With user token, requests are unlimited (it's free). + + To create a new user, see the API endpoint `POST /users` for more details. + Note The limit rate was created to decrease the effectiveness of the attacks that we have been suffering from since 3/29/2020 + + schemas: + Book: + type: object + properties: + abbrev: + type: object + properties: + pt: + type: string + en: + type: string + author: + type: string + chapters: + type: number + comment: + type: string + group: + type: string + name: + type: string + testament: + type: string + version: + type: string + required: + - abbrev + - author + - chapters + - comment + - group + - name + - testament + + Chapter: + oneOf: + - type: object + properties: + number: + type: integer + verses: + type: integer + required: + - number + - verses + - type: integer + + Verse: + type: object + properties: + book: + type: object + properties: + id: + type: string + format: uuid + abbrev: + type: object + properties: + pt: + type: string + en: + type: string + required: + - id + - abbrev + chapter: + "$ref": "#/components/schemas/Chapter" + number: + type: number + text: + type: string + version: + type: string + comment: + type: string + required: + - book + - chapter + - number + - text + - version + + User: + type: object + properties: + name: + type: string + email: + type: string + format: email + password: + type: string + token: + type: string + notifications: + type: boolean + required: + - name + - email + - password + - token + - notifications + additionalProperties: false + + Version: + type: object + properties: + version: + type: string + verses: + type: integer + required: + - version + - verses + + SearchResponse: + type: object + properties: + occurrence: + type: integer + version: + type: string + verses: + type: array + items: + $ref: "#/components/schemas/Verse" + required: + - occurrence + - version + - verses + + RateLimitResponse: + type: object + properties: + msg: + type: string + example: Too many accounts created from this IP, please try again after an hour or login + required: + - msg + +security: + - bearerAuth: [] + +paths: + /books: + get: + summary: Get Books + description: Returns a list of 66 bible books + operationId: getBooks + tags: + - Books + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Book' + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /books/{abbrev}: + get: + summary: Get Book + description: Returns details of a bible book + operationId: getBook + parameters: + - in: path + name: abbrev + description: The abbreviation of the book + schema: + type: string + required: true + tags: + - Books + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Book' + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /verses/{version}/{abbrev}/{chapter}: + get: + summary: Get all verses and details of a chapter + operationId: getChapter + parameters: + - name: version + in: path + required: true + description: The version of the Bible (e.g., "nvi") + schema: + type: string + - name: abbrev + in: path + required: true + description: The abbreviation of the book (e.g., "gn" for Genesis) + schema: + type: string + - name: chapter + in: path + required: true + description: The chapter number + schema: + type: integer + tags: + - Verses + responses: + '200': + description: Successful response containing the chapter details and verses + content: + application/json: + schema: + type: object + properties: + book: + $ref: "#/components/schemas/Book" + chapter: + $ref: "#/components/schemas/Chapter" + verses: + type: array + items: + $ref: "#/components/schemas/Verse" + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /verses/{version}/{abbrev}/{chapter}/{number}: + get: + summary: Get a verse from a chapter + operationId: getVerse + parameters: + - name: version + in: path + required: true + description: The version of the Bible (e.g., "nvi") + schema: + type: string + - name: abbrev + in: path + required: true + description: The abbreviation of the book (e.g., "gn" for Genesis) + schema: + type: string + - name: chapter + in: path + required: true + description: The chapter number + schema: + type: integer + - name: number + in: path + required: true + description: The verse number + schema: + type: integer + tags: + - Verses + responses: + '200': + description: Successful response containing the verse + content: + application/json: + schema: + $ref: "#/components/schemas/Verse" + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /verses/{version}/random: + get: + summary: Get a random verse + operationId: getRandomVerse + parameters: + - name: version + in: path + required: true + description: The version of the Bible (e.g., "nvi") + schema: + type: string + tags: + - Verses + responses: + '200': + description: Successful response containing the random verse + content: + application/json: + schema: + $ref: "#/components/schemas/Verse" + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /verses/{version}/{abbrev}/random: + get: + summary: Get a random verse from a specific book + operationId: getRandomVerseFromBook + parameters: + - name: version + in: path + required: true + description: The version of the Bible (e.g., "nvi") + schema: + type: string + - name: abbrev + in: path + required: true + description: The abbreviation of the book (e.g., "gn" for Genesis) + schema: + type: string + tags: + - Verses + responses: + '200': + description: Successful response containing the random verse from the specified book + content: + application/json: + schema: + $ref: "#/components/schemas/Verse" + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + + /verses/search: + post: + summary: Search verses by word + operationId: search + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + version: + type: string + search: + type: string + required: + - version + - search + + tags: + - Verses + responses: + '200': + description: Successful response containing the search results + content: + application/json: + schema: + $ref: "#/components/schemas/SearchResponse" + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /versions: + get: + summary: Get Bible Versions + description: Returns all Bible versions and the number of verses in each version. + operationId: getVersions + tags: + - Versions + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Version' + + '409': + description: Rate limit exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/RateLimitResponse" + + /users: + post: + security: [] + summary: Create a new user + operationId: createUser + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + email: + type: string + format: email + password: + type: string + minLength: 6 + notifications: + type: boolean + required: + - name + - email + - password + - notifications + tags: + - Users + + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + name: + type: string + email: + type: string + format: email + token: + type: string + notifications: + type: boolean + delete: + summary: Delete user + operationId: removeUser + security: + - bearerAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + format: email + password: + type: string + minLength: 6 + required: + - email + - password + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + msg: + type: string + + /users/{email}: + get: + summary: Get a user + operationId: getUser + parameters: + - name: email + in: path + description: User email address + required: true + schema: + type: string + format: email + tags: + - Users + security: + - bearerAuth: [] + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + name: + type: string + email: + type: string + format: email + token: + type: string + notifications: + type: boolean + lastLogin: + type: string + format: date-time + /users/stats: + get: + summary: Get user statistics + operationId: getUserStats + security: + - bearerAuth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + lastLogin: + type: string + format: date-time + requestsPerMonth: + type: array + items: + type: object + properties: + range: + type: string + total: + type: integer + + /users/token: + put: + summary: Update token + operationId: updateToken + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + format: email + password: + type: string + minLength: 6 + required: + - email + - password + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + name: + type: string + email: + type: string + format: email + token: + type: string + + /users/password/{email}: + post: + summary: Resend user password + operationId: resendNewPassword + parameters: + - name: email + in: path + description: User email address + required: true + schema: + type: string + format: email + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + msg: + type: string + + /requests/{range}: + get: + summary: Get requests for a specific period + operationId: getRequests + parameters: + - name: range + in: path + description: Period range (month, week, day) + required: true + schema: + type: string + tags: + - Requests + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + url: + type: string + date: + type: string + format: date-time + + /requests/amount/{range}: + get: + summary: Get number of requisitions for a specific period + operationId: getRequestsNumber + parameters: + - name: range + in: path + description: Period range (month, week, day) + required: true + schema: + type: string + tags: + - Requests + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + total: + type: integer + requests: + type: array + items: + type: object + properties: + _id: + type: string + count: + type: integer diff --git a/package.json b/package.json index 1c556d7..b20d3ee 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "generate-password": "^1.7.0", "i18n": "^0.8.6", "jest": "^24.9.0", - "jsonwebtoken": "^8.5.1", + "jsonwebtoken": "^9.0.0", "md5": "^2.3.0", "moment": "^2.29.4", "mongoose": "^6.5.1", @@ -63,4 +63,4 @@ "node-mocks-http": "^1.10.1", "nodemon": "^2.0.7" } -} +} \ No newline at end of file diff --git a/public/theme-v2/css/style.css b/public/theme-v2/css/style.css index 0b1611d..ebca537 100644 --- a/public/theme-v2/css/style.css +++ b/public/theme-v2/css/style.css @@ -507,6 +507,30 @@ nav .container { } } +#documentation-links { + margin-top: 16px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + justify-content: center; +} + +#documentation-links img { + margin: 0 10px; + width: 24px; +} + +#documentation-links img { + filter: invert(16%) sepia(7%) saturate(7485%) hue-rotate(175deg) brightness(88%) contrast(90%); +} + +#documentation-links img:hover { + filter: invert(19%) sepia(55%) saturate(2547%) hue-rotate(212deg) brightness(95%) contrast(89%); +} + #about { background: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), color-stop(50%, #fcf8e3), color-stop(50%, #fafafa), to(#fafafa)); background: linear-gradient(180deg, #fcf8e3 0%, #fcf8e3 50%, #fafafa 50%, #fafafa 100%); diff --git a/public/theme-v2/images/ic-insomnia.svg b/public/theme-v2/images/ic-insomnia.svg new file mode 100644 index 0000000..1d6a3ea --- /dev/null +++ b/public/theme-v2/images/ic-insomnia.svg @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/public/theme-v2/images/ic-postman.svg b/public/theme-v2/images/ic-postman.svg new file mode 100644 index 0000000..c1beef0 --- /dev/null +++ b/public/theme-v2/images/ic-postman.svg @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/public/theme-v2/images/ic-swagger.svg b/public/theme-v2/images/ic-swagger.svg new file mode 100644 index 0000000..d7884d7 --- /dev/null +++ b/public/theme-v2/images/ic-swagger.svg @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/views/index.pug b/views/index.pug index b57ad52..b4b0efb 100644 --- a/views/index.pug +++ b/views/index.pug @@ -101,6 +101,10 @@ body p= __('bannerDescription') .col a.btn-primary(href='https://github.com/omarciovsena/abibliadigital/blob/master/DOCUMENTATION.md' target='_blank' title=__('documentationTitle'))= __('bannerButton') + ul#documentation-links + li: a.doc-icon.icon-svg(href='https://insomnia.rest/run/?label=AB%C3%ADbliaDigital%20API&uri=https%3A%2F%2Fraw%2Egithubusercontent%2Ecom%2Fomarciovsena%2Fabibliadigital%2Fmaster%2Fdocs%2Finsomnia.json' target='_blank' title=__('bannerDocInsomniaTitle')): img(src='/theme-v2/images/ic-insomnia.svg' alt=__('bannerDocInsomniaTitle')) + li: a.doc-icon.icon-svg(href='https://www.postman.com/nathabonfim59/workspace/github-contributions/api/c9a09e38-b0ca-41f4-85bb-d7cea69d4866' target='_blank' title=__('bannerDocPostmanTitle')): img(src='/theme-v2/images/ic-postman.svg' alt=__('bannerDocPostmanTitle')) + li: a.doc-icon.icon-svg(href='https://editor.swagger.io/?url=https%3A%2F%2Fraw%2Egithubusercontent%2Ecom%2Fomarciovsena%2Fabibliadigital%2Fmaster%2Fdocs%2Fopenapi.yaml' target='_blank' title=__('bannerDocSwaggerTitle')): img(src='/theme-v2/images/ic-swagger.svg' alt=__('bannerDocSwaggerTitle')) // How To Use section#howToUse .container diff --git a/views/locales/en.json b/views/locales/en.json index 1515b44..526af0d 100644 --- a/views/locales/en.json +++ b/views/locales/en.json @@ -6,6 +6,9 @@ "availabilityDescription": "Servers stable and prepared for high requests loads", "bannerButton": "Documentation", "bannerDescription": "Access our documentation, see how simple it is and start integrating today.", + "bannerDocInsomniaTitle": "Open API documentation in Insomnia", + "bannerDocPostmanTitle": "Open API documentation in Postman", + "bannerDocSwaggerTitle": "Open API documentation in Swagger", "bannerTitle": "Get started now", "buttonContactUs": "Contact us", "buttonStartNow": "Get started now", @@ -67,4 +70,4 @@ "yearly": "Yearly", "bannerDescription1": "bannerDescription1", "bannerDescription2": "bannerDescription2" -} \ No newline at end of file +} diff --git a/views/locales/pt.json b/views/locales/pt.json index c1cc451..7ada437 100644 --- a/views/locales/pt.json +++ b/views/locales/pt.json @@ -6,6 +6,9 @@ "availabilityDescription": "Servidores estáveis e preparados para altas cargas de requisições", "bannerButton": "Documentação", "bannerDescription": "Acesse nossa documentação, veja o quanto é simples e comece hoje a sua integração.", + "bannerDocInsomniaTitle": "Abrir documentação da API no Insomnia", + "bannerDocPostmanTitle": "Abrir documentação da API no Postman", + "bannerDocSwaggerTitle": "Abrir documentação da API no Swagger", "bannerTitle": "Teste agora!", "buttonContactUs": "Fale Conosco", "buttonStartNow": "Comece já", @@ -67,4 +70,4 @@ "yearly": "Anual", "bannerDescription1": "bannerDescription1", "bannerDescription2": "bannerDescription2" -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index d8a8a14..7a5fd59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4580,10 +4580,10 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== +jsonwebtoken@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: jws "^3.2.2" lodash.includes "^4.3.0" @@ -4594,7 +4594,7 @@ jsonwebtoken@^8.5.1: lodash.isstring "^4.0.1" lodash.once "^4.0.0" ms "^2.1.1" - semver "^5.6.0" + semver "^7.5.4" jsprim@^1.2.2: version "1.4.2" @@ -6255,7 +6255,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2: +semver@^7.3.2, semver@^7.5.4: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==