Skip to Content

Consultas

Todos os endpoints de listagem da API suportam um conjunto comum de parâmetros de consulta para paginação, ordenação e filtragem.

Parâmetros comuns

ParâmetroTipoDescrição
pagenumberO número da página a obter (predefinição: 1).
limitnumberO número de itens a obter por página (predefinição: 10).
sortstringO campo pelo qual ordenar. Usa o prefixo - para ordem descendente (ex.: -createdAt).
whereobjectObjeto de consulta para filtrar resultados usando operadores.
depthnumberAté onde popular as relações em vídeos e categorias. Omite depth para receberes objetos de categoria e de tag. Define depth=0 para receberes ids. workspace permanece um id em qualquer dos casos. Os pedidos de lista de Tags não usam depth.

Resposta paginada

Todos os endpoints de listagem devolvem uma resposta paginada com a seguinte estrutura:

{ "docs": [...], // Array of objects "totalDocs": number, // Total number of documents "limit": number, // Items per page "totalPages": number, // Total number of pages "page": number, // Current page number "pagingCounter": number, // Index of first item on current page "hasPrevPage": boolean, // Whether a previous page exists "hasNextPage": boolean, // Whether a next page exists "prevPage": number | null, "nextPage": number | null }

Ordenação

Usa o parâmetro sort para ordenar os resultados por um campo específico.

Direção da ordenação

  • Ascendente (predefinição): ?sort=createdAt
  • Descendente: Prefixo com - → ?sort=-createdAt

Campos ordenáveis

Podes ordenar por qualquer campo de nível superior do objeto. Exemplos comuns:

CampoDescrição
createdAtOrdenar por data de criação
updatedAtOrdenar por data da última modificação
titleOrdenar alfabeticamente por título

Exemplos

Mais recentes primeiro:

?sort=-createdAt

Mais antigos primeiro:

?sort=createdAt

Alfabeticamente por título:

?sort=title

Operadores where

O parâmetro where aceita um objeto de consulta que te permite filtrar resultados usando vários operadores:

OperadorDescrição
equalsO valor tem de ser exatamente igual.
not_equalsDevolve todos os documentos em que o valor não é igual.
greater_thanPara campos numéricos ou baseados em data.
greater_than_equalPara campos numéricos ou baseados em data.
less_thanPara campos numéricos ou baseados em data.
less_than_equalPara campos numéricos ou baseados em data.
likeA string tem de estar presente (sem distinção entre maiúsculas e minúsculas). Se for uma sequência de palavras, todas têm de estar presentes, em qualquer ordem.
containsTem de conter o valor introduzido, sem distinção entre maiúsculas e minúsculas.
inO valor tem de estar na lista de valores delimitada por vírgulas.
not_inO valor NÃO pode estar na lista de valores delimitada por vírgulas.
existsDevolve apenas documentos onde o valor existe (true) ou não existe (false).

Lógica And / Or

Podes combinar várias consultas usando lógica and / or. Estas podem ser aninhadas tão profundamente quanto necessário para criar consultas complexas.

Exemplos de consultas

Filtrar por valor exato:

?where[status][equals]=COMPLETE

Filtrar por valor que contenha uma string:

?where[title][contains]=tutorial

Filtrar por data (maior que):

?where[createdAt][greater_than]=2024-01-01

Filtrar onde um campo existe:

?where[description][exists]=true

Usando lógica OR:

?where[or][0][status][equals]=COMPLETE&where[or][1][status][equals]=PROGRESSING

Usando lógica AND:

?where[and][0][status][equals]=COMPLETE&where[and][1][visibility][equals]=private

Usar o pacote qs

Consultas complexas podem tornar-se difíceis de escrever como query strings. Recomendamos usar o pacote qs-esm para converter objetos JSON em query strings:

import { stringify } from 'qs-esm'; const query = stringify({ where: { status: { equals: 'COMPLETE' }, and: [ { visibility: { equals: 'private' } }, { createdAt: { greater_than: '2024-01-01' } } ] }, limit: 20, page: 1 }, { addQueryPrefix: true }); // Result: ?where[status][equals]=COMPLETE&where[and][0][visibility][equals]=private&where[and][1][createdAt][greater_than]=2024-01-01&limit=20&page=1

Esta abordagem torna muito mais fácil construir e manter consultas complexas de forma programática.