Guias & API

Documentação

Aprenda a usar o Editor de Mapas, o Animator e a API.

Referência da API

Exporte dados do projeto e integre com seu motor de jogo ou pipeline de build.

Autenticação

Todas as requisições da API requerem um token Bearer no cabeçalho Authorization:

Authorization: Bearer <token>

Crie um token em Configurações > Chaves de API. As chaves são de escopo organizacional - uma chave concede acesso a todos os projetos naquela organização.

Respostas de erro
  • 401 - token ausente, inválido, revogado ou expirado
  • 403 - token pertence a uma organização diferente
  • 404 - ID do projeto não existe

URL Base

Todos os endpoints são prefixados com:

https://longlost.no/api/v1/share/:project_id

O project_id é um UUID encontrado na URL ou página de configurações do projeto.

Endpoints

GET

/info

Retorna metadados do projeto.

// Response { "id": "uuid", "name": "My Project", "description": "A cool game level", "type": "editor" | "animator", "updated_at": "2026-01-25T12:00:00Z" }
GET

/hash

Retorna um hash de conteúdo para detecção de alterações. Compare com seu valor armazenado para verificar modificações.

// Response { "hash": "a1b2c3d4e5f6...", "updated_at": "2026-01-25T12:00:00Z" }
GET

/changes

Abre um fluxo de Server-Sent Events (SSE) para notificações de alterações em tempo real.

Parâmetro Tipo Descrição
once string Se "true", envia o evento inicial e fecha.

Tipos de evento:

  • ready - enviado imediatamente com o hash atual
  • changed - enviado quando o hash do projeto difere
  • deleted - enviado quando o projeto é removido
GET

/download

Baixa o projeto completo como um arquivo ZIP.

Parâmetro Tipo Descrição
hash string Opcional. Retorna 304 se o hash do projeto corresponder.
GET

/manifest

Retorna um manifesto por arquivo com hashes de conteúdo e tamanhos para sincronização incremental.

// Response { "project_hash": "abc123...", "files": { "path/to/file.json": { "hash": "def456...", "size": 1234 } } }
POST

/sync

Envie seus hashes de arquivos locais e receba apenas o que mudou, foi adicionado ou excluído.

// Request body { "files": { "path/to/file.json": "your_local_hash" } }
// Response { "project_hash": "abc123...", "changed": [ {"path": "maps/level1.json", "hash": "...", "content": "<base64>"} ], "added": [ {"path": "maps/level2.json", "hash": "...", "content": "<base64>"} ], "deleted": ["maps/old_level.json"], "images": ["resources/tilesets/forest.png"] }
  • changed / added - inclui caminho, novo hash e conteúdo codificado em base64
  • deleted - array de caminhos que não existem mais
  • images - recursos binários que mudaram; busque via /resource
GET

/resource

Baixa um recurso binário individual, como uma imagem de tileset.

Parâmetro Tipo Descrição
path string Obrigatório. Caminho do recurso, deve estar em resources/.

Suporta If-None-Match para cache ETag. Retorna 304 se inalterado.

Fluxo de trabalho típico

1

Faça polling de /hash periodicamente, ou conecte-se ao SSE /changes para notificações em tempo real.

2

Quando uma alteração for detectada, chame /manifest para obter a lista de arquivos atual.

3

Chame /sync com seus hashes locais para receber apenas o que mudou.

4

Busque imagens novas ou atualizadas via /resource.

Alternativa mais simples: Chame /download para uma exportação ZIP completa sempre que uma alteração for detectada - sem necessidade de manifesto ou sincronização.