Services/Projects
Um guia simples de uso da Project G API
A URL base para enviar todas as requisições à API é https://projectg2.vercel.app/api/
. É necessário o uso de HTTPS para todas as requisições à API.
A API do Projeto G segue convenções RESTful sempre que possível, com a maioria das operações realizadas por meio de requisições GET
, POST
, PATCH
e DELETE
em recursos de página e banco de dados. Os corpos de requisição e resposta são codificados em JSON.
Convenções JSON
"id"
.camelCase
.2020-08-12T02:12:33.231Z
), enquanto datas incluirão apenas a data (2020-08-12
).Todos recursos e código fonte então disponíveis no repositório WEB
Destacando se:
Pasta API
Endpoints que retornam listas de objetos suportam solicitações de paginação baseadas no seu scroll ou posição na página. Por padrão, é retornado 3 itens por chamada de API. Se o número de itens em uma resposta de um endpoint de suporte exceder o padrão, então uma integração pode usar a paginação para solicitar um conjunto específico de resultados e/ou limitar o número de itens retornados.
SUPPORTED ENDPOINTS
Método HTTP | Endpoint |
---|---|
GET | services/posts/?page |
GET | services/projects/:page/ |
Caso um usuário ultrapasse o limite de requisições será retornado o código de erro: "rate_limited"
(HTTP status 429). O limite atual é de em média 100 requisições por minuto.
<aside> ❗ A taxa de requisições por minuto e sua implementação provavelmente será modificada no futuro.
</aside>
Respostas HTTP.
HTTP Status | Description |
---|---|
200 | Successfully processed request. |
Tabela de erros com seus com seus respectivos status HTTP, códigos e dados retornados
HTTP Status |
code |
data |
---|---|---|
400 | invalid_json | O corpo da requisições não pode ser transformado em JSON |
500 | Internal_server_error | Erro interno de servidor |
400 | invalid_request | Requisição inválida, ou falta de parâmetros obrigatórios. |
401 | unauthorized | O token de validação está incorreto, ou o usuário não tá autorização de acesso. |
429 | rate_limited | Limite de requisições por minuto ultrapassado |
Parâmetros:
(opcional)
: ID do autor. Se fornecido, busca posts apenas do autor especificado
.(opcional)
: Número da página para paginação. Cada página contém 3 posts.GET /api/services/posts/
GET /api/services/posts/?id=authorId
GET /api/services/posts/?id=authorId&page=2
Um array de posts, cada um contendo as seguintes propriedades:
Exemplo em modelo prisma:
id String @id @default(cuid())
content String?
images String[]
published Boolean @default(false)
tags String[]
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
likes Like[] @relation("LikedPost")
pins Pin[] @relation("PinnedPost")
author User? @relation("PostAuthor", fields: [authorId], references: [id], onDelete: Cascade)
authorId String?
contributor User[] @relation("PostContributor")
comments Comment[] @relation("CommentedPost")
Exemplo resposta em JSON:
[
{
"id": "clpn00ii40001civh5f1j9ykg",
"content": "testye2" ,
"images": ["posts/imagem1.png", "posts/image2.jpg"]
"likes": [
...
],
...
},
{
"id": "I'm a cuid",
...
},
]
DELETE /api/services/posts
Parâmetros:
(obrigatório)
: ID do post a ser excluído.DELETE /api/services/posts/?id=postId
POST /api/services/posts
Parâmetros:
(obrigatório)
: ID do autor do post.POST /api/services/posts/?id=authorId
GET /api/services/users
Parâmetros:
GET /api/services/users
GET /api/services/users/only/:userId
Em caso de GET sem parâmetro especial (Only), é retornado uma array de usuários. Ao contrário do Uso do Only, que retorna apenas um usuário de a cordo com o Id.
Alguns dos parâmetros JSON retornados são privados, ou seja, só são retornados quando necessários.
Exemplo em modelo prisma:
id String @id @default(cuid())
name String
password String?
image String?
followers Follows[] @relation("Follower")
following Follows[] @relation("Following")
likes Like[] @relation("LikedBy")
pins Pin[] @relation("PinnedBy")
title String?
description String?
location String?
graduations String[]
linkedinUrl String?
CREA String? @unique
siteUrl String?
contactPhone Int?
profilePic String?
email String @unique
emailVerified DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
position Positions @default(DefaultUser)
accounts Account[]
sessions Session[]
authoredPosts Post[] @relation("PostAuthor")
contributedPosts Post[] @relation("PostContributor")
authoredProjects Project[] @relation("ProjectAuthor")
contributedProjects Project[] @relation("ProjectContributor")
authoredComments Comment[] @relation("CommentAuthor")
Exemplo resposta em JSON:
[
{
"id": "clpn00ii40001civh5f1j9ykg" ,
"name": "GuizinhoLindo" ,
"password": "SawddsSW231455123SGWESAf2" (Private) ,
...
},
{
"id": "I'm a cuid",
...
},
]
PATCH /api/services/users
Parâmetros:
(obrigatório)
: ID do usuário a ser atualizado.São Passados através do body
(Obrigatório)
.PATCH /api/services/users/:userId
GET /api/services/projects
Parâmetros:
(obrigatório em alguns casos)
.GET /api/services/projects/:userId
GET /api/services/projects/:pageId
GET /api/services/users/only/:Id