{
  "openapi": "3.1.0",
  "info": {
    "title": "Sinder Public API",
    "version": "1.0.0",
    "description": "Public, read-mostly API for the Sinder Founder Card site. Includes waitlist signup, waitlist counter, legal document lookup, resume access, and AI/agent discovery endpoints.",
    "contact": {
      "name": "Sinder",
      "email": "socials@sinder.ae",
      "url": "https://sinder.ae"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://sinder.ae/terms"
    }
  },
  "servers": [
    {
      "url": "https://sinder.ae",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "waitlist",
      "description": "Founder Card waitlist"
    },
    {
      "name": "legal",
      "description": "Legal documents"
    },
    {
      "name": "careers",
      "description": "Careers / resume access"
    },
    {
      "name": "discovery",
      "description": "Agent & AI discovery"
    }
  ],
  "paths": {
    "/api/waitlist": {
      "post": {
        "tags": [
          "waitlist"
        ],
        "summary": "Join the Founder Card waitlist",
        "operationId": "joinWaitlist",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaitlistEntry"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaitlistEntry"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or duplicate email"
          }
        }
      }
    },
    "/api/waitlist/count": {
      "get": {
        "tags": [
          "waitlist"
        ],
        "summary": "Public waitlist counter",
        "operationId": "getWaitlistCount",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "spotsRemaining": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "totalSpots": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "count",
                    "spotsRemaining",
                    "totalSpots"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/legal/documents/{documentId}": {
      "get": {
        "tags": [
          "legal"
        ],
        "summary": "Fetch a public legal document",
        "operationId": "getLegalDocument",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Document identifier (e.g. cardholder-tnc)."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "en",
                "ar"
              ]
            },
            "description": "Document language."
          }
        ],
        "responses": {
          "200": {
            "description": "Document JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Document not found"
          }
        }
      }
    },
    "/api/careers/resume/{key}": {
      "get": {
        "tags": [
          "careers"
        ],
        "summary": "Get a signed URL for a candidate resume (admin-only in practice)",
        "operationId": "getResumeUrl",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "redirect"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON with signed URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "format": "uri"
                    }
                  }
                }
              }
            }
          },
          "302": {
            "description": "Redirect to signed URL"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/.well-known/agent.json": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "A2A Agent Card",
        "operationId": "getAgentCard",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/webmcp.json": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "WebMCP manifest",
        "operationId": "getWebMcp",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/mcp.json": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "MCP discovery",
        "operationId": "getMcp",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/.well-known/agents.json": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "agents.json catalog",
        "operationId": "getAgentsJson",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "AI site overview",
        "operationId": "getLlmsTxt",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/markdown": {}
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "Complete AI site digest",
        "operationId": "getLlmsFullTxt",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/markdown": {}
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "WaitlistEntry": {
        "type": "object",
        "required": [
          "fullName",
          "email"
        ],
        "properties": {
          "fullName": {
            "type": "string",
            "minLength": 2
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "phone": {
            "type": "string"
          },
          "interests": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "referralSource": {
            "type": "string"
          }
        }
      }
    }
  }
}