{
  "openapi": "3.0.3",
  "info": {
    "title": "signalX API & Developer Specification",
    "description": "Official API specification and developer documentation for signalX, the AI-powered Chrome extension and growth tools suite for X (Twitter).",
    "version": "1.0.0",
    "contact": {
      "name": "signalX Developer Team",
      "email": "signalx.team@gmail.com",
      "url": "https://www.signalx.cc/contact"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://www.signalx.cc/terms"
    }
  },
  "servers": [
    {
      "url": "https://www.signalx.cc",
      "description": "Production API Server"
    }
  ],
  "paths": {
    "/llms.txt": {
      "get": {
        "summary": "Agent Instructions and Site Capabilities Index",
        "description": "Returns markdown-formatted machine instructions describing signalX capabilities, endpoints, and usage guidance for AI agents.",
        "operationId": "getLlmsTxt",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "summary": "OpenAPI Specification",
        "description": "Returns the OpenAPI 3.0 specification for signalX APIs and developer resources.",
        "operationId": "getOpenApiSpec",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/markdown-negotiation": {
      "get": {
        "summary": "Markdown Content Negotiation Endpoint",
        "description": "Returns markdown representation of any signalX page when queried with Accept: text/markdown or targetPath parameter.",
        "operationId": "getMarkdownRepresentation",
        "parameters": [
          {
            "name": "targetPath",
            "in": "query",
            "required": false,
            "description": "The relative URL path to convert to markdown (e.g. /about, /contact, /docs).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Markdown Content Available",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Path Not Found (Returns 404 Markdown Recovery Guide)",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "XML Sitemap Index",
        "description": "Returns the complete XML sitemap listing all published pages, blogs, and tools.",
        "operationId": "getSitemapXml",
        "responses": {
          "200": {
            "description": "XML Sitemap",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/extension-auth": {
      "get": {
        "summary": "Chrome Extension Authentication Callback",
        "description": "Handles OAuth authentication and token exchange for the signalX Chrome extension.",
        "operationId": "extensionAuthCallback",
        "responses": {
          "200": {
            "description": "Auth Successful"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}