{
  "openapi": "3.1.0",
  "info": {
    "title": "feed7 Public Retrieval API",
    "version": "1.0",
    "description": "Read-only, source-backed Feed7 publications. No authentication required."
  },
  "servers": [
    {
      "url": "https://feed7.dev"
    }
  ],
  "paths": {
    "/feed.json": {
      "get": {
        "operationId": "getJsonFeed",
        "summary": "Get the JSON Feed 1.1 signal stream",
        "responses": {
          "200": {
            "description": "JSON Feed"
          }
        }
      }
    },
    "/feed.xml": {
      "get": {
        "operationId": "getRssFeed",
        "summary": "Get the RSS 2.0 signal stream",
        "responses": {
          "200": {
            "description": "RSS feed"
          }
        }
      }
    },
    "/p/{slug}.json": {
      "get": {
        "operationId": "getSignal",
        "summary": "Get one source-backed Feed7 signal",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Signal document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Signal"
                }
              }
            }
          },
          "404": {
            "description": "Signal not found"
          }
        }
      }
    },
    "/p/{slug}.md": {
      "get": {
        "operationId": "getSignalMarkdown",
        "summary": "Get one signal as agent-ready Markdown",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Markdown signal"
          },
          "404": {
            "description": "Signal not found"
          }
        }
      }
    },
    "/weekly/{slug}.json": {
      "get": {
        "operationId": "getWeekly",
        "summary": "Get a weekly issue; use latest for the current issue",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Weekly issue"
          },
          "404": {
            "description": "Issue not found"
          }
        }
      }
    },
    "/weekly/{slug}.md": {
      "get": {
        "operationId": "getWeeklyMarkdown",
        "summary": "Get a weekly issue as agent-ready Markdown",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Markdown issue"
          },
          "404": {
            "description": "Issue not found"
          }
        }
      }
    },
    "/atlas/{slug}.json": {
      "get": {
        "operationId": "getAtlasTopic",
        "summary": "Get one Atlas topic with evidence",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Atlas topic"
          },
          "404": {
            "description": "Topic not found"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Signal": {
        "type": "object",
        "required": [
          "id",
          "url",
          "title",
          "summary",
          "source",
          "verification",
          "agent_context"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "practical_implication": {
            "type": "string"
          },
          "agent_context": {
            "type": "string"
          },
          "source": {
            "type": "object",
            "required": [
              "name",
              "url"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "published_at": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            }
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "verification": {
            "type": "object",
            "required": [
              "status",
              "method"
            ],
            "properties": {
              "status": {
                "type": "string"
              },
              "method": {
                "type": "string"
              },
              "verified_at": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            }
          },
          "uncertainty": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}