Öffentliche API

Site-Discovery-Dateien · öffentliche API

Drei konventionelle Discovery-Dateien, ausgeliefert unter festen URLs, die jeder Web-Crawler und jede Offenlegungs-Pipeline ohnehin abfragt: /robots.txt, /sitemap.xml und /.well-known/security.txt. Auf CodeB sind sie mandantengetrennt nach Request-Host — eine IIS-Site pro Mandant, ein kanonischer Host pro Sitemap. Keine Authentifizierung, keine Parameter, keine Cookies.

Mandantenfähigkeit über Domains. CodeB liefert eine IIS-Site pro Mandanten-FQDN aus (siehe CPaaS). Die Discovery-Dateien werten den Host:-Header des Requests aus, sodass die Crawler eines Mandanten nur dessen URLs sehen — nie die eines Nachbar-Mandanten.

GET /robots.txt #

Standardmäßige Robots-Exclusion-Datei (RFC 9309). Die Zeile Sitemap: wird bei jedem Request auf denselben Host umgeschrieben, den der Crawler abgefragt hat — oder, falls der Betreiber in der appsettings.json des Mandanten Site:CanonicalHost gesetzt hat, auf diesen kanonischen Override.

Request

Keine Parameter, keine Header. Anonym.

Response

HTTP/1.1 200 OK
Content-Type:     text/plain; charset=utf-8
X-Build-Version:  2026-06-11-filfla-robots-dyn
X-Tenant:         www.aloaha.com
X-Canonical-Host: www.aloaha.com

User-agent: *
Allow: /

# … Disallow-Liste (Backend-.ashx-Handler, Admin-Seiten,
#       PWA-Support-Dateien) …

Sitemap: https://www.aloaha.com/sitemap.xml

Die Disallow-Liste ist hostunabhängig — sie umfasst Backend-.ashx-Handler, OAuth2-Pfad-Aliase, mandantengebundene WebRTC- und Auth-Flow-Seiten, die Admin-/Superadmin-Dashboards sowie PWA-Support-Dateien. Nur die abschließende Sitemap:-Zeile unterscheidet sich zwischen Mandanten.

Diagnose-Header

  • X-Build-Version — Handler-Build-Kennung. Wird bei jeder Verhaltensänderung erhöht. Smoke-Probes prüfen darauf.
  • X-Tenant — der Request-Host: wie geparst.
  • X-Canonical-Host — der aufgelöste kanonische Host, der auf der Sitemap:-Zeile landet.

Beispiel

curl -i https://www.aloaha.com/robots.txt
curl -i https://aloaha.com/robots.txt    # andere Sitemap:-Zeile
URL-Rewrite liefert /robots.txt intern aus einem dynamischen Handler aus. Die öffentliche URL bleibt bei /robots.txt, damit Crawler die konventionelle Stelle finden.

GET /sitemap.xml #

XML-Sitemap, bei jedem Request per Dateisystem-Scan erzeugt, eingeschränkt auf den Request-Host. Kundenseiten im Root und unter /de/ sind enthalten; Admin-, mandantengebundene, Auth-Flow- und PWA-Support-Dateien werden über eine Deny-Liste herausgefiltert, die die Disallow-Liste der robots.txt spiegelt. Das Ergebnis wird pro kanonischem Host 60 Sekunden im Prozess gecached.

Request

Keine Parameter, keine Header. Anonym.

Response-Form

HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.aloaha.com/</loc>
    <lastmod>2026-06-13</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://www.aloaha.com/"/>
    <xhtml:link rel="alternate" hreflang="de"
                href="https://www.aloaha.com/de/"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://www.aloaha.com/"/>
  </url>
  …
</urlset>

Metadaten je Seite

  • <loc>https://<kanonischer-host>/<relativer-pfad>.
  • <lastmod> — die mtime der HTML-Datei, yyyy-MM-dd. Drift zwischen Disk und Sitemap ist durch den 60‑Sekunden-Cache begrenzt.
  • <changefreq> + <priority> — heuristisch pro Dateiname.
  • <xhtml:link rel="alternate"> — EN ↔ DE-Alternativ wird emittiert, sobald eine passende Datei /de/<name> auf der Disk liegt.

Auflösung des kanonischen Hosts

  1. App_Data/<host>/appsettings.jsonSite:CanonicalHost gewinnt, falls gesetzt. Ermöglicht einem Betreiber, die Sitemap auf www.example.com statt phone.example.com zeigen zu lassen.
  2. Ansonsten Request.Url.Host — der Host, den der Crawler abgefragt hat.

Beispiel

curl -i https://www.aloaha.com/sitemap.xml
Der Datei-Scan auf der Disk ist die Quelle der Wahrheit, nicht eine handgepflegte Sitemap-Liste. Eine neue .html-Datei im Root liegt — vorbehaltlich der Deny-Liste — innerhalb einer Minute in /sitemap.xml. Umgekehrt kann nichts aus der Deny-Liste versehentlich in eine Sitemap durchrutschen.

GET /.well-known/security.txt #

Kontaktdatei für koordinierte Offenlegung gemäß RFC 9116. Sicherheitsforscher und automatisierte Disclosure-Pipelines sollten hier zuerst nachsehen.

Request

Keine Parameter, keine Header. Anonym.

Response

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8

Contact:             mailto:security@aloaha.com
Contact:             mailto:info@aloaha.com
Expires:             2027-06-06T00:00:00.000Z
Preferred-Languages: en, de
Canonical:           https://www.aloaha.com/.well-known/security.txt
Policy:              https://www.aloaha.com/privacy.html

Erwartungen an die Offenlegung

  • Bestätigung innerhalb von zwei Werktagen.
  • Substantielle Rückmeldung oder Behebung innerhalb von dreißig Tagen.
  • Kein bezahltes Bug-Bounty-Programm; Forscher, die koordinierte Offenlegung praktizieren, werden namentlich gewürdigt.

Beispiel

curl -i https://www.aloaha.com/.well-known/security.txt
Für die vollständige Incident-Handling-Haltung siehe CRA / Cyber-Resilienz. CodeB-Betreiber, die unter Verordnung (EU) 2024/2847 berichten, sollten ihr CSIRT zusätzlich in die Contact:-Adressen oben einbinden.
Brauchen Sie einen Admin-Endpunkt? Admin-only- und OIDC-Bearer-geschützte Routen sind in der Admin-UI selbst dokumentiert (sichtbar nur für angemeldete Admins auf diesem Host). Die öffentliche API-Fläche auf dieser Seite ist das, wogegen Sie ohne CodeB-Konto integrieren können.

Fragen? Sprechen Sie uns an · Index: Alle öffentlichen APIs