{
  "openapi": "3.1.0",
  "info": {
    "title": "DotLAB Public Site API",
    "version": "1.0.0",
    "summary": "Read-only, agent-friendly views into DotLAB site content.",
    "description": "Public, read-only HTTP endpoints exposed by the DotLAB website (https://dotlab.kent.edu.tr/) to help AI agents and crawlers discover information about the İstanbul Kent University Digital Game Design department, its program, faculty, events and contact details.\n\nMost endpoints below are 'virtual' in the sense that they describe how an agent can fetch the same content humans see, with `Accept` content negotiation between `text/html` and `text/markdown` where supported.",
    "contact": {
      "name": "DotLAB",
      "email": "kent.dot@kent.edu.tr",
      "url": "https://dotlab.kent.edu.tr/"
    },
    "license": {
      "name": "All rights reserved"
    }
  },
  "servers": [
    {
      "url": "https://dotlab.kent.edu.tr",
      "description": "Production"
    }
  ],
  "tags": [
    { "name": "site", "description": "Site-wide metadata" },
    { "name": "program", "description": "Academic program & curriculum" },
    { "name": "people", "description": "Faculty, staff and students" },
    { "name": "events", "description": "Conferences, jams and activities" },
    { "name": "international", "description": "Erasmus, foreign students, scholarships" },
    { "name": "contact", "description": "Contact channels" }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": ["site"],
        "summary": "DotLAB homepage",
        "operationId": "getSiteInfo",
        "description": "Returns the DotLAB homepage. Supports `Accept: text/markdown` to receive a compact agent-friendly Markdown summary instead of HTML.",
        "parameters": [
          {
            "in": "header",
            "name": "Accept",
            "required": false,
            "schema": {
              "type": "string",
              "enum": ["text/html", "text/markdown", "application/json"]
            },
            "description": "Preferred response media type. `text/markdown` returns the Markdown homepage; `text/html` returns the full site."
          }
        ],
        "responses": {
          "200": {
            "description": "Homepage content",
            "content": {
              "text/html": {
                "schema": { "type": "string" }
              },
              "text/markdown": {
                "schema": { "type": "string" }
              }
            }
          }
        }
      }
    },
    "/index.md": {
      "get": {
        "tags": ["site"],
        "summary": "Markdown homepage",
        "operationId": "getMarkdownHomepage",
        "description": "Compact, agent-friendly Markdown summary of DotLAB.",
        "responses": {
          "200": {
            "description": "Markdown homepage",
            "content": {
              "text/markdown": { "schema": { "type": "string" } }
            }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "tags": ["site"],
        "summary": "llms.txt index for AI agents",
        "operationId": "getLlmsTxt",
        "responses": {
          "200": {
            "description": "llms.txt",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/courses.html": {
      "get": {
        "tags": ["program"],
        "summary": "Digital Game Design curriculum",
        "operationId": "getProgram",
        "description": "Returns the full curriculum for the four-year B.Sc. Digital Game Design program.",
        "responses": {
          "200": {
            "description": "Curriculum page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/projects.html": {
      "get": {
        "tags": ["program"],
        "summary": "Student & studio projects",
        "operationId": "listProjects",
        "responses": {
          "200": {
            "description": "Projects gallery",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/team_projects.html": {
      "get": {
        "tags": ["program"],
        "summary": "Team projects",
        "operationId": "listTeamProjects",
        "responses": {
          "200": {
            "description": "Team projects page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/activities.html": {
      "get": {
        "tags": ["events"],
        "summary": "All events & activities",
        "operationId": "listEvents",
        "responses": {
          "200": {
            "description": "Activities page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/dotcon25.html": {
      "get": {
        "tags": ["events"],
        "summary": "DOTCON 2025",
        "operationId": "getDotCon25",
        "responses": {
          "200": {
            "description": "DOTCON 2025 page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/cantjam25.html": {
      "get": {
        "tags": ["events"],
        "summary": "Can't Game Jam 2025",
        "operationId": "getCantJam25",
        "responses": {
          "200": {
            "description": "Can't Game Jam 2025 page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/jam-in-eye.html": {
      "get": {
        "tags": ["events"],
        "summary": "Jam In Eye 2026",
        "operationId": "getJamInEye",
        "responses": {
          "200": {
            "description": "Jam In Eye 2026 page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/foreign_student.html": {
      "get": {
        "tags": ["international"],
        "summary": "Foreign student information",
        "operationId": "getForeignStudent",
        "responses": {
          "200": {
            "description": "Foreign student page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/erasmus.html": {
      "get": {
        "tags": ["international"],
        "summary": "Erasmus exchange program",
        "operationId": "getErasmus",
        "responses": {
          "200": {
            "description": "Erasmus page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/erasmus_internship.html": {
      "get": {
        "tags": ["international"],
        "summary": "Erasmus internship program",
        "operationId": "getErasmusInternship",
        "responses": {
          "200": {
            "description": "Erasmus internship page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/scholarship.html": {
      "get": {
        "tags": ["international"],
        "summary": "Scholarship information (English)",
        "operationId": "getScholarship",
        "responses": {
          "200": {
            "description": "Scholarship page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/burs.html": {
      "get": {
        "tags": ["international"],
        "summary": "Scholarship information (Turkish)",
        "operationId": "getBurs",
        "responses": {
          "200": {
            "description": "Burs page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/internship.html": {
      "get": {
        "tags": ["program"],
        "summary": "Internship program",
        "operationId": "getInternship",
        "responses": {
          "200": {
            "description": "Internship page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/partners.html": {
      "get": {
        "tags": ["site"],
        "summary": "Industry & academic partners",
        "operationId": "listPartners",
        "responses": {
          "200": {
            "description": "Partners page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/basarilarimiz.html": {
      "get": {
        "tags": ["site"],
        "summary": "Achievements (Başarılarımız)",
        "operationId": "listAchievements",
        "responses": {
          "200": {
            "description": "Achievements page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/gallery.html": {
      "get": {
        "tags": ["site"],
        "summary": "Photo gallery",
        "operationId": "getGallery",
        "responses": {
          "200": {
            "description": "Gallery page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/game_shots.html": {
      "get": {
        "tags": ["site"],
        "summary": "Game screenshots",
        "operationId": "getGameShots",
        "responses": {
          "200": {
            "description": "Game shots page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/visits.html": {
      "get": {
        "tags": ["events"],
        "summary": "Industry visits",
        "operationId": "listVisits",
        "responses": {
          "200": {
            "description": "Visits page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/international_office.html": {
      "get": {
        "tags": ["international"],
        "summary": "International Office",
        "operationId": "getInternationalOffice",
        "responses": {
          "200": {
            "description": "International office page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/work_and_travel.html": {
      "get": {
        "tags": ["international"],
        "summary": "Work and travel program",
        "operationId": "getWorkAndTravel",
        "responses": {
          "200": {
            "description": "Work and travel page",
            "content": { "text/html": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "tags": ["site"],
        "summary": "Sitemap",
        "operationId": "getSitemap",
        "responses": {
          "200": {
            "description": "Sitemap",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/.well-known/api-catalog.json": {
      "get": {
        "tags": ["site"],
        "summary": "API catalog (RFC 9727)",
        "operationId": "getApiCatalog",
        "responses": {
          "200": {
            "description": "Linkset describing services",
            "content": { "application/linkset+json": { "schema": { "type": "object" } } }
          }
        }
      }
    },
    "/.well-known/agent.json": {
      "get": {
        "tags": ["site"],
        "summary": "A2A Agent Card",
        "operationId": "getAgentCard",
        "responses": {
          "200": {
            "description": "A2A agent card",
            "content": { "application/json": { "schema": { "type": "object" } } }
          }
        }
      }
    },
    "/.well-known/mcp/server-card.json": {
      "get": {
        "tags": ["site"],
        "summary": "MCP server card",
        "operationId": "getMcpServerCard",
        "responses": {
          "200": {
            "description": "MCP server card",
            "content": { "application/json": { "schema": { "type": "object" } } }
          }
        }
      }
    },
    "/contact": {
      "get": {
        "tags": ["contact"],
        "summary": "Contact details",
        "operationId": "getContact",
        "description": "Pseudo-endpoint that surfaces structured contact information embedded in the homepage and JSON-LD. Agents can extract this from the `EducationalOrganization` `contactPoint` and `address` fields in the homepage JSON-LD.",
        "responses": {
          "200": {
            "description": "Contact data",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/Contact" }
              }
            }
          }
        }
      }
    },
    "/faculty": {
      "get": {
        "tags": ["people"],
        "summary": "Faculty list",
        "operationId": "listFaculty",
        "description": "Pseudo-endpoint surfaced via JSON-LD `Person` entries on the homepage.",
        "responses": {
          "200": {
            "description": "Array of faculty",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/Person" }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Contact": {
        "type": "object",
        "properties": {
          "email": { "type": "string", "format": "email", "example": "kent.dot@kent.edu.tr" },
          "phone": { "type": "string", "example": "+90 (212) 610 10 10" },
          "address": {
            "type": "object",
            "properties": {
              "street": { "type": "string", "example": "Cendere Cd. No:24" },
              "city": { "type": "string", "example": "Kağıthane" },
              "region": { "type": "string", "example": "İstanbul" },
              "postalCode": { "type": "string", "example": "34406" },
              "country": { "type": "string", "example": "TR" }
            }
          },
          "social": {
            "type": "object",
            "properties": {
              "instagram": { "type": "string", "example": "https://www.instagram.com/d0tlab" },
              "linkedin": { "type": "string", "example": "https://www.linkedin.com/company/d0tlab/" },
              "youtube": { "type": "string", "example": "https://www.youtube.com/@d00tlab" }
            }
          }
        }
      },
      "Person": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "title": { "type": "string" },
          "affiliation": { "type": "string", "example": "DotLAB — İstanbul Kent Üniversitesi" }
        }
      }
    }
  }
}
