Documentação da API do TabNews
Visão Geral:
- ATENÇÃO: a API passou por mudanças e, portanto, esta documentação não está completa e pode apresentar erros.
Change log
- (10/09/2022) - Formatação alterada e atualizadas as funções da API.
Introdução
Todo TabNews foi construído através de APIs públicas e você pode consumir elas da forma que desejar (respeitando as políticas de uso).
A comunicação é feita através de HTTPS usando GET ou POST. Tanto a solicitação quanto a resposta são formatadas como JSON e o tipo de conteúdo de ambas é application/json.
⚠ Para requisições do tipo POST, parâmetros não inclusos na URL devem ser inseridos como um Content-Type de application/json
.
Base URL
Todas as URLs incluídas nessa documentação exigem a baseUrl
:
https://www.tabnews.com.br/api/v1
Obter conteúdos
Lista de conteúdos da página inicial
GET {{BaseUrl}}/contents?page={pagina}&per_page={porPagina}&strategy={estrategia}
Parâmetro | Descrição |
---|---|
{pagina} | O número da página que você deseja acessar. |
{porPagina} | O número de conteúdos que devem ser retornados por página. |
{estrategia} | Ordem de classificação dos conteúdos, pode ser definida em new, old e relevant. |
Lista de conteúdos de um determinado usuário
GET {{BaseUrl}}/{user}?page={pagina}&per_page={porPagina}&strategy={estrategia}
Parâmetro | Descrição |
---|---|
{username} | O username do usuário que você quer acessar os conteúdos. |
{pagina} | O número da página que você deseja acessar. |
{porPagina} | O número de conteúdos que devem ser retornados por página. |
{estrategia} | Ordem de classificação dos conteúdos, pode ser definida em new, old e relevant. |
Obter conteúdo e dados de uma publicação
GET {{BaseUrl}}/contents/{user}/{slug}
Parâmetro | Descrição |
---|---|
{user} | Usuário que você deseja obter o post. |
{slug} | Slug do post que você deseja obter. |
Obter comentários de uma publicação
GET {{BaseUrl}}/contents/{user}/{slug}/children
Parâmetros | |
---|---|
{user} | Usuário dono do postque você deseja obter os comentários. |
{slug} | Slug do post que você deseja obter os comentários. |
Obter thumbnail de uma publicação
GET {{BaseUrl}}/contents/{user}/{slug}/thumbnail
Parâmetros | |
---|---|
{user} | Usuário dono do post que você deseja obter a thumbnail. |
{slug} | Slug do post que você deseja obter a thumbnail. |
Status
Para obter quantos usuários foram criados (por dia):
GET {{BaseUrl}}/analytics/users-created
Para obter quantas publicações foram feitas (por dia):
GET {{BaseUrl}}/analytics/root-content-published
Para obter quantos usuários foram criados (por dia):
GET {{BaseUrl}}/analytics/child-content-published
Autenticação
Criar usuário
POST {{BaseUrl}}/users
Corpo da requisição:
Parâmetro | Tipo | Descrição |
---|---|---|
username | string | O username do usuário que você quer criar. |
string | Um email válido que será usado para o login e outras opções. | |
password | string | A senha do usuário que você quer criar. |
⚠ Para confirmar a conta, o usuário deve acessar o link de verificação que foi enviado para o email. ⚠
Logar usuário
Depois que o email for verificado, a requisição deve ser feita para este endpoint:
POST {{BaseUrl}}/sessions
Corpo da requisição:
Parâmetro | Tipo | Descrição |
---|---|---|
string | O email no qual o usuário foi criado. | |
password | string | A senha que foi definida na criação do usuário. |
Exemplo de resposta
{
"id": "6fbeca8f-13f1-43e3-b3**-************",
"token": "e5fba39f8c4ec21cfd50d94ec8f659ed3258e301afe51240786d9ecddc8d35aeecae391ffe73e38d8c**************",
"expires_at": "yyyy-mm-ddT14:34:08.664Z",
"created_at": "yyyy-mm-ddT14:34:08.664Z",
"updated_at": "yyyy-mm-ddT14:34:08.664Z"
}
Exemplo de resposta com erro
{
"name": "UnauthorizedError",
"message": "Dados não conferem.",
"action": "Verifique se os dados enviados estão corretos.",
"status_code": 401,
"error_id": "4a61276a-8dfc-41cc-a563-7fa4975*****",
"request_id": "fe12a267-aa3c-4fad-8375-2fe92d6*****",
"error_location_code": "CONTROLLER:SESSIONS:POST_HANDLER:DATA_MISMATCH"
}
Recuperar senha
POST {{BaseUrl}}/recovery
Corpo da requisição:
Parâmetro | Tipo | Descrição |
---|---|---|
username | string | O username do usuário que você deseja recuperar a senha. |
string | O email do usuário que você deseja recuperar a senha. |
⚠ Apenas 1 dos valores devem ser passados na requisição. O usuário receberá uma link no email para a recuperação da senha.
Editar perfil
Para alteração de qualquer informação, a requisição deve ser feita para o seguinte endpoint, onde {username}
é o username atual do usuário que você deseja alterar as informações:
POST {{BaseUrl}}/users/{username}
Corpo da requisição:
Todos os parâmetros são opcionais, ou seja, você só precisa enviar o parâmetro da informação que você deseja mudar.
Parâmetros | Tipo | Descrição |
---|---|---|
username | string | Para alterar o nome de usuário. |
string | Para alterar o email do usuário (ele precisará ser verifificar da mesma forma que foi verificado na criação do usuário). | |
password | string | Para alterar a senha do usuário. |
notifications | boolean | Para alterar se o usuário deseja receber notificações via email, ou não. |
Publicar conteúdos
{{BaseUrl}}/contents
Cabeçalho da requisição:
Parâmetro | Valor | Descrição |
---|---|---|
Set-Cookie | session_id={seuSessionID} | {seuSessionID} é o session_id que foi obtido na resposta ao fazer login. |
Corpo da requisição:
Parâmetro | Tipo | Descrição |
---|---|---|
title | string | O título da publicação. *Obrigatório |
body | string | O corpo da sua publicação, com formatação em Markdown ou HTML. *Obrigatório |
status | string | Para o conteúdo realmente ser publicado, o valor deve ser published . *Obrigatório |
source_url | string | O link que vai ficar como fonte de seu post, no formato https://example.com . Caso não seja definido, a fonte ficará em branco. |
slug | string | O slug do seu post. Caso não seja definido, o slug será gerado automaticamente com base no título da publicação. |
Bom, em breve devem ser adicionadas aqui as funções de alterar senha, alterar username, fazer comentários, editar posts, além da função de publicar conteúdos (que eu testei de várias formas e deu diversos erros, de permissão, de PATCH ou de sintaxe mesmo).
edit: Todas essas funções já foram adicionadas aqui.
Uma pergunta ao @filipedeschamps, onde essa documentação deve ser adicionada? No GitHub?
Quaisquer sugestões ou alterações vocês podem comentar e serão muito bem vindas.