HempData · Schema

ComplianceCheckResult

HempComplianceRegulationsFree

Properties

Name Type Description
state string Two-letter jurisdiction code
state_name stringnull
substance string
product_type string
legal_status string 'unknown' is returned only when no regulation row matches AND the substance is not one the canonical verdict names. When the canon settles the state + substance it answers (source: "canon"); when the
effective_status stringnull Status after applying the federal H.R. 5371 timeline overlay
summary stringnull
confidence_score numbernull 0..1 — always a JSON number, never a string
last_verified stringnull
thc_limit_pct_dryweight numbernull
thc_limit_mg_per_serving numbernull
thc_limit_mg_per_container numbernull
age_restriction numbernull
sources array
verification object
disclaimer string
attribution string
legal_status_source string canon_overlay = the canonical substance verdict raised the stored status (a row is never served less strict than canon); db = the stored value stands (not a claim of human review).
prose_source string Present when the narrative fields (plain_english / summary / summary_140_chars / summary_paragraph) were replaced by the canonical verdict line + verbatim rule basis + fact id, because the canonical v
source string Present only on a row assembled at read time from HempData's verified facts because the regulations table has no row for this state + substance. Such a row has id null, is a substance-level verdict (p
canon_fact_id stringnull The verified fact id behind a canon verdict / canon prose.
canon_verdict string The verdict line /v1/answer prints for this state + substance (canon rows only).
canon_scope string Canon rows answer for the substance; product-form rules are in state_rule, not evaluated.
state_rule stringnull The state's verified fact (canonical phrasing), verbatim.
canon_form_note string Set when a product-form rule in the state's fact (e.g. beverage-specific limits) is not evaluated by a substance-level canon row; the row is then served 'restricted', never 'legal'.
canon_verdict_source string How the canonical verdict reached the status on a canon row: canon = a verified fact settles it; fallback_map = HempData's audited prohibition review; unsettled = the canon declines to settle it (serv
View JSON Schema on GitHub

JSON Schema

hempdata-io-compliance-check-result-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hempdata-io/json-schema/hempdata-io-compliance-check-result-schema.json",
  "title": "ComplianceCheckResult",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/hempdata-io-api-openapi.json#/components/schemas/ComplianceCheckResult",
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "description": "Two-letter jurisdiction code"
    },
    "state_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "substance": {
      "type": "string"
    },
    "product_type": {
      "type": "string"
    },
    "legal_status": {
      "type": "string",
      "enum": [
        "legal",
        "legal_with_restrictions",
        "gray_area",
        "prohibited",
        "unknown"
      ],
      "description": "'unknown' is returned only when no regulation row matches AND the substance is not one the canonical verdict names. When the canon settles the state + substance it answers (source: \"canon\"); when the canon is unsettled on it the answer is gray_area with the canon's own not-settled line."
    },
    "effective_status": {
      "type": [
        "string",
        "null"
      ],
      "description": "Status after applying the federal H.R. 5371 timeline overlay"
    },
    "summary": {
      "type": [
        "string",
        "null"
      ]
    },
    "confidence_score": {
      "type": [
        "number",
        "null"
      ],
      "description": "0..1 — always a JSON number, never a string"
    },
    "last_verified": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "thc_limit_pct_dryweight": {
      "type": [
        "number",
        "null"
      ]
    },
    "thc_limit_mg_per_serving": {
      "type": [
        "number",
        "null"
      ]
    },
    "thc_limit_mg_per_container": {
      "type": [
        "number",
        "null"
      ]
    },
    "age_restriction": {
      "type": [
        "number",
        "null"
      ]
    },
    "sources": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ComplianceSource"
      }
    },
    "verification": {
      "$ref": "#/$defs/ComplianceVerification"
    },
    "disclaimer": {
      "type": "string"
    },
    "attribution": {
      "type": "string"
    },
    "legal_status_source": {
      "type": "string",
      "enum": [
        "canon_overlay",
        "db"
      ],
      "description": "canon_overlay = the canonical substance verdict raised the stored status (a row is never served less strict than canon); db = the stored value stands (not a claim of human review)."
    },
    "prose_source": {
      "type": "string",
      "enum": [
        "canon"
      ],
      "description": "Present when the narrative fields (plain_english / summary / summary_140_chars / summary_paragraph) were replaced by the canonical verdict line + verbatim rule basis + fact id, because the canonical verdict decided this row and the stored text contradicted it."
    },
    "source": {
      "type": "string",
      "enum": [
        "canon"
      ],
      "description": "Present only on a row assembled at read time from HempData's verified facts because the regulations table has no row for this state + substance. Such a row has id null, is a substance-level verdict (product-form rules are not evaluated — see state_rule) and is never written to the table."
    },
    "canon_fact_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "The verified fact id behind a canon verdict / canon prose."
    },
    "canon_verdict": {
      "type": "string",
      "description": "The verdict line /v1/answer prints for this state + substance (canon rows only)."
    },
    "canon_scope": {
      "type": "string",
      "enum": [
        "substance_level"
      ],
      "description": "Canon rows answer for the substance; product-form rules are in state_rule, not evaluated."
    },
    "state_rule": {
      "type": [
        "string",
        "null"
      ],
      "description": "The state's verified fact (canonical phrasing), verbatim."
    },
    "canon_form_note": {
      "type": "string",
      "description": "Set when a product-form rule in the state's fact (e.g. beverage-specific limits) is not evaluated by a substance-level canon row; the row is then served 'restricted', never 'legal'."
    },
    "canon_verdict_source": {
      "type": "string",
      "enum": [
        "canon",
        "fallback_map",
        "unsettled"
      ],
      "description": "How the canonical verdict reached the status on a canon row: canon = a verified fact settles it; fallback_map = HempData's audited prohibition review; unsettled = the canon declines to settle it (served gray_area — not permission)."
    }
  },
  "required": [
    "state",
    "substance",
    "product_type",
    "legal_status",
    "sources",
    "disclaimer"
  ],
  "$defs": {
    "ComplianceSource": {
      "type": "object",
      "description": "One provenance entry backing a compliance answer. Never invented: empty source data in the record yields an empty array, not fabricated citations.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "federal_law",
            "federal_rule",
            "state_statute",
            "agency_rule",
            "case_law",
            "bill_pending",
            "fda_action",
            "carrier_policy"
          ]
        },
        "citation": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "url": {
          "type": [
            "string",
            "null"
          ]
        },
        "retrieved_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "license": {
          "type": "string"
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ]
        },
        "attorney_reviewed": {
          "type": "boolean"
        }
      },
      "required": [
        "type",
        "citation",
        "publisher"
      ]
    },
    "ComplianceVerification": {
      "type": "object",
      "description": "How this answer traces to canonical, human-reviewed verified data. status=verified means the jurisdiction carries a canonical posture fact (statute-cited, primary-sourced). Treat unverified figures as orientation, not a compliance decision.",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "verified",
            "unverified"
          ]
        },
        "fact_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "Canonical fact id (matches docs/REGULATORY_FACTS.md heading)"
        },
        "statute": {
          "type": [
            "string",
            "null"
          ],
          "description": "Statute citation backing the jurisdiction's verified posture"
        },
        "last_verified": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO date of the most recent human verification against primary sources"
        },
        "primary_sources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Primary-source URLs grounding the fact"
        },
        "thc_limit_source": {
          "type": "string",
          "enum": [
            "verified",
            "db"
          ],
          "description": "verified = mg caps reconciled against the canonical verified state limits"
        },
        "legal_status_source": {
          "type": "string",
          "enum": [
            "canon_overlay",
            "db"
          ],
          "description": "canon_overlay = legal status raised by the canonical verdict / prohibition map; db = the stored value stands"
        }
      },
      "required": [
        "status",
        "thc_limit_source",
        "legal_status_source",
        "primary_sources"
      ]
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/hempdata-io-compliance-check-result"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.