- Descrição
- Documentação da API
- Variávies de ambiente
- Rodar localmente
GeekBook é um gerenciador de manga, anime, séries e novels.
- Crie uma conta e acesse-a
- Registre uma obra e altere seu último capítulo/episódio visto
- Crie um ranking top 10 de suas obras cadastradas
- Compartilhe sua coleção e classificação por meio de um link
POST /signup| Params | Type | Description |
|---|---|---|
email |
string |
Required, email format |
nickname |
string |
Required, trim, max caractere(16) |
avatar |
string |
Required, uri, allow(null) |
password |
string |
Required, min(3) |
confirmPassword |
string |
Required, same as password |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
409 |
Conflito de email ou nickname existentes |
POST /signin| Params | Type | Description |
|---|---|---|
email |
string |
Required, email format |
password |
string |
Required, min(3) |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Email ou senha incorretos |
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjY1OTcxMTg1LCJleHAiOjE2Njg1NjMxODV9.2_7HCz4GjAE5RzmTQhFVhSAjqLBRkX51pRJ-3BCarRQ",
"nickname": "pacheco",
"avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}POST /signin/github| Params | Type | Description |
|---|---|---|
code |
string |
Required |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Código inválido ou incorreto |
409 |
Conflito com o nickname |
Em caso de conflito é também mandado um token com as informações do usuário para poder terminar seu cadastro na rota de cadastro com o github
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjY1OTcxMTg1LCJleHAiOjE2Njg1NjMxODV9.2_7HCz4GjAE5RzmTQhFVhSAjqLBRkX51pRJ-3BCarRQ",
"nickname": "pacheco",
"avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}Caso o login com o github de errado é necessário fazer o cadastro do nickname
Caso de erro do login:
- username do github já esta em uso.
- nesse caso é solicitado ao usuário cadastrado um nickname único
POST /signup/oauth| Params | Type | Description |
|---|---|---|
nickname |
string |
Required, trim, max(16) |
| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
409 |
Conflito com o nickname |
426 |
Token desatualizado |
498 |
Token expirado |
Em caso de conflito é também mandado um token com as informações do usuário.
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjY1OTcxMTg1LCJleHAiOjE2Njg1NjMxODV9.2_7HCz4GjAE5RzmTQhFVhSAjqLBRkX51pRJ-3BCarRQ",
"nickname": "pacheco",
"avatar": "https://uploads.jovemnerd.com.br/wp-content/uploads/2021/08/confira-o-elenco-da-serie-live-action-de-avatar-a-lenda-de-aang.jpg"
}GET /categories[
{
"id": 1,
"name": "Mangá"
},
{
"id": 2,
"name": "Anime"
},
{
"id": 5,
"name": "Novel"
},
{
"id": 6,
"name": "Série"
}
]GET /collections/:categoryId| Params | Type | Description |
|---|---|---|
categoryId |
number |
required, greater than 0 |
[
{
"id": 15,
"name": "One Piece",
"categoryId": 1,
"poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
"synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
"createdAt": "2022-09-30T23:39:26.746Z"
},
{
"id": 16,
"name": "One Punch-Man",
"categoryId": 1,
"poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
"synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
"createdAt": "2022-10-05T13:22:03.721Z"
}
]GET /status[
{
"id": 1,
"name": "Ativo"
},
{
"id": 2,
"name": "Completo"
}
]POST /user-collections| Params | Type | Description |
|---|---|---|
categoryId |
number |
Required, greater than 0 |
name |
string |
Required, trim |
synopsis |
string |
Required, allow(null) |
poster |
string |
Required, uri, allow(null) |
lastSeen |
number |
Required, greater than -1 |
statusId |
number |
Required, greater than 0 |
publicValue |
boolean |
Required |
| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
404 |
categoryId ou statusId não encontrado |
426 |
Token desatualizado |
498 |
Token expirado |
GET /user-collectionsSe o statusId for passado, a lista retornada será filtrada pelo statusId
Ex: /user-collections?statusId=1
| Params | Type | Description |
|---|---|---|
statusId |
number |
greater than 0 |
| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
426 |
Token desatualizado |
498 |
Token expirado |
[
{
"id": 62,
"lastSeen": 1070,
"status": {
"id": 1,
"name": "Ativo"
},
"collection": {
"id": 15,
"name": "One Piece",
"poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
"synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
"category": {
"id": 1,
"name": "Mangá",
"createdAt": "2022-09-30T22:29:07.695Z"
}
}
},
{
"id": 66,
"lastSeen": 8,
"status": {
"id": 2,
"name": "Completo"
},
"collection": {
"id": 17,
"name": "O Senhor dos Anéis: Os Anéis de Poder 1ª Temporada",
"poster": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ9a7cngBSAOKyqTdaBgbdSrYWceR4w9CqJJOojtaH532M-_8uF",
"synopsis": "Antes da jornada de Frodo pela Terra-Média, a Segunda Era foi palco de diversas lendas heróicas. O drama épico que se passa milhares de anos antes de A Sociedade do Anel, tem foco em um momento da história em que grandes poderes foram forjados, reinos ascenderam e também ruíram, ao mesmo tempo em que heróis foram testados e tiveram a esperança quase aniquilada pelo grande vilão do universo de Senhor dos Anéis. A série começa em um momento de paz, quando o elenco de novos e antigos personagens precisam enfrentar o ressurgimento do mal, vindo das profundezas mais escuras das Montanhas Sombrias. Os reinos e personagens irão esculpir legados que viverão por muito tempo depois que eles se forem.",
"category": {
"id": 6,
"name": "Série",
"createdAt": "2022-09-30T22:29:07.695Z"
}
}
},
{
"id": 67,
"lastSeen": 120,
"status": {
"id": 1,
"name": "Ativo"
},
"collection": {
"id": 16,
"name": "One Punch-Man",
"poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
"synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
"category": {
"id": 1,
"name": "Mangá",
"createdAt": "2022-09-30T22:29:07.695Z"
}
}
}
]PATCH /user-collections/last-seen| Params | Type | Description |
|---|---|---|
collectionId |
number |
Required, greater than 0 |
lastSeen |
number |
greater than -1 |
increment |
number |
valid(-1, 1) |
Deve se enviar o lastSeen ou o increment. Não é possivel mandar os dois juntos
| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
404 |
collectionId não encontrado |
426 |
Token desatualizado |
498 |
Token expirado |
PATCH /user-collections/status| Params | Type | Description |
|---|---|---|
id |
number |
Required, greater than 0 |
statusId |
number |
Required, greater than 0 |
id: user-collection id
Enviar o token (Bearer token)| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
404 |
id ou statusId não encontrado |
426 |
Token desatualizado |
498 |
Token expirado |
PATCH /user-collections/public| Params | Type | Description |
|---|---|---|
id |
number |
Required, greater than 0 |
publicValue |
boolean |
Required |
id: user-collection id
Enviar o token (Bearer token)| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
404 |
id não encontrado |
426 |
Token desatualizado |
498 |
Token expirado |
DELETE /user-collections/:id| Params | Type | Description |
|---|---|---|
id |
number |
Required, greater than 0 |
id: user-collection id
Enviar o token (Bearer token)| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
404 |
id não encontrado |
426 |
Token desatualizado |
498 |
Token expirado |
POST /rankings| Params | Type | Description |
|---|---|---|
userCollectionId |
number |
Required, greater than 0 |
position |
number |
Required, min(1), max(10) |
| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Request in wrong format |
401 |
Invalid token |
404 |
userCollectionId not found |
409 |
The work is already ranked |
426 |
Outdated token |
498 |
Expired token |
DELETE /rankings/:id| Params | Type | Description |
|---|---|---|
id |
number |
Required, greater than 0 |
id: ranking id
Enviar o token (Bearer token)| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Request in wrong format |
401 |
Invalid token |
404 |
id not found |
426 |
Outdated token |
498 |
Expired token |
PATCH /rankings| Params | Type | Description |
|---|---|---|
id |
number |
Required, greater than 0 |
userCollectionId |
number |
Required, greater than 0 |
id: ranking id
Send the token (Bearer token)| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
404 |
id ou userCollectionId não encontrado |
409 |
tentar atualizar o ranking por uma obra já classificada |
426 |
Token desatualizado |
498 |
Token expirado |
GET /rankings| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
426 |
Token desatualizado |
498 |
Token expirado |
[
{
"rankingId": null,
"position": 1,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": 54,
"position": 2,
"userCollectionId": 67,
"name": "One Punch-Man",
"poster": "https://img-host.filestatic3.xyz/mangas_files/one-punch-man/image_one-punch-man_full.webp",
"synopsis": "A história segue o dia-a-dia de um herói normal que está infeliz por ser forte o bastante para derrotar todos os seus oponentes com apenas um soco, já que isso não lhe traz mais a sensação de adrenalina ao enfrentar um inimigo poderoso.",
"category": "Mangá",
"status": "Ativo",
"lastSeen": 120
},
{
"rankingId": 52,
"position": 3,
"userCollectionId": 62,
"name": "One Piece",
"poster": "https://img-host.filestatic3.xyz/mangas_files/one-piece-br/image_one-piece-br_full.webp",
"synopsis": "One Piece começa quando Gol D. Roger, o Rei Dos Piratas que possuiu tudo nesse mundo, antes de ser executado, diz que escondeu o seu tesouro em algum lugar da Grand Line, um oceano extremamente perigoso. Desde então muitos piratas se aventuram pela Grand Line para tentar encontrar o tesouro chamado One Piece. Um deles é Monkey D. Luffy, o garoto que, acidentalmente, comeu uma das Akuma No Mi, a Gomu Gomu No Mi (Fruta da Borracha), e agora ele pode esticar seu corpo como se fosse uma borracha. A jornada dele começa atrás de companheiros e um barco, que ele vai conseguindo pouco a pouco, pois tem um objetivo: Se tornar o Rei Dos Piratas.",
"category": "Mangá",
"status": "Ativo",
"lastSeen": 1070
},
{
"rankingId": null,
"position": 4,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": null,
"position": 5,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": null,
"position": 6,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": null,
"position": 7,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": null,
"position": 8,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": null,
"position": 9,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
},
{
"rankingId": null,
"position": 10,
"userCollectionId": null,
"name": null,
"poster": null,
"synopsis": null,
"category": null,
"status": null,
"lastSeen": null
}
]GET /rankings/user-collections| Params | Type | Description |
|---|---|---|
Authorization |
string |
required, Starting with Bearer |
| Status code | Cause |
|---|---|
400 |
Requisição no formato incorreto |
401 |
Token inválido |
426 |
Token desatualizado |
498 |
Token expirado |
[
{
"userCollectionId": 66,
"name": "O Senhor dos Anéis: Os Anéis de Poder 1ª Temporada",
"poster": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ9a7cngBSAOKyqTdaBgbdSrYWceR4w9CqJJOojtaH532M-_8uF",
"synopsis": "Antes da jornada de Frodo pela Terra-Média, a Segunda Era foi palco de diversas lendas heróicas. O drama épico que se passa milhares de anos antes de A Sociedade do Anel, tem foco em um momento da história em que grandes poderes foram forjados, reinos ascenderam e também ruíram, ao mesmo tempo em que heróis foram testados e tiveram a esperança quase aniquilada pelo grande vilão do universo de Senhor dos Anéis. A série começa em um momento de paz, quando o elenco de novos e antigos personagens precisam enfrentar o ressurgimento do mal, vindo das profundezas mais escuras das Montanhas Sombrias. Os reinos e personagens irão esculpir legados que viverão por muito tempo depois que eles se forem.",
"category": "Série",
"status": "Completo",
"lastSeen": 8
}
]