{"id":50509831,"url":"https://github.com/robsonmt/json-server-capstone-v2","last_synced_at":"2026-06-02T19:02:30.931Z","repository":{"id":103777056,"uuid":"452019989","full_name":"RobsonMT/Json-server-capstone-v2","owner":"RobsonMT","description":null,"archived":false,"fork":false,"pushed_at":"2022-02-03T00:59:12.000Z","size":111,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-27T21:27:48.559Z","etag":null,"topics":["json-api","json-server"],"latest_commit_sha":null,"homepage":"https://json-server-capstone.herokuapp.com/animes","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobsonMT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-25T19:49:10.000Z","updated_at":"2025-11-11T02:16:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"e69ca344-2951-49fe-beea-5a30109cc299","html_url":"https://github.com/RobsonMT/Json-server-capstone-v2","commit_stats":null,"previous_names":["robsonmt/json-server-capstone-v2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RobsonMT/Json-server-capstone-v2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobsonMT%2FJson-server-capstone-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobsonMT%2FJson-server-capstone-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobsonMT%2FJson-server-capstone-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobsonMT%2FJson-server-capstone-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobsonMT","download_url":"https://codeload.github.com/RobsonMT/Json-server-capstone-v2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobsonMT%2FJson-server-capstone-v2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33833277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json-api","json-server"],"created_at":"2026-06-02T19:02:29.991Z","updated_at":"2026-06-02T19:02:30.922Z","avatar_url":"https://github.com/RobsonMT.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003ccenter\u003e[Json-server-capstone](https://json-server-capstone.herokuapp.com/)\u003c/center\u003e\n\n## Endpoints\n\n- [/users](#1)\n- [/animes](#2)\n- [/mylist](#3)\n- [/comments](#4)\n- [/avatars](#5)\n\n## \u003ccenter id=\"1\"\u003e Cadastro \u003c/center\u003e\n\n`POST /register`\n`POST /signup`\n`POST /users`\n\nQualquer um desses 3 endpoints irá cadastrar um novo usuário.\nOs campos obrigatórios são os de email email e password.\n\n`POST /signup - FORMATO DA REQUISIÇÃO`\n\n```json\n{\n  \"name\": \"jhondoe\",\n  \"email\": \"jhondoe@mail.com\",\n  \"password\": \"123456\"\n}\n```\n\n`POST /signup - FORMATO DA RESPOSTA - 200 Created`\n\n```json\n{\n  \"accessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InJvYmVydEBnbWFpbC5jb20iLCJpYXQiOjE2NDIwMzgyMTcsImV4cCI6MTY0MjA0MTgxNywic3ViIjoiMSJ9.lJR--iEy4tPaSP31MPAnnOWoKK3aeaJTTkzLWnCkiYg\",\n  \"user\": {\n    \"email\": \"jhondoe@mail.com\",\n    \"name\": \"jhondoe\",\n    \"id\": 1\n  }\n}\n```\n\n### Possiveis erros \u003c/br\u003e\n\nCaso esteja tentando adicionar um novo usuário com um email que já esteja cadastrado.\n\n`POST /signup - FORMATO DA RESPOSTA - 400 Bad Request`\n\n```json\n{\n  \"name\": \"JhonDoe\",\n  \"email\": \"robson@mail.com\",\n  \"password\": \"123456\"\n}\n```\n\n`Retorno:`\n\n```json\n\"Email already exists\"\n```\n\n## \u003ccenter \u003e Login \u003c/center\u003e\n\n`POST /login`\n`POST /signin`\n\nQualquer um desses 2 endpoints pode ser usado para realizar login.\n\n`POST /signin - FORMATO DA REQUISIÇÃO`\n\n```json\n{\n  \"email\": \"robson@mail.com\",\n  \"password\": \"123456\"\n}\n```\n\n`POST /signin - FORMATO DA RESPOSTA - 200 OK`\n\n```json\n{\n  \"accessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InJvYmVydEBnbWFpbC5jb20iLCJpYXQiOjE2NDIwMzgwNDEsImV4cCI6MTY0MjA0MTY0MSwic3ViIjoiMSJ9.hEyFlcAYVivNsX4OB-bK7yBW-abLzoBfeeVCI4FD1Yg\",\n  \"user\": {\n    \"email\": \"robson@mail.com\",\n    \"name\": \"Robson\",\n    \"id\": 1\n  }\n}\n```\n\n### Possíveis erros\n\nCaso email ou senha digitados estejam incorretos.\n\n`POST /signin - FORMATO DA REQUISIÇÃO`\n\n```json\n{\n  \"email\": \"johndoe@mail.com\",\n  \"password\": \"000404\"\n}\n```\n\n`POST /signin - FORMATO DA RESPOSTA - 400 Bad Request`\n\nCaso email incorreto\n\n```json\n\"Cannot find user\"\n```\n\nCaso password incorreto\n\n```json\n\"Incorrect password\"\n```\n\n## \u003ccenter \u003e Atualizar dados do usuário \u003c/center\u003e\n\nE possível atualizar qualquer dado do usuário sendo necessário passar o número do id do usuário no caminho da requisição. Esta rota necessita de autenticação ,todas as rotas que necessitam de autenticação e necessário passar o accessToken no header da requisição.\n\u003c/br\u003e`Exemplo:`\n\n{\n\"headers\": {\n\"Authorization\": `Bearer: ${accessToken}`\n}\n}\n\n`PATCH /users/1 - FORMATO DA REQUISIÇÃO`\n\n```json\n{\n  \"name\": \"Robson\",\n  \"email\": \"robson@mail.com\",\n  \"password\": \"654321\"\n}\n```\n\n`PATCH /users/1 - FORMATO DA RESPOSTA - 200 OK`\n\n```json\n{\n  \"email\": \"robson@mail.com\",\n  \"password\": \"$2a$10$3svpjhnOoDOPpc4fnPYNkuDRIJbGkCPXLxNmne0bqemFy.fErAZUu\",\n  \"name\": \"Robson\",\n  \"id\": 1\n}\n```\n\n### Possíveis erros\n\n\u003e Caso id não pertença ao usuário. \u003c/br\u003e`401 Unauthorized`\n\n```json\n\"Cannot read properties of undefined (reading 'id')\"\n```\n\n\u003e Caso id não tenha sido passado na requisição. \u003c/br\u003e `403 Forbidden`\n\n```json\n\"Private resource access: entity must have a reference to the owner id\"\n```\n\n\u003e Caso acessToken não tenha sido passado na requisição. \u003c/br\u003e `401 Unauthorized`\n\n```json\n\"Missing token\"\n```\n\n## \u003ccenter id=\"2\"\u003e Animes \u003c/center\u003e\n\nLista todos os animes cadastrados, sendo 56 animes no momento. Todos os usuários tem acesso a está rota, porém somente usuários logados podem comentar e avaliar os animes.\n\n`GET /animes - FORMATO DA RESPOSTA - 200 OK`\u003c/br\u003e\n\n```json\n[\n  {\n    \"id\": 1,\n    \"title\": \"Naruto: Shippuuden\",\n    \"category\": [\"Ação\", \"Angústia\", \"Comédia\", \"Artes marciais\"],\n    \"rate\": [],\n    \"banner_url\": \"https://media.kitsu.io/anime/cover_images/1555/original.jpg\",\n    \"image_url\": \"https://media.kitsu.io/anime/poster_images/1555/large.jpg\",\n    \"original\": \"Naruto: Shippuden\",\n    \"status\": \"Concluído\",\n    \"launch_date\": \"2007\",\n    \"studio\": \"Pierrot, Studio Pierrot\",\n    \"synopsis\": \"Já se passaram dois anos e meio desde que Naruto Uzumaki deixou Konohagakure, a Vila Oculta da Folha, para um treinamento intenso após os eventos que alimentaram seu desejo de ser mais forte. Agora a Akatsuki, a misteriosa organização de ninjas desonestos de elite, está se aproximando de seu grande plano que pode ameaçar a segurança de todo o mundo shinobi. Embora Naruto seja mais velho e eventos sinistros surjam no horizonte, ele mudou pouco em personalidade - ainda indisciplinado e infantil - embora agora esteja muito mais confiante e possua uma determinação ainda maior para proteger seus amigos e sua casa. Aconteça o que acontecer, Naruto seguirá lutando pelo que é importante para ele, mesmo às custas de seu próprio corpo, na continuação da saga sobre o menino que deseja se tornar Hokage. (Fonte: MAL Rewrite).\"\n  },\n  {\n    \"id\": 2,\n    \"title\": \"One Piece\",\n    \"category\": [\"Ação\", \"Crime\", \"Comédia\", \"Pirata\"],\n    \"rate\": [],\n    \"banner_url\": \"https://media.kitsu.io/anime/12/cover_image/21ecb556255bd46b95aea4779d19789f.jpg\",\n    \"image_url\": \"https://media.kitsu.io/anime/poster_images/12/large.jpg\",\n    \"original\": \"One Piece\",\n    \"status\": \"Em exibição\",\n    \"launch_date\": \"1999\",\n    \"studio\": \"Toei Animation\",\n    \"synopsis\": \"Gol D. Roger era conhecido como o 'Rei dos Piratas', o ser mais forte e mais infame que navegou na Grand Line. A captura e morte de Roger pelo Governo Mundial trouxe uma mudança em todo o mundo. Suas últimas palavras antes de sua morte revelaram a existência do maior tesouro do mundo, One Piece. Foi essa revelação que trouxe a Grande Era dos Piratas, homens que sonhavam em encontrar One Piece - que promete uma quantidade ilimitada de riqueza e fama - e possivelmente o auge da glória e o título de Rei dos Piratas. Entra Monkey D. Luffy, um garoto de 17 anos que desafia sua definição padrão de pirata. Em vez da persona popular de um pirata perverso, endurecido e desdentado saqueando aldeias por diversão, a razão de Luffy ser um pirata é de pura admiração: o pensamento de uma aventura emocionante que o leva a pessoas intrigantes e, finalmente, ao tesouro prometido. Seguindo os passos de seu herói de infância, Luffy e sua tripulação viajam pela Grand Line, vivenciando aventuras loucas, desvendando mistérios sombrios e lutando contra inimigos fortes, tudo para alcançar a mais cobiçada de todas as fortunas – One Piece.\"\n  }\n]\n```\n\n## \u003ccenter id=\"3\"\u003e Adicionando animes a lista \u003c/center\u003e\n\nPara adicionar um anime a lista e necessário passar o corpo do anime selecionado, adicionando a propriedade \"urserId\" com o id do usuário.\n\n`POST /mylist - FORMATO DA RESPOSTA - 201 Created`\u003c/br\u003e\n\n```json\n{\n  \"id\": 1,\n  \"title\": \"Naruto: Shippuuden\",\n  \"category\": [\"Ação\", \"Angústia\", \"Comédia\", \"Artes marciais\"],\n  \"rate\": [],\n  \"banner_url\": \"https://media.kitsu.io/anime/cover_images/1555/original.jpg\",\n  \"image_url\": \"https://media.kitsu.io/anime/poster_images/1555/large.jpg\",\n  \"original\": \"Naruto: Shippuden\",\n  \"status\": \"Concluído\",\n  \"launch_date\": \"2007\",\n  \"studio\": \"Pierrot, Studio Pierrot\",\n  \"synopsis\": \"Já se passaram dois anos e meio desde que Naruto Uzumaki deixou Konohagakure, a Vila Oculta da Folha, para um treinamento intenso após os eventos que alimentaram seu desejo de ser mais forte. Agora a Akatsuki, a misteriosa organização de ninjas desonestos de elite, está se aproximando de seu grande plano que pode ameaçar a segurança de todo o mundo shinobi. Embora Naruto seja mais velho e eventos sinistros surjam no horizonte, ele mudou pouco em personalidade - ainda indisciplinado e infantil - embora agora esteja muito mais confiante e possua uma determinação ainda maior para proteger seus amigos e sua casa. Aconteça o que acontecer, Naruto seguirá lutando pelo que é importante para ele, mesmo às custas de seu próprio corpo, na continuação da saga sobre o menino que deseja se tornar Hokage.\",\n  \"userId\": 1\n}\n```\n\n## \u003ccenter \u003e Listando meus animes \u003c/center\u003e\n\nPara listar os seus animes adicionados e necessário passar o userId no corpo da requisição.\nEx: users/:userId/mylist\n\n`GET users/1/mylist - FORMATO DA RESPOSTA - 200 OK`\u003c/br\u003e\n\n```json\n{\n  \"id\": 1,\n  \"title\": \"Naruto: Shippuuden\",\n  \"category\": [\"Ação\", \"Angústia\", \"Comédia\", \"Artes marciais\"],\n  \"rate\": [],\n  \"banner_url\": \"https://media.kitsu.io/anime/cover_images/1555/original.jpg\",\n  \"image_url\": \"https://media.kitsu.io/anime/poster_images/1555/large.jpg\",\n  \"original\": \"Naruto: Shippuden\",\n  \"status\": \"Concluído\",\n  \"launch_date\": \"2007\",\n  \"studio\": \"Pierrot, Studio Pierrot\",\n  \"synopsis\": \"Já se passaram dois anos e meio desde que Naruto Uzumaki deixou Konohagakure, a Vila Oculta da Folha, para um treinamento intenso após os eventos que alimentaram seu desejo de ser mais forte. Agora a Akatsuki, a misteriosa organização de ninjas desonestos de elite, está se aproximando de seu grande plano que pode ameaçar a segurança de todo o mundo shinobi. Embora Naruto seja mais velho e eventos sinistros surjam no horizonte, ele mudou pouco em personalidade - ainda indisciplinado e infantil - embora agora esteja muito mais confiante e possua uma determinação ainda maior para proteger seus amigos e sua casa. Aconteça o que acontecer, Naruto seguirá lutando pelo que é importante para ele, mesmo às custas de seu próprio corpo, na continuação da saga sobre o menino que deseja se tornar Hokage.\",\n  \"userId\": 1\n}\n```\n\n## \u003ccenter \u003e Removendo animes da lista \u003c/center\u003e\n\nPara remover animes da lista é necessário passar id do item selecionado no caminho da requisição.\n\n`DELETE /mylist/1 - FORMATO DA RESPOSTA - 200 OK`\u003c/br\u003e\n\n```json\n{}\n```\n\n## \u003ccenter id=\"4\"\u003e Adicionando comentários \u003c/center\u003e\n\nPara poder adicionar um comentário e necessário o usuário estar logado. Contendo o 'userId' ,'animeId': contendo o id do anime selecionado.\n\n`POST /comments - FORMATO DA RESPOSTA - 201 Created`\u003c/br\u003e\n\n```json\n{\n  \"userId\": 1,\n  \"animeId\": 55,\n  \"comment\": \"Esse ainda não assisti\"\n}\n```\n\n## \u003ccenter \u003e Atualizar comentário \u003c/center\u003e\n\nPara atualizar um comentário e necessário passar o id do comentário no caminho da requisição\n\n`PATCH/comments/1 - FORMATO DA REQUISIÇÃO - 200 OK`\u003c/br\u003e\n\n```json\n{\n  \"comment\": \"Assisti ele ontem, muito bom!!\"\n}\n```\n\n## \u003ccenter \u003e Remover comentário \u003c/center\u003e\n\nPara remover um comentário e necessário passar o id do comentário selecionado no caminho da requisição.\n\n`DELETE/comments/1 - FORMATO DA REQUISIÇÃO - 200 OK`\u003c/br\u003e\n\n```json\n{\n  \"comment\": \"Assisti ele ontem, muito bom!!\"\n}\n```\n\n## \u003ccenter \u003e Listar comentários \u003c/center\u003e\n\nPara listar os comentários.\n`GET/comments - FORMATO DA REQUISIÇÃO - 200 OK`\u003c/br\u003e\n\n```json\n{\n  \"userId\": 1,\n  \"animeId\": 55,\n  \"comment\": \"Esse ainda não assisti\"\n}\n```\n\n## \u003ccenter \u003e Listar um comentário em especifíco \u003c/center\u003e\n\nPara listar um comentários de um anime em especifíco e necessário passar o id do anime no qual esteja procurando no caminho da requisição.\n\n`GET/comments?animeId=55 - FORMATO DA REQUISIÇÃO - 200 OK`\u003c/br\u003e\n\n```json\n{\n  \"userId\": 1,\n  \"animeId\": 55,\n  \"comment\": \"Esse ainda não assisti\"\n}\n```\n\n## \u003ccenter id=\"5\"\u003e Avatars \u003c/center\u003e\n\nPara listar os avatares padrões de usuário.\n\n`GET/avatars - FORMATO DA REQUISIÇÃO - 200 OK`\u003c/br\u003e\n\n```json\n[\n  \"https://icon-library.com/images/anime-icon/anime-icon-9.jpg\",\n  \"http://pm1.narvii.com/6861/44017694789ca7409a0a9a30a8c0be4a7e2bd9f8r1-800-713v2_00.jpg\",\n  \"https://icon-library.com/images/cool-anime-icon/cool-anime-icon-9.jpg\",\n  \"https://wallpapercave.com/uwp/uwp1426727.jpeg\"\n]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobsonmt%2Fjson-server-capstone-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobsonmt%2Fjson-server-capstone-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobsonmt%2Fjson-server-capstone-v2/lists"}