Bem-vindo(a) à documentação da API Papacapim. Este documento será seu guia para entender os endpoints da API, ajudando-o a construir um font-end para integração com nosso back-end. Esta documentação está dividida da seguinte maneira:
Em cada tópico da documentação será exibido um exemplo do corpo da requisição e da resposta. As chaves JSON em cada exemplo são auto-explicativas.
O que é a API Papacapim?
É uma API RESTful bem simples que eu criei para que meus alunos pudessem praticar Flutter na disciplina Desenvolvimento Mobile (IFBA). Minha intenção era dar a eles uma API suficiente para que pudessem fazer requisições e produzir assim um front-end, servindo de objeto de avaliação da disciplina.
Baixe o app Android (APK) oficial para ajudar nos testes ou então acesse a versão web.
A API Papacapim é aberta e qualquer um pode acessá-la para praticar a criação de front-ends com consumo de APIs através da URL https://api.papacapim.just.pro.br.
Todos os endpoints, com exceção do endpoint para criação de um novo usuário, requerem autenticação. Desta forma, apenas usuários autenticados poderão acessar a API e todos os objetos que forem criados serão associados ao usuário autenticado.
A autenticação no Papacapim funciona através de um token de sessão. Este token deverá ser enviado a cada requisição no cabeçalho HTTP através da chave x-session-token. Para obter um token basta criar uma nova sessão usando seu usuário e senha (caso não tenha usuário, crie antes usando o endpoint Criar usuário). Para encerrar a sessão (uma espécie de log-out), basta deletar a sessão previamente criada.
Objeto JSON contendo login e senha.
{
"login": "frankson",
"password": "123mudar"
}
Objeto JSON da sessão criada. Armazene o valor de token para usar nas próximas requisições.
{
"user_login": "frankson",
"token": "12835982-bc61-4f48-9561-ec1471969c6e",
"ip": "::1",
}
Sem conteúdo.
Nos endpoints a seguir trataremos da manipulação de usuários da plataforma. A criação de novos usuários é livre e pode ser feita por qualquer um (este é o único endpoint que não precisa de autenticação). Após criado um usuário você poderá autenticá-lo e acessar os outros endpoints.
Um objeto JSON contendo o login, nome, senha e confirmação de senha do novo usuário.
{
"user": {
"login": "frankson",
"name": "Frankson Barreto",
"password": "123mudar",
"password_confirmation": "123mudar"
}
}
O corpo da resposta conterá um JSON do usuário criado.
{
"login": "frankson",
"name": "Frankson Barreto",
"created_at": "2024-08-03T12:04:12.460Z",
}
Um objeto JSON contendo o login, nome, senha e confirmação de senha do novo usuário. Neste caso os campos são todos opcionais. Por exemplo: se deseja mudar apenas o login, basta enviar login; se deseja apenas alterar a senha, basta enviar password e password_confirmation. É possível enviar tudo para alterar todos os dados caso queira.
Por razões de segurança, todas as sessões ativas serão excluídas ao alterar a senha e será preciso criar uma nova sessão para continuar acessando a API.
A imagem de perfil do usuário deve ser enviada na codificação Base64 usando o parâmetro image_data no objeto JSON. Caso não seja enviado a imagem de perfil permanecerá inalterada. O tamanho da imagem é limitado a 5 MB.
{
"user": {
"login": "franks",
"name": "Frankson Batista",
"password": "senhanova",
"password_confirmation": "senhanova",
"image_data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgK..."
}
}
O corpo da resposta conterá um JSON com os novos dados do usuário.
{
"login": "franks",
"name": "Frankson Batista",
}
O corpo da resposta conterá um JSON com a lista de usuários.
[
{
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp",
"followers_number": 15482986,
"following_number": 1,
"you_follow": false,
"follows_you": false
},
{
"login": "teste",
"name": "Testador",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/c2182b38-ac70-457d-ba3e-da68dbb3a2f1.webp",
"followers_number": 0,
"following_number": 4920,
"you_follow": false,
"follows_you": false
},
{
"login": "frankson",
"name": "Frankson Barreto",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/2d203ae9-53df-41ed-bcfd-f1054b37524b.webp",
"followers_number": 120,
"following_number": 230,
"you_follow": true,
"follows_you": true
}
]
O corpo da resposta conterá um JSON com os dados do usuário.
{
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp",
"followers_number": 15482986,
"following_number": 1,
"you_follow": false,
"follows_you": false
}
Sem conteúdo.
Os endpoints de seguidores permitirão que um usuário siga alguém ou liste os seguidores de alguém.
O corpo da resposta conterá um JSON com os dados da relação de seguidor criada.
{
"follower_login": "frankson",
}
O corpo da resposta conterá um JSON com a lista de seguidores deste usuário.
[
{
"follower": {
"login": "teste",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
},
{
"follower": {
"login": "franks",
"name": "Frankson Barreto",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/2d203ae9-53df-41ed-bcfd-f1054b37524b.webp"
}
}
]
Sem conteúdo.
Nos endpoints a seguir trataremos da manipulação de postagens, possibilitando a criação de novas postagens, respostas a postagens de outros usuários e exclusão de postagens.
Um objeto JSON contendo a postagem.
{
"post": {
"message": "Acabei de entrar no Papacapim!"
}
}
O corpo da resposta conterá um JSON com a postagem criada.
{
"id": 7,
"post_id": null,
"message": "Acabei de entrar no Papacapim!",
"created_at": "2024-08-03T13:34:18.103Z",
}
Um objeto JSON contendo a postagem.
{
"reply": {
"message": "Também entrei no Papacapim essa semana. É muito massa!",
}
}
O corpo da resposta conterá um JSON com a postagem criada. Na resposta o campo post_id refere-se ao ID do post que está sendo respondido.
{
"id": 8,
"post_id": 7,
"message": "Também entrei no Papacapim essa semana. É muito massa!",
"created_at": "2024-08-03T13:36:56.977Z",
"likes_number": 0,
"replies_number": 0,
"you_liked": false,
"user": {
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
}
O corpo da resposta conterá um JSON com a lista de postagens.
[
{
"id": 2,
"post_id": null,
"message": "Vou passar a usar esta rede.",
"created_at": "2024-08-01T14:30:33.000Z",
"likes_number": 3,
"replies_number": 1,
"you_liked": false,
"user": {
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
},
{
"id": 6,
"post_id": 2,
"message": "Esta rede é muito massa!",
"created_at": "2024-08-01T14:31:05.000Z",
"likes_number": 0,
"replies_number": 0,
"you_liked": true,
"user": {
"login": "gustavo",
"name": "Gustavo Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/28fe8656-d6c7-4b25-b00e-42c60af6c8bf.webp"
}
},
{
"id": 7,
"post_id": null,
"message": "Acabei de entrar no Papacapim!",
"created_at": "2024-08-03T13:34:18.103Z",
"likes_number": 1,
"replies_number": 1,
"you_liked": true,
"user": {
"login": "frankson",
"name": "Frankson Barreto",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/2d203ae9-53df-41ed-bcfd-f1054b37524b.webp"
}
},
{
"id": 8,
"post_id": 7,
"message": "Também entrei no Papacapim essa semana. É muito massa!",
"created_at": "2024-08-03T13:36:56.977Z",
"likes_number": 3,
"replies_number": 0,
"you_liked": false,
"user": {
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
}
]
O corpo da resposta conterá um JSON com a lista de postagens.
[
{
"id": 2,
"post_id": null,
"message": "Vou passar a usar esta rede.",
"created_at": "2024-08-01T14:30:33.000Z",
"likes_number": 0,
"replies_number": 0,
"you_liked": false,
"user": {
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
},
{
"id": 8,
"post_id": 7,
"message": "Também entrei no Papacapim essa semana. É muito massa!",
"created_at": "2024-08-03T13:36:56.977Z",
"likes_number": 3,
"replies_number": 0,
"you_liked": true,
"user": {
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
}
]
O corpo da resposta conterá um JSON com a lista de respostas.
[
{
"id": 8,
"post_id": 7,
"message": "Também entrei no Papacapim essa semana. É muito massa!",
"created_at": "2024-08-03T13:36:56.977Z",
"likes_number": 3,
"replies_number": 0,
"you_liked": true,
"user": {
"login": "just",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
}
]
Sem conteúdo.
Nos endpoints a seguir trataremos da manipulação de curtidas em uma postagem. Eles permitirão curtir uma postagem, descurtir e visualizar curtidas.
O corpo da resposta conterá um JSON com dados da curtida.
{
"user_login": "frankson",
}
O corpo da resposta conterá um JSON com a lista de curtidas.
[
{
"user": {
"login": "teste",
"name": "J. P. Just",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/fa87ebb3-ef93-48d6-b437-2c4bdbbd0686.webp"
}
},
{
"user": {
"login": "franks",
"name": "Frankson Barreto",
"profile_image": "https://api.papacapim.just.pro.br/image/profile/2d203ae9-53df-41ed-bcfd-f1054b37524b.webp"
}
}
]
Sem conteúdo.