Pessoas
O pouco que se lê sobre outra conta.
Conexões, nível e verificação. Nada aqui diz mais do que a própria página de perfil já mostra a quem abrir.
/api/ v1/ profiles/ {username}/ socialRelações, conversa do perfil e membros da organização. A carteira do visitante vem apenas com sua própria sessão ou chave.
/api/ v1/ profiles/ {username}/ listsPrévias de listas e contagens visíveis. Filtros: visibility, mode, sort, limit (1 a 48), offset, before, q, folder. folder é o public_id de uma pasta, ou NONE para as que não estão em nenhuma, que é uma resposta diferente de não perguntar. sort é recent (o padrão), oldest, name, likes ou size: size põe primeiro as listas com mais jogos, contados como o count de cada prévia (numa tierlist, os jogos ranqueados que o quadro ainda mostra), e desempata pela atualização mais recente. offset pagina qualquer ordem. before deixa só as listas atualizadas antes daquele instante, e só serve de cursor para recent.
/api/ v1/ profiles/ {username}/ lists/ foldersPastas para navegar nas listas de um perfil. O autor recebe todas; visitantes recebem pastas e contagens das listas que podem ver, incluindo listas para seguidores quando seguem o autor. Pastas vazias ou exclusivamente privadas não são expostas. unfiled conta as listas visíveis sem pasta. Leitura pública, sujeita à visibilidade do perfil; editar pastas exige ser o autor.
/api/ v1/ activityAtividade visível. Filtros: profile, profiles, game, kinds, q, rating, spoilers, order, before, limit (1 a 180), offset (uma categoria). Uma captura traz imageUrl, a imagem inteira, e thumbnailUrl com thumbnailWidth e thumbnailHeight, uma miniatura WebP de até 640 pixels de largura, ou null quando ainda não tem uma.
/api/ v1/ profiles/ {username}/ reviewsAvaliações e sessões visíveis. Mesmos filtros de atividade, autor fixado pelo nome.
/api/ v1/ profiles/ {username}/ screenshotsGaleria paginada (48 por página), contagens, jogos e interações. Cada captura traz contains_spoilers e sensitive (verdadeiro quando o autor ou a verificação automática a marcou: mostre atrás de um aviso), e thumbnail_url com thumbnail_width e thumbnail_height, uma miniatura WebP de até 640 pixels de largura para a grade, ou null numa captura que ainda não tem uma, e então use image_url. Quem lê a própria galeria recebe também a visibility de cada captura. total, safe_count e spoiler_count contam a galeria inteira, e matching o que os filtros acham; uma captura removida pela moderação não entra em nenhum. games são todos os jogos da galeria, não só os da página, em ordem de nome, cada um com igdb_id, game_slug, name (o nome no catálogo, ou null quando o catálogo já não conhece o jogo) e count, quantas capturas dele quem lê pode ver. Filtros: page, q (na descrição, no nome do jogo ou no seu slug, com espaços ou hífens), spoilers (all/safe/spoilers), sort (new/old), game (um game_slug). games=1 acrescenta catalog, a entrada do catálogo de cada jogo da página.
/api/ v1/ discovery/ peopleAmigos jogando e pessoas com gostos próximos, com níveis.
/api/ v1/ search/ companiesEmpresas do catálogo. q, role: publisher ou developer, status=active, sort: relevance, catalog, name, oldest ou newest; page: 1 a 100. Pública.
/api/ v1/ search/ peoplePessoas visíveis, níveis e relações com o solicitante. q, verified=1, sort: relevance, newest ou name; page: 1 a 100, 24 por página. Uma conta suspensa fica de fora, inclusive do total, para todos menos a equipe e ela mesma.
/api/ v1/ search/ countsQuantos resultados cada aba da busca tem para q (jogos, avaliações, listas, tierlists, premiações, pessoas, empresas), contados pelos mesmos critérios de cada aba e limitados a cap (1000). Sem q, o total visível. Cache de 60 segundos.
/api/ v1/ profiles/ {username}Perfil publico e nome atual, incluindo aliases.
/api/ v1/ profiles/ {username}/ summaryContagens visíveis e relação com o visitante. viewer_follows diz se quem lê segue o perfil, e follows_viewer se o perfil segue quem lê (falso sem sessão e no próprio perfil). played, playing, backlog e wishlist contam as prateleiras da biblioteca como a página da biblioteca as filtra, dentro do que quem lê pode ver dela: played é o status COMPLETED, a prateleira Jogados; playing e backlog são as marcações; wishlist é a marcação ou o status WISHLIST. Um jogo rejogado conta em played e em playing.
Exemplo
{
"data": {
"library": 42, "played": 18, "playing": 2, "backlog": 9, "wishlist": 7,
"lists": 3, "reviews": 12, "diary": 30, "journeys": 20,
"screenshots": 15, "screenshot_games": 6, "screenshot_spoilers": 1,
"followers": 10, "following": 8,
"viewer_follows": true, "follows_viewer": false
}
}/api/ v1/ profiles/ {username}/ layoutO layout com que o perfil é desenhado: o publicado pelo dono no Profile Studio, ou o padrão. Nunca o rascunho, nem para o próprio dono. customized diz se veio de um layout publicado. Um perfil que o leitor não pode ver por inteiro responde com o padrão, como um perfil sem layout. media resolve, pelo id, só as imagens que o documento publicado cita (url, width, height, animated); uma imagem enviada para o rascunho não aparece até ser publicada.
Exemplo
{
"data": {
"layout": { "schema": 2, "page": { ... }, "sections": [ ... ] },
"customized": true,
"media": {
"k3Jd8Qp2Lm": {
"url": "https://media.uloggd.com/layout/.../....avif",
"width": 1600, "height": 900, "animated": false
}
}
}
}/api/ v1/ profiles/ {username}/ libraryA biblioteca de qualquer pessoa, pelo nome, com a sua chave: devolve o que essa pessoa mostra para você (tudo numa biblioteca pública, nada numa privada, e uma só para seguidores só se você segue). profile traz o nome atual, útil quando o pedido usou um nome antigo. has_more indica a próxima página.
Parâmetros
| Campo | Tipo | Observações |
|---|---|---|
page | integer | De 1 a 1000. |
limit | integer | 1 a 1000, padrão 100. |
status | string | Só um status: COMPLETED, PLAYING, ON_HOLD, DROPPED, BACKLOG ou WISHLIST. |
playing, backlog, wishlist, liked | boolean | true para só os jogos com essa marca. Combinam entre si. |
sort | string | updated (padrão, o mais recente primeiro) ou rating (a nota mais alta primeiro). |
games | integer | 1 para trazer nome, capa e slug de cada jogo em games, na mesma resposta. |
Exemplo
curl "https://uloggd.com/api/v1/profiles/ada/library?playing=true&games=1" \
-H "Authorization: Bearer ulg_live_..."/api/ v1/ profiles/ {username}/ statsTudo que a pessoa já jogou, somado: totais, ano a ano, dias da semana, jogos com mais tempo, plataformas das cópias e a distribuição das notas. Tudo contado no banco, e só o que o leitor pode ver entra na conta. taste traz os ids visíveis com os minutos de cada um, até mil, porque gênero, estúdio e publicadora não estão no banco: quem quiser essas contas pergunta ao catálogo uma vez com esses ids.
/api/ v1/ profiles/ {username}/ journeysAs jornadas visíveis da pessoa, mais recentes primeiro, com os jogos do catálogo junto, no formato de /api/v1/games. Uma jornada é uma passagem por um jogo: estado, datas, dificuldade, até onde foi e a cópia em que foi jogada. A regra de visibilidade é a mesma de sempre: uma jornada é tão visível quanto o que há dentro dela, e sempre visível para quem a escreveu, então um estranho vê as que têm algo público e os totais dessa parte pública.
Parâmetros
| Campo | Tipo | Observações |
|---|---|---|
page | integer | 1 a 200. |
limit | integer | 1 a 48, 24 por padrão. |
/api/ v1/ profiles/ {username}/ year/ {year}O ano de alguém, de 2000 até o ano atual, com o que a pessoa que lê pode ver: sessions, reviews, library, lists, screenshots, journeys e totals. library traz as linhas da biblioteca que se moveram no ano (terminadas, começadas, adicionadas ou alteradas), cada uma com added e played. played diz se é um jogo jogado naquele ano: terminado ou começado no ano, adicionado no ano já num estado jogado (PLAYING, COMPLETED, DROPPED, ON_HOLD), ou ainda marcado como jogando e alterado pela última vez no ano. Pôr na lista de desejos ou no backlog, dar outra nota ou trocar a capa move a linha, mas não é jogar: conte os jogos do ano pelas sessões e pelas linhas com played.
/api/ v1/ profiles/ {username}/ mineralsSaldo publico de minerais e nivel, sem o historico de transferencias.
/api/ v1/ profiles/ {username}/ connectionsQuem segue alguém, ou quem essa pessoa segue. Paginado por created_at e não por deslocamento: a lista está sendo rolada enquanto contas seguem e deixam de seguir, e um deslocamento pularia ou repetiria uma linha toda vez que as de cima se mexessem. O cursor é o created_at do último item devolvido.
Parâmetros
| Campo | Tipo | Observações |
|---|---|---|
tab | string | followers ou following. O padrão é followers. |
before | string | O created_at do último item da página anterior. |
limit | integer | De 1 a 50. O padrão é 20. |
q | string | Filtra por nome de usuário ou nome de exibição. |
/api/ v1/ profiles/ {username}/ verificationQuem respondeu pela verificação de uma conta, e quando. Sem escopo: o selo já está no perfil para quem quiser ver, e isto só diz o que ele significa. Uma conta que nunca foi verificada responde null, e não uma recusa: "não" é uma resposta aqui, não um segredo. Aceita o username ou o id, porque um é o que tem quem lê um perfil e o outro é o que tem quem já carregou a linha.
/api/ v1/ profiles/ levelsO nível de várias contas de uma vez. Uma página desenha muitos cartões querendo a mesma coisa sobre pessoas diferentes, e perguntar por cartão é como uma lista de vinte vira vinte requisições.
Parâmetros
| Campo | Tipo | Observações |
|---|---|---|
idsobrigatório | string | De 1 a 100 ids de conta, separados por vírgula. |
Perfil, resumo, layout, biblioteca, ano, minerais, conexões e níveis podem ser lidos sem sessão. As policies do banco decidem quais linhas aparecem. Uma chave ainda precisa do escopo indicado; uma chave inválida retorna 401 mesmo em leitura pública. A consulta de perfil aceita o nome atual ou um alias dos últimos 30 dias e devolve o nome atual. Saldos de minerais não incluem transferências.
A busca de pessoas deixa de fora as contas suspensas, para todos menos a equipe e a própria conta, a mesma regra que esconde o que elas publicaram.