openapi: 3.1.0
info:
  title: TalkMED Public Website
  version: 1.0.0
  description: Public, unauthenticated website routes for TalkMED medical education content discovery.
servers:
  - url: https://portal.talkmed.com
paths:
  /:
    get:
      operationId: getHomePage
      summary: TalkMED homepage
      responses:
        '200':
          description: HTML homepage with featured courses, news, meetings, and platform links.
          content:
            text/html:
              schema:
                type: string
  /course:
    get:
      operationId: getCourseIndex
      summary: Medical course index
      responses:
        '200':
          description: HTML course list page with public course filters and course cards.
          content:
            text/html:
              schema:
                type: string
  /course/{id}:
    get:
      operationId: getCourseDetail
      summary: Medical course detail page
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: HTML course detail page with course introduction, speaker, catalog, and FAQ content.
          content:
            text/html:
              schema:
                type: string
  /news:
    get:
      operationId: getNewsIndex
      summary: Academic news index
      responses:
        '200':
          description: HTML news list page for medical academic updates.
          content:
            text/html:
              schema:
                type: string
  /news/{id}:
    get:
      operationId: getNewsDetail
      summary: Academic news detail page
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: HTML news detail page with article content, source metadata, keywords, comments, and recommendations.
          content:
            text/html:
              schema:
                type: string
  /speaker:
    get:
      operationId: getSpeakerIndex
      summary: Medical speaker index
      responses:
        '200':
          description: HTML speaker listing and discovery page.
          content:
            text/html:
              schema:
                type: string
  /speaker/{id}:
    get:
      operationId: getSpeakerDetail
      summary: Medical speaker profile page
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: HTML speaker profile page with organization, hospital, department, title, and related content.
          content:
            text/html:
              schema:
                type: string
  /about_us:
    get:
      operationId: getAboutPage
      summary: About TalkMED page
      responses:
        '200':
          description: HTML page describing TalkMED, eDoctor, products, and media matrix.
          content:
            text/html:
              schema:
                type: string
  /llms.txt:
    get:
      operationId: getLlmsTxt
      summary: AI search summary file
      responses:
        '200':
          description: Markdown/plain-text summary for AI search engines.
          content:
            text/plain:
              schema:
                type: string
  /llms-full.txt:
    get:
      operationId: getLlmsFullTxt
      summary: Detailed AI search description file
      responses:
        '200':
          description: Detailed Markdown/plain-text site description for AI search engines.
          content:
            text/plain:
              schema:
                type: string
  /sitemap.xml:
    get:
      operationId: getSitemap
      summary: XML sitemap
      responses:
        '200':
          description: XML sitemap for public TalkMED routes.
          content:
            application/xml:
              schema:
                type: string
