<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap for https://api.mmodiary.com

  Contains ONLY routes that are genuinely public, actually exist in
  frontend/src/router/index.ts, and are worth indexing. Kept in sync with
  frontend/src/seo/siteMeta.ts (PUBLIC_ROUTES); a test asserts the two agree
  and that no authenticated route leaks in.

  Locale strategy: one URL per locale via ?lang=, with the bare URL as
  x-default. See .orchestration/seo-homepage-report.md for the decision and its
  tradeoffs.

  Deliberately absent:
    - /model and /model-plaza — gated by model_plaza_enabled, which defaults to
      false, and may additionally require sign-in. A static sitemap cannot read
      a runtime toggle, so listing them risks advertising URLs that redirect to
      a disallowed /login. They remain crawlable, just not asserted indexable.
    - /login, /register, /key-usage and every authenticated route.
    - Admin-configured /legal/:documentId entries — those ids only exist at
      runtime. Only the bundled compliance document is listed.

  lastmod is a static build-time date and is not wired to a build step; it will
  go stale unless regenerated.
-->
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
>
  <!-- Homepage -->
  <url>
    <loc>https://api.mmodiary.com/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/" />
    <lastmod>2026-09-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://api.mmodiary.com/?lang=en</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/" />
    <lastmod>2026-09-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://api.mmodiary.com/?lang=vi</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/" />
    <lastmod>2026-09-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://api.mmodiary.com/?lang=zh</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/" />
    <lastmod>2026-09-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!--
    Public API documentation. Unauthenticated and free of real credentials: it
    renders a <YOUR_API_KEY> placeholder. The authenticated generator at
    /client-setup is deliberately absent (it renders the customer's real key).
  -->
  <url>
    <loc>https://api.mmodiary.com/docs</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/docs?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/docs?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/docs?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/docs" />
    <lastmod>2026-09-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://api.mmodiary.com/docs?lang=en</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/docs?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/docs?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/docs?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/docs" />
    <lastmod>2026-09-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://api.mmodiary.com/docs?lang=vi</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/docs?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/docs?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/docs?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/docs" />
    <lastmod>2026-09-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://api.mmodiary.com/docs?lang=zh</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/docs?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/docs?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/docs?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/docs" />
    <lastmod>2026-09-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- Deployment and operation compliance commitment (bundled document) -->
  <url>
    <loc>https://api.mmodiary.com/legal/admin-compliance</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://api.mmodiary.com/legal/admin-compliance?lang=en" />
    <xhtml:link rel="alternate" hreflang="vi" href="https://api.mmodiary.com/legal/admin-compliance?lang=vi" />
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://api.mmodiary.com/legal/admin-compliance?lang=zh" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://api.mmodiary.com/legal/admin-compliance" />
    <lastmod>2026-09-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
