{
  "openapi": "3.1.0",
  "info": {
    "title": "ft.ia.br — Fabricio Telles Blog Public API",
    "version": "1.0.0",
    "description": "Superfície de leitura pública do site ft.ia.br — blog de Fabricio Telles sobre tecnologia, IA, FinOps e cibersegurança (conteúdo em Português Brasileiro). Todos os endpoints são GET públicos, sem autenticação. Agentes IA devem começar por /llms.txt (índice de contexto) ou /.well-known/ai-catalog.json (catálogo de recursos agênticos).",
    "contact": {
      "name": "Fabricio Telles",
      "url": "https://www.linkedin.com/in/fabriciotelles/"
    },
    "license": {
      "name": "Content available for AI indexing",
      "url": "https://ft.ia.br/llms.txt"
    }
  },
  "servers": [
    {
      "url": "https://ft.ia.br",
      "description": "Produção"
    }
  ],
  "tags": [
    {
      "name": "context",
      "description": "Arquivos de contexto para LLMs e agentes"
    },
    {
      "name": "content",
      "description": "Conteúdo do blog (posts, RSS, sitemap)"
    },
    {
      "name": "discovery",
      "description": "Artefatos de descoberta agent-ready (.well-known)"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "operationId": "getHomepage",
        "tags": [
          "content"
        ],
        "summary": "Página inicial do site",
        "description": "Homepage server-side rendered com perfil profissional, projetos e artigos recentes. Retorna HTML completo sem necessidade de JavaScript. Alternativa em markdown: use getHomepageMarkdown.",
        "responses": {
          "200": {
            "description": "HTML da homepage",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "getLlmsTxt",
        "tags": [
          "context"
        ],
        "summary": "Índice de contexto para LLMs",
        "description": "Arquivo llms.txt com resumo estruturado do autor, projetos, artigos publicados e lista de endpoints para agentes. Ponto de entrada recomendado para agentes IA. Formato markdown navegável.",
        "responses": {
          "200": {
            "description": "Índice llms.txt em texto plano",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "operationId": "getLlmsFullTxt",
        "tags": [
          "context"
        ],
        "summary": "Contexto completo para LLMs",
        "description": "Versão estendida do llms.txt com o conteúdo integral dos artigos concatenado em texto plano para ingestão direta em contextos de LLM.",
        "responses": {
          "200": {
            "description": "Contexto completo em texto plano",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/agent.json": {
      "get": {
        "operationId": "getAgentJson",
        "tags": [
          "context"
        ],
        "summary": "Agent View estruturado (JSON)",
        "description": "Visão estruturada do site em JSON para agentes: perfil, áreas de expertise, certificações, projetos e artigos recentes com metadados.",
        "responses": {
          "200": {
            "description": "Perfil e conteúdo em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/index.md": {
      "get": {
        "operationId": "getHomepageMarkdown",
        "tags": [
          "content"
        ],
        "summary": "Homepage em markdown",
        "description": "Gêmeo markdown da homepage para agentes que preferem texto estruturado a HTML. Mesmo conteúdo da página inicial.",
        "responses": {
          "200": {
            "description": "Markdown da homepage",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/auth.md": {
      "get": {
        "operationId": "getAuthMd",
        "tags": [
          "context"
        ],
        "summary": "Documentação de autenticação para agentes",
        "description": "Walkthrough em markdown explicando que todo o conteúdo é público e não requer credenciais; descreve os metadados OAuth publicados para integrações.",
        "responses": {
          "200": {
            "description": "Documentação de auth em markdown",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/rss.xml": {
      "get": {
        "operationId": "getRssFeed",
        "tags": [
          "content"
        ],
        "summary": "Feed RSS dos artigos",
        "description": "Feed RSS 2.0 com os artigos publicados. Use para monitorar novos conteúdos e obter títulos, datas e links canônicos.",
        "responses": {
          "200": {
            "description": "Feed RSS XML",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap-index.xml": {
      "get": {
        "operationId": "getSitemapIndex",
        "tags": [
          "content"
        ],
        "summary": "Índice de sitemaps",
        "description": "Sitemap index XML listando todos os sitemaps do site com as URLs indexáveis e datas de última modificação.",
        "responses": {
          "200": {
            "description": "Sitemap index XML",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/ai-catalog.json": {
      "get": {
        "operationId": "getAiCatalog",
        "tags": [
          "discovery"
        ],
        "summary": "AI Catalog — Agentic Resource Discovery",
        "description": "Catálogo de recursos agênticos do site (spec ARD/ai-catalog): agent card A2A, MCP server card e skills para agentes. Comece por aqui para descobrir todos os artefatos.",
        "responses": {
          "200": {
            "description": "Catálogo AI Catalog em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/agent-card.json": {
      "get": {
        "operationId": "getA2aAgentCard",
        "tags": [
          "discovery"
        ],
        "summary": "A2A Agent Card",
        "description": "Agent card do protocolo Agent-to-Agent (A2A): habilidades de leitura de posts e contexto do autor, com exemplos de consultas.",
        "responses": {
          "200": {
            "description": "Agent card A2A em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/mcp/server-card.json": {
      "get": {
        "operationId": "getMcpServerCard",
        "tags": [
          "discovery"
        ],
        "summary": "MCP Server Card",
        "description": "Server card do Model Context Protocol descrevendo os recursos expostos (llms.txt, llms-full.txt, RSS, sitemap) e capacidades do servidor.",
        "responses": {
          "200": {
            "description": "MCP server card em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/agent-skills/index.json": {
      "get": {
        "operationId": "getAgentSkillsIndex",
        "tags": [
          "discovery"
        ],
        "summary": "Agent Skills Index (v0.2.0)",
        "description": "Índice de skills para agentes IA no schema agentskills.io v0.2.0, com nome, descrição, URL e digest sha256 de cada SKILL.md.",
        "responses": {
          "200": {
            "description": "Índice de skills em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/api-catalog": {
      "get": {
        "operationId": "getApiCatalog",
        "tags": [
          "discovery"
        ],
        "summary": "API Catalog (RFC 9727)",
        "description": "Catálogo de APIs em formato linkset+json (RFC 9727) listando os service-desc e itens públicos do site.",
        "responses": {
          "200": {
            "description": "Linkset do catálogo de APIs",
            "content": {
              "application/linkset+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource": {
      "get": {
        "operationId": "getOAuthProtectedResource",
        "tags": [
          "discovery"
        ],
        "summary": "OAuth Protected Resource Metadata (RFC 9728)",
        "description": "Metadados de recurso protegido OAuth 2.0 (RFC 9728). O conteúdo do site é público; este documento existe para conformidade com fluxos de descoberta de agentes.",
        "responses": {
          "200": {
            "description": "Metadados RFC 9728 em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/oauth-authorization-server": {
      "get": {
        "operationId": "getOAuthAuthorizationServer",
        "tags": [
          "discovery"
        ],
        "summary": "OAuth Authorization Server Metadata (RFC 8414)",
        "description": "Metadados do servidor de autorização OAuth 2.0 (RFC 8414) para fluxos de autenticação de agentes.",
        "responses": {
          "200": {
            "description": "Metadados RFC 8414 em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/developers": {
      "get": {
        "operationId": "getDeveloperPortal",
        "tags": [
          "discovery"
        ],
        "summary": "Developer portal",
        "description": "Portal de desenvolvedores com quickstart, tabela completa de endpoints, escopos de acesso, modelo de erros e skills para agentes IA. Ponto de partida humano-legível da integração.",
        "responses": {
          "200": {
            "description": "Portal de desenvolvedores em HTML",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/agent/auth": {
      "get": {
        "operationId": "getAgentRegistration",
        "tags": [
          "context"
        ],
        "summary": "Registro anônimo de agente (auth.md v1)",
        "description": "Endpoint agent_registration do protocolo auth.md. Retorna token bearer simbólico com escopo public — o site é público e não exige credencial, mas o endpoint existe para frameworks que exigem credential explícita.",
        "responses": {
          "200": {
            "description": "Credencial bearer anônima em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/agent/revoke": {
      "get": {
        "operationId": "getAgentRevocationInfo",
        "tags": [
          "context"
        ],
        "summary": "Revogação de credencial de agente (auth.md v1)",
        "description": "Endpoint agent_revocation do protocolo auth.md. Aceita GET e POST; como o acesso é anônimo e público, a revogação é sempre bem-sucedida (no-op) — não há estado server-side a invalidar.",
        "responses": {
          "200": {
            "description": "Confirmação de revogação em JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/security.txt": {
      "get": {
        "operationId": "getSecurityTxt",
        "tags": [
          "discovery"
        ],
        "summary": "security.txt (RFC 9116)",
        "description": "Arquivo security.txt com informações de contato para relatórios de segurança (RFC 9116).",
        "responses": {
          "200": {
            "description": "security.txt em texto plano",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  }
}