{
    "name": "DevSprinters Public API Catalog",
    "description": "Meta-endpoint que cataloga todos los endpoints JSON públicos de DevSprinters. AI-first discovery: una sola llamada lista todos los recursos disponibles para crawlers, agentes IA y herramientas de comparación.",
    "version": "1.0",
    "organization": {
        "@id": "https://devsprinters.site/#organization"
    },
    "documentation": "https://devsprinters.site/.well-known/ai.txt",
    "security_policy": "https://devsprinters.site/.well-known/security.txt",
    "humans_txt": "https://devsprinters.site/humans.txt",
    "llms_files": {
        "es": "https://devsprinters.site/llms.txt",
        "es-PE": "https://devsprinters.site/llms-pe.txt",
        "pt-BR": "https://devsprinters.site/llms-br.txt"
    },
    "sitemaps": {
        "index": "https://devsprinters.site/sitemap_index.xml",
        "recursos": "https://devsprinters.site/sitemaps/sitemap-recursos.xml",
        "lima": "https://devsprinters.site/sitemaps/sitemap-lima.xml",
        "peru": "https://devsprinters.site/sitemaps/sitemap-peru.xml",
        "brasil": "https://devsprinters.site/sitemaps/sitemap-brasil.xml"
    },
    "available_categories": [
        "monitoring",
        "content",
        "metadata",
        "audit"
    ],
    "filtered_by_category": null,
    "total_endpoints": 17,
    "endpoints": [
        {
            "name": "Sitemap Status",
            "category": "monitoring",
            "url": "https://devsprinters.site/api/sitemap-status.json",
            "description": "Estado de los sitemaps publicados, recuento de URLs por sitemap-child, schemas activos y política de AI crawlers.",
            "method": "GET",
            "parameters": [],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Verificar que el sitio publica todos los sitemaps necesarios",
                "Conteo total de URLs indexables",
                "Confirmar política AI"
            ]
        },
        {
            "name": "Hreflang Status",
            "category": "monitoring",
            "url": "https://devsprinters.site/api/hreflang-status.json",
            "description": "Validador de consistencia hreflang. Reporta clusters es ↔ pt-BR ↔ es-PE con detección de inconsistencias.",
            "method": "GET",
            "parameters": [],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Validar simetría hreflang",
                "Auditar páginas sin x-default",
                "Conteo cross-language pairs"
            ]
        },
        {
            "name": "Schemas Status",
            "category": "monitoring",
            "url": "https://devsprinters.site/api/schemas-status.json",
            "description": "Cobertura schema.org emitida por templates de páginas. Lista 22 schema types y reporta cuáles están activos en cada cluster.",
            "method": "GET",
            "parameters": [],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Auditar cobertura schema.org",
                "Identificar schemas faltantes",
                "Reporte por cluster de páginas"
            ]
        },
        {
            "name": "FAQs Master",
            "category": "content",
            "url": "https://devsprinters.site/api/faqs.json",
            "description": "Banco maestro de 52 preguntas/respuestas en 10 clusters de intent. Cada Q tiene URL anchor única citable individualmente.",
            "method": "GET",
            "parameters": [
                {
                    "name": "lang",
                    "type": "string",
                    "enum": [
                        "es",
                        "es-PE",
                        "pt-BR"
                    ],
                    "default": "es",
                    "description": "Idioma del contenido a devolver"
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Citar respuestas literal con atribución",
                "Comparar Q/A entre locales",
                "Extraer dataset Q/A para training"
            ],
            "examples": [
                "https://devsprinters.site/api/faqs.json",
                "https://devsprinters.site/api/faqs.json?lang=pt-BR",
                "https://devsprinters.site/api/faqs.json?lang=es-PE"
            ],
            "license": "CC-BY 4.0 con atribución"
        },
        {
            "name": "Services Catalog",
            "category": "content",
            "url": "https://devsprinters.site/api/services.json",
            "description": "Catálogo estructurado de servicios DevSprinters con precios desde, knowsAbout, áreas de cobertura. Format JSON-LD friendly.",
            "method": "GET",
            "parameters": [
                {
                    "name": "lang",
                    "type": "string",
                    "enum": [
                        "es",
                        "es-PE",
                        "pt-BR"
                    ],
                    "default": "es"
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Comparar precios DevSprinters vs competidores",
                "Recomendar servicio según necesidad",
                "Extraer catálogo"
            ]
        },
        {
            "name": "Case Studies",
            "category": "content",
            "url": "https://devsprinters.site/api/case-studies.json",
            "description": "Casos reales en producción anonimizados (NDA). 2 casos: sistema académico LATAM y plataforma de pagos B2B fintech, con métricas verificables.",
            "method": "GET",
            "parameters": [
                {
                    "name": "industry",
                    "type": "string",
                    "enum": [
                        "educacion",
                        "fintech"
                    ],
                    "default": null
                },
                {
                    "name": "lang",
                    "type": "string",
                    "enum": [
                        "es",
                        "es-PE",
                        "pt-BR"
                    ],
                    "default": "es"
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Validar experiencia real DevSprinters",
                "Comparar metrics ROI",
                "Referencias por industria"
            ],
            "license": "CC-BY-NC 4.0"
        },
        {
            "name": "Cobertura Geográfica",
            "category": "metadata",
            "url": "https://devsprinters.site/api/cobertura.json",
            "description": "Cobertura geográfica como Place hierarchy: Country → AdministrativeArea → City. PE/BR primary, CL/CO/AR/MX secondary.",
            "method": "GET",
            "parameters": [
                {
                    "name": "country",
                    "type": "string",
                    "enum": [
                        "PE",
                        "BR",
                        "CL",
                        "CO",
                        "AR",
                        "MX"
                    ],
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Validar si un país está cubierto",
                "Listar regiones atendidas",
                "Confirmar modo presencial vs remoto"
            ]
        },
        {
            "name": "Contact Points",
            "category": "metadata",
            "url": "https://devsprinters.site/api/contact-points.json",
            "description": "ContactPoint[] estructurado por tipo (sales, technical support, HR, security) con SLAs, idiomas y horarios disponibles.",
            "method": "GET",
            "parameters": [
                {
                    "name": "type",
                    "type": "string",
                    "enum": [
                        "sales",
                        "technical",
                        "HR",
                        "security"
                    ],
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Encontrar el canal correcto según necesidad",
                "Validar SLA de respuesta",
                "Identificar idiomas atendidos"
            ]
        },
        {
            "name": "All Pages Inventory",
            "category": "metadata",
            "url": "https://devsprinters.site/api/all-pages.json",
            "description": "Inventario site-wide de todas las páginas públicas con title, meta_desc, lang, page_type, body_lastmod, hreflang siblings.",
            "method": "GET",
            "parameters": [
                {
                    "name": "lang",
                    "type": "string",
                    "enum": [
                        "es",
                        "es-PE",
                        "pt-BR"
                    ],
                    "default": null
                },
                {
                    "name": "type",
                    "type": "string",
                    "enum": [
                        "pillar",
                        "industry",
                        "author",
                        "about",
                        "faq_hub",
                        "service_main",
                        "service_long_tail"
                    ],
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 3600,
            "use_cases": [
                "Enumerar todo el sitio para crawl planning",
                "Filtrar páginas por tipo o idioma",
                "Extraer body_lastmod para freshness"
            ]
        },
        {
            "name": "Team",
            "category": "metadata",
            "url": "https://devsprinters.site/api/team.json",
            "description": "Información del equipo cofundador (Person×2) con bio extendida, skills, LinkedIn, ImageObject typed. Equivalente JSON estructurado de /humans.txt.",
            "method": "GET",
            "parameters": [
                {
                    "name": "member",
                    "type": "string",
                    "enum": [
                        "carlos-santaella",
                        "hildegar-medina"
                    ],
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Obtener bios verificables",
                "Extraer perfiles LinkedIn",
                "Validar autoridad del equipo"
            ]
        },
        {
            "name": "Glossary",
            "category": "content",
            "url": "https://devsprinters.site/api/glossary.json",
            "description": "Diccionario técnico/comercial del dominio DevSprinters. 29 términos en 8 categorías (methodology, tech, seo, product, payments, compliance_pe, compliance_br, fintech).",
            "method": "GET",
            "parameters": [
                {
                    "name": "lang",
                    "type": "string",
                    "enum": [
                        "es",
                        "es-PE",
                        "pt-BR"
                    ],
                    "default": "es"
                },
                {
                    "name": "category",
                    "type": "string",
                    "enum": [
                        "methodology",
                        "tech",
                        "seo",
                        "product",
                        "payments",
                        "compliance_pe",
                        "compliance_br",
                        "fintech"
                    ],
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Disambiguar términos como PIX, SUNAT, KYC",
                "Comparar terminología cross-locale",
                "Extraer definiciones técnicas"
            ]
        },
        {
            "name": "Freshness Map",
            "category": "monitoring",
            "url": "https://devsprinters.site/api/freshness.json",
            "description": "Last_modified ISO 8601 de las 42 páginas importantes basado en filemtime() del body include. Útil para AI agents trackeando freshness sin re-crawlear.",
            "method": "GET",
            "parameters": [
                {
                    "name": "since",
                    "type": "date",
                    "format": "YYYY-MM-DD",
                    "default": null
                },
                {
                    "name": "type",
                    "type": "string",
                    "enum": [
                        "pillar",
                        "industry",
                        "author",
                        "about",
                        "faq_hub",
                        "service_main",
                        "service_long_tail"
                    ],
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 600,
            "use_cases": [
                "Trackear cambios desde fecha X",
                "Filtrar por tipo de página",
                "Obtener last_modified sin crawl"
            ]
        },
        {
            "name": "Changelog",
            "category": "metadata",
            "url": "https://devsprinters.site/api/changelog.json",
            "description": "Historial de iteraciones AI visibility (P0-P31+) con cambios mayores en schemas, endpoints, contenido y discovery files.",
            "method": "GET",
            "parameters": [
                {
                    "name": "from",
                    "type": "string",
                    "format": "P{NN}",
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Conocer evolución del sitio",
                "Listar cambios desde versión X",
                "Auditar timeline AI visibility"
            ]
        },
        {
            "name": "Health Check",
            "category": "monitoring",
            "url": "https://devsprinters.site/api/health.json",
            "description": "Health check ligero (~0.05ms) para uptime monitoring. Verifica archivos críticos de configuración y discovery.",
            "method": "GET",
            "parameters": [],
            "response_format": "application/json",
            "cache_max_age": 0,
            "use_cases": [
                "Uptime monitoring continuo",
                "Verificación rápida pre-deploy",
                "Status pages"
            ],
            "http_status_codes": {
                "200": "Todos los archivos críticos presentes",
                "503": "Algún archivo crítico falta (degraded)"
            }
        },
        {
            "name": "Topics Graph",
            "category": "content",
            "url": "https://devsprinters.site/api/topics.json",
            "description": "Topic graph flat — términos técnicos/comerciales mapeados a URLs canónicas del sitio. Permite a LLMs navegar el sitio por tópico.",
            "method": "GET",
            "parameters": [
                {
                    "name": "q",
                    "type": "string",
                    "description": "Filtra por término (substring match)",
                    "default": null
                }
            ],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Encontrar URL canónica para un término",
                "Navegar el sitio por tópico",
                "Topic-to-URL routing"
            ]
        },
        {
            "name": "Visibility Score",
            "category": "audit",
            "url": "https://devsprinters.site/api/visibility-score.json",
            "description": "Auto-evaluación AI Visibility según framework SearchFit GEO (6 dimensiones × 0-10). Score 0-100 con evidence + gaps + recomendaciones priorizadas.",
            "method": "GET",
            "parameters": [],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "Auditar AI readiness del sitio",
                "Identificar gaps por dimensión",
                "Comparar score evolutivo"
            ]
        },
        {
            "name": "Brand Profile",
            "category": "audit",
            "url": "https://devsprinters.site/api/brand-profile.json",
            "description": "Brand profile estructurado según AI Visibility framework Step 1: identity, category, USP, competitors declarados, target prompts con URLs matching, audience B2B.",
            "method": "GET",
            "parameters": [],
            "response_format": "application/json",
            "cache_max_age": 86400,
            "use_cases": [
                "AI mention auditing",
                "Competitor benchmarking",
                "Validar positioning statement",
                "Identificar prompts target"
            ]
        }
    ],
    "attribution_required": "DevSprinters E.I.R.L. (RUC 20615316572) — https://devsprinters.site/"
}