import type { Metadata } from "next"; import Link from "next/link"; import { Page, PageHeader } from "@/components/ui/section"; import { RightsBadge } from "@/components/ui/status-badge"; import { apiOptional } from "@/lib/api"; import { DISCLAIMER } from "@/lib/site"; import type { Source } from "@/lib/types"; export const metadata: Metadata = { title: "Data rights & licensing", description: "How Market Atlas classifies the rights attached to every source and what each status allows.", alternates: { canonical: "/licensing" } }; export const dynamic = "force-dynamic"; const STATUSES: Array<[string, string]> = [ ["PUBLIC_OPEN", "Public data with no usage restriction known to us."], ["PUBLIC_ATTRIBUTED", "Public data displayed with attribution to the source (venue feeds, reference files). Not for raw-feed commercial redistribution."], ["OFFICIAL_OPEN_DATA", "Government or central-bank open data (public domain or open licence with attribution)."], ["LICENSED", "Data licensed to Market Atlas (including our sister platform HF Market Data) — redistribution within the licence."], ["DELAYED", "Delayed market data that may be displayed publicly with attribution and a delay notice (Cboe: 15 minutes)."], ["INDICATIVE", "Indicative values (reference fixings, averages) — informational, not tradable."], ["PUBLIC_RESTRICTED_REDISTRIBUTION", "Publicly accessible but redistribution is restricted: used internally for validation only; public values are withheld."], ["RESEARCH_ONLY", "Usable for internal research; never displayed."], ["INTERNAL_ONLY", "Internal signals (Market Atlas' own calendar/monitoring) or values built only from restricted sources."], ["UNKNOWN", "Rights not yet classified — never exposed publicly until reviewed."], ]; export default async function LicensingPage() { const sources = (await apiOptional("/v1/sources"))?.filter((s) => s.category !== "INTERNAL") ?? []; return (

Rights statuses

{STATUSES.map(([s, d]) => ( ))}
Status What it means
{s} {d}

What Market Atlas never does

  • Bypass authentication, paywalls, CAPTCHAs or access controls; impersonate users; use leaked credentials or private sessions.
  • Reverse-engineer protected feeds for unauthorized redistribution or evade a source's restrictions.
  • Present delayed, end-of-day or stale values as real time.

Attributions

{sources.length ? ( {sources.map((s) => ( ))}
Source Rights Notes
{s.homepage ? ( {s.name} ) : ( s.name )}
{s.organization}
{s.rights_notes} {s.terms_url && ( <> {" "} terms ↗ )}
) : (

Source attributions are listed on the sources page.

)}

Disclaimer

{DISCLAIMER} Final legal language will be reviewed before any commercial launch.

); }