- Início
- Developers
API pública do Lavandeira Living Apartments.
Consulte os apartamentos em JSON e submeta pedidos de informação sem autenticação. Especificação OpenAPI 3.1, limites de pedidos anunciados em cabeçalhos, erros em JSON e uma versão Markdown de cada página para agentes.
Recursos
- /openapi.json — especificação OpenAPI 3.1 (também em /api/openapi.json). Versão da API: 1.2.0.
- /api — índice JSON com os endpoints.
- /llms.txt e /llms-full.txt — índice e conteúdo integral em Markdown para agentes (formato llmstxt.org).
- /index.md, /apartamentos.md, … — qualquer página com o sufixo
.md, ou o mesmo URL comAccept: text/markdown. - /sitemap.xml · /robots.txt
Endpoints
| Método | Caminho | operationId | Descrição |
|---|---|---|---|
| GET | /api | apiIndex | Índice: versão, ligações, endpoints e pricing (preços de lançamento por duração e categorias) |
| GET | /api/moradas | listPlaces | As duas moradas (Rua Chã 78-82 e Rua dos Caldeireiros 180) com unidades, telefone, check-in e check-out |
| GET | /api/apartamentos | listApartments | Os doze apartamentos com category e preço por mês; filtros building (rua-cha, travessa), typology (T0, T1) e category (standard, superior, premium) |
| GET | /api/apartamentos/{slug} | getApartment | Um apartamento, ex.: apartamento-c |
| POST | /api/pedidos | createRequest | Submeter um pedido de informações, disponibilidade ou contacto |
Não há chaves de API nem ambiente de testes: a leitura é pública e os pedidos são reais, chegam à equipa e são respondidos por email. Se estiver a testar, diga-o no campo mensagem.
Exemplos
curl -s https://lavandeira.nexiagent.com/api/apartamentos
curl -s https://lavandeira.nexiagent.com/api/apartamentos/apartamento-l
curl -s -X POST https://lavandeira.nexiagent.com/api/pedidos \
-H 'Content-Type: application/json' \
-d '{"tipo":"disponibilidade","nome":"Maria Silva","email":"[email protected]",
"entrada":"2026-10-01","duracao":"9 meses","pessoas":2,
"apartamento":"Apartamento L (T1, rés-do-chão, Travessa da Rua Chã)"}'Resposta de sucesso: {"ok":true,"id":"<uuid>","emailed":false}.
Erros
Todos os erros são JSON com a mesma forma:
{
"ok": false,
"error": "Email inválido",
"code": "validation_error",
"status": 400,
"field": "email",
"hint": "Indique um email válido, ex.: [email protected]; é para onde respondemos.",
"docs": "https://lavandeira.nexiagent.com/developers#erros"
}| code | status | Quando |
|---|---|---|
| invalid_json | 400 | O corpo não é JSON válido |
| validation_error | 400 | Um campo é inválido; field diz qual |
| rate_limited | 429 | Limite excedido; Retry-After em segundos |
| not_found | 404 | Endpoint ou apartamento inexistente |
| method_not_allowed | 405 | Método errado; cabeçalho Allow |
| not_acceptable | 406 | Nenhuma representação aceitável (páginas HTML/Markdown) |
| internal_error | 500 | Falha do servidor |
Limites de pedidos
Cada resposta da API traz os cabeçalhos RateLimit-Policy e RateLimit (campos estruturados do draft IETF ratelimit-headers) e, por compatibilidade, RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset.
- Leitura (
GET): políticaleitura, 120 pedidos por minuto por IP. - Escrita (
POST /api/pedidos): políticapedidos, 6 pedidos por 10 minutos por IP. Ao exceder, 429 comRetry-After.
RateLimit-Policy: "pedidos";q=6;w=600
RateLimit: "pedidos";r=5;t=600
RateLimit-Limit: 6
RateLimit-Remaining: 5
RateLimit-Reset: 600Markdown para agentes
Todas as páginas HTML têm uma representação Markdown no mesmo URL. Envie Accept: text/markdown ou acrescente .md ao caminho. As respostas incluem Vary: Accept e um cabeçalho Link com rel="alternate". Um pedido que só aceite tipos que não produzimos recebe 406 com a lista das representações disponíveis.
curl -sI -H "Accept: text/markdown" https://lavandeira.nexiagent.com/apartamentos
curl -s https://lavandeira.nexiagent.com/apartamentos/apartamento-c.mdRastreadores e agentes de IA
O robots.txt permite explicitamente os agentes de IA conhecidos (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, Applebot-Extended, DeepSeekBot, meta-externalagent, Amazonbot, DuckAssistBot, CCBot, entre outros). Identifique o agente no User-Agent; o site está atrás da Cloudflare e pedidos sem identificação podem ser desafiados.
Dados e privacidade
Os endpoints de leitura devolvem apenas informação publicada no site. Os pedidos submetidos pela API são guardados e tratados como os do formulário, nos termos da política de privacidade. Áreas e tipologias vêm do projeto de arquitetura e estão sujeitas a confirmação final.