{
  "datasetVersion": "1.0.0",
  "asOf": "2026-10-26T03:35:40.010Z",
  "window": {
    "start": "2024-10-01T00:00:00.000Z",
    "end": "2026-10-01T00:00:00.000Z",
    "months": 24,
    "firstMonth": "2024-10",
    "lastMonth": "2026-09"
  },
  "licence": {
    "name": "Creative Commons Attribution 4.0 International (CC BY 4.0)",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Cosmeds regulator transparency dataset",
    "statement": "Free to reuse, republish and build on, including commercially, provided the dataset is credited and linked. Credit the source and link to the dataset page."
  },
  "totals": {
    "verificationEvents": 0,
    "registerChecks": 0,
    "statusChanges": 0,
    "checksNotCompleted": 0,
    "checksNotCompletedPct": null
  },
  "byMonth": [
    {
      "month": "2024-10",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2024-11",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2024-12",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-01",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-02",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-03",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-04",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-05",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-06",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-07",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-08",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-09",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-10",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-11",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2025-12",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-01",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-02",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-03",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-04",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-05",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-06",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-07",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-08",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    },
    {
      "month": "2026-09",
      "verificationEvents": 0,
      "registerChecks": 0,
      "statusChanges": 0,
      "checksNotCompleted": 0
    }
  ],
  "byRegulator": [],
  "byMonthAndRegulator": [],
  "statusChanges": {
    "improved": 0,
    "worsened": 0,
    "unchanged": 0,
    "notComparable": 0,
    "withheldCells": 0,
    "withheldEvents": 0,
    "transitions": []
  },
  "coverage": {
    "credentialsTracked": 0,
    "credentialsEverChecked": 0,
    "credentialsScheduledForRecheck": 0,
    "credentialsCheckedWithin90Days": 0,
    "activeRecheckCoveragePct": null,
    "medianRecheckAgeDays": null,
    "medianRecheckAgeIsFloor": false,
    "recheckAgeCensorDays": 400
  },
  "derivations": [
    "Verification events = rows written to our credential verification log in the labelled month. One event is one logged action, not one clinic.",
    "Register checks = events whose action is initial_verify, re_verify or canary_check AND that addressed a register endpoint — an attempt to read a regulator's register. Manual-lane events (recorded against a manual:// source, such as the NMC operator-assist queue) are excluded, because no register was read.",
    "Status changes = events whose action is status_change or auto_expire — the credential status we hold moved from one value to another.",
    "Checks we could not complete = events whose action is error, plus events whose outcome was inconclusive. These are gaps in our checking, not findings about a clinic.",
    "Transition direction ranks green above amber above red. Moves to or from pending, inconclusive or not_applicable are counted as not comparable, because they mean we could not confirm the entry rather than that anything changed on the register.",
    "Actively re-checked = credentials whose last successful check is within 90 days, over all non-test credentials we hold.",
    "Median re-check age = the exact median of days-since-last-check across those credentials, computed from a day-level histogram censored at 400 days.",
    "Percentages are part ÷ whole to one decimal place, and are null rather than 0% when there is nothing to divide."
  ],
  "limitations": [
    "This dataset describes OUR checking of public registers. It is not a regulator's own record and it is not a complete census of UK aesthetic providers.",
    "Coverage is limited to businesses that have submitted a credential to Cosmeds. Providers who have never been listed here are absent, and their absence means nothing.",
    "A failed check usually means a scrape error, a rate limit or a register outage on our side. It is reported separately and must not be read as a problem with any clinic.",
    "The dataset is aggregate. No business, credential or person is identified, and per-business status is available only where that business already publishes it on its own Cosmeds passport page.",
    "Transition cells counting fewer than 3 events are withheld to prevent re-identification of a single business. Withheld cells are counted in the totals shown beside the table.",
    "Only complete calendar months are published. The current month is excluded because a partial month always reads as a decline.",
    "Log rows written before a regulator code was recorded appear under UNSPECIFIED rather than being dropped.",
    "The NMC register is CAPTCHA-blocked and we do not check it programmatically at all. NMC verification events therefore appear in the event totals but contribute ZERO register checks, and an NMC row showing events with no register checks is correct, not a gap in the data.",
    "Re-check ages are censored at 400 days: a credential last checked longer ago than that is counted at 400 days, so a median in that bucket is reported as a floor."
  ],
  "unavailableSections": [],
  "emptyReason": "No verification events were logged in this window, so there is nothing to aggregate. This is an absence of checking activity, not a finding about any clinic.",
  "schema": "/api/open-data/regulator-transparency/schema.json",
  "page": "/regulator-transparency"
}