{
  "name": "Ekas 10DLC Rule Registry",
  "description": "Every A2P 10DLC obligation Ekas checks before a brand or campaign is submitted, as structured data. One entry per requirement that can independently cause a rejection.",
  "url": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/",
  "counts": {
    "total": 915,
    "approvalGating": 823,
    "postApproval": 92,
    "automated": 745,
    "userVerified": 212,
    "deterministic": 222,
    "blocking": 508,
    "distinctObjects": 531,
    "distinctAuthorities": 70,
    "byLayer": {
      "BRAND": 196,
      "CAMPAIGN": 94,
      "CONSENT_FLOW": 101,
      "MESSAGE_CONTENT": 122,
      "OPERATIONAL": 139,
      "POLICY_PAGE": 157,
      "WEBSITE": 93,
      "CROSS": 13
    },
    "bySeverity": {
      "BLOCKING": 508,
      "HIGH": 252,
      "LOW": 27,
      "MEDIUM": 128
    },
    "byDetectability": {
      "DETERMINISTIC": 222,
      "EXTERNAL_DATA": 81,
      "AI_FORM": 329,
      "HUMAN": 44,
      "UNDETECTABLE_PRE_SUBMISSION": 67,
      "CRAWL": 180,
      "VISION": 44
    },
    "byFailureClass": {
      "RETRY_FIELD": 341,
      "TERMINAL_EXTERNAL": 155,
      "TERMINAL_EVIDENCE": 62,
      "TERMINAL_POLICY": 139,
      "TERMINAL_WEBSITE": 116,
      "HARD_STOP": 87,
      "TERMINAL_ARTIFACT": 15
    },
    "byAuthority": {
      "TCR": 433,
      "AWS": 207,
      "Bandwidth": 209,
      "Twilio": 380,
      "Telnyx": 95,
      "Plivo": 21,
      "HighLevel": 13,
      "Vonage": 21,
      "Sinch": 45,
      "Klaviyo": 15,
      "Textedly": 1,
      "T-Mobile": 127,
      "AT&T": 76,
      "Infobip": 42,
      "CTIA": 256,
      "Quo": 2,
      "Alive5": 1,
      "BeeTexting": 1,
      "FCC": 86,
      "Virginia SB 1339": 1,
      "Texas SB 140": 1,
      "Bird": 32,
      "SignalWire": 4,
      "Aegis": 4,
      "Campaign Verify": 1,
      "Commio": 2,
      "TextUs": 3,
      "Aerialink": 18,
      "LeadConnector": 2,
      "optinfix": 1,
      "Azure ACS": 2,
      "Ringover": 3,
      "Zoom (ISV)": 1,
      "GoHighLevel": 1,
      "Salesmsg": 1,
      "Attentive": 1,
      "Sakari": 4,
      "SIP.US": 1,
      "E-SIGN Act": 1,
      "Ekas (product policy)": 1,
      "FTC": 18,
      "HubSpot": 1,
      "MMA": 6,
      "state law (FL)": 1,
      "all MNOs": 4,
      "state law (ME)": 1,
      "state law": 4,
      "state law (FL, OK, MD, WA, OR, CT, NY, NJ, VA)": 1,
      "state law (UT)": 1,
      "state law (FL, OK, MD, NJ, OR)": 1,
      "state law (TN)": 1,
      "state law (TX, AZ and others)": 1,
      "state law (TX)": 1,
      "state law (VA)": 1,
      "state law (GA, WA and others)": 1,
      "courts": 1,
      "Verizon": 2,
      "all service providers": 1,
      "mytcrplus": 2,
      "PossibleNOW": 1,
      "practice": 6,
      "researcher recommendation": 1,
      "CCPA": 19,
      "Postscript": 2,
      "MessageDesk": 3,
      "GDPR": 3,
      "State law": 1,
      "MessageIQ": 1,
      "Zoom": 2,
      "EZ Texting": 1
    }
  },
  "formats": {
    "everything": "https://ekas.io/rules/10dlc/registry.json",
    "everythingMarkdown": "https://ekas.io/rules/10dlc/registry.md",
    "perLayer": "https://ekas.io/rules/10dlc/{layer}.json",
    "perRule": "https://ekas.io/rules/10dlc/{layer}/{rule-id}.json",
    "perRuleMarkdown": "https://ekas.io/rules/10dlc/{layer}/{rule-id}.md",
    "schema": "https://ekas.io/rules/10dlc/schema.json"
  },
  "layers": [
    {
      "id": "BRAND",
      "slug": "brand",
      "count": 196,
      "name": "Brand",
      "url": "https://ekas.io/rules/10dlc/brand/",
      "json": "https://ekas.io/rules/10dlc/brand.json",
      "markdown": "https://ekas.io/rules/10dlc/brand.md"
    },
    {
      "id": "CAMPAIGN",
      "slug": "campaign",
      "count": 94,
      "name": "Campaign",
      "url": "https://ekas.io/rules/10dlc/campaign/",
      "json": "https://ekas.io/rules/10dlc/campaign.json",
      "markdown": "https://ekas.io/rules/10dlc/campaign.md"
    },
    {
      "id": "CROSS",
      "slug": "cross",
      "count": 13,
      "name": "Brand ↔ campaign",
      "url": "https://ekas.io/rules/10dlc/cross/",
      "json": "https://ekas.io/rules/10dlc/cross.json",
      "markdown": "https://ekas.io/rules/10dlc/cross.md"
    },
    {
      "id": "MESSAGE_CONTENT",
      "slug": "message-content",
      "count": 122,
      "name": "Message content",
      "url": "https://ekas.io/rules/10dlc/message-content/",
      "json": "https://ekas.io/rules/10dlc/message-content.json",
      "markdown": "https://ekas.io/rules/10dlc/message-content.md"
    },
    {
      "id": "CONSENT_FLOW",
      "slug": "consent-flow",
      "count": 101,
      "name": "Consent flow",
      "url": "https://ekas.io/rules/10dlc/consent-flow/",
      "json": "https://ekas.io/rules/10dlc/consent-flow.json",
      "markdown": "https://ekas.io/rules/10dlc/consent-flow.md"
    },
    {
      "id": "WEBSITE",
      "slug": "website",
      "count": 93,
      "name": "Website",
      "url": "https://ekas.io/rules/10dlc/website/",
      "json": "https://ekas.io/rules/10dlc/website.json",
      "markdown": "https://ekas.io/rules/10dlc/website.md"
    },
    {
      "id": "POLICY_PAGE",
      "slug": "policy-page",
      "count": 157,
      "name": "Policy pages",
      "url": "https://ekas.io/rules/10dlc/policy-page/",
      "json": "https://ekas.io/rules/10dlc/policy-page.json",
      "markdown": "https://ekas.io/rules/10dlc/policy-page.md"
    },
    {
      "id": "OPERATIONAL",
      "slug": "operational",
      "count": 139,
      "name": "Operational",
      "url": "https://ekas.io/rules/10dlc/operational/",
      "json": "https://ekas.io/rules/10dlc/operational.json",
      "markdown": "https://ekas.io/rules/10dlc/operational.md"
    }
  ],
  "rules": [
    {
      "id": "BRD-001",
      "title": "A legal company name is required for every entity but a sole proprietor",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-001/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-001.json"
    },
    {
      "id": "BRD-002",
      "title": "Legal name must match the IRS record for the EIN",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-002/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-002.json"
    },
    {
      "id": "BRD-003",
      "title": "Legal name must carry its exact entity suffix as filed",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-003/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-003.json"
    },
    {
      "id": "BRD-006",
      "title": "Submit every name line above the address on a multi-line IRS record",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-006/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-006.json"
    },
    {
      "id": "BRD-007",
      "title": "TCR takes only the first line of the IRS-registered name",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-007/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-007.json"
    },
    {
      "id": "BRD-008",
      "title": "Legal name must not carry an appended personal name or role",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-008/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-008.json"
    },
    {
      "id": "BRD-009",
      "title": "The legal name field takes the legal name, not the trading name",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-009/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-009.json"
    },
    {
      "id": "BRD-010",
      "title": "Take the legal name from the CP-575 or 147C, never a W-2 or W-9",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-010/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-010.json"
    },
    {
      "id": "BRD-011",
      "title": "A legal business name may back only one brand across the whole registry",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-011/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-011.json"
    },
    {
      "id": "BRD-012",
      "title": "Name fields must read as natural business text",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-012/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-012.json"
    },
    {
      "id": "BRD-013",
      "title": "A brand must be a business, not a person",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-013/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-013.json"
    },
    {
      "id": "BRD-014",
      "title": "An acquired business registers the details it filed taxes under",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-014/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-014.json"
    },
    {
      "id": "BRD-015",
      "title": "A brand covers exactly one sender",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-015/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-015.json"
    },
    {
      "id": "BRD-017",
      "title": "A tax ID is required for every entity but a sole proprietor",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-017/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-017.json"
    },
    {
      "id": "BRD-019",
      "title": "EIN must be nine digits",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-019/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-019.json"
    },
    {
      "id": "BRD-020",
      "title": "Submit the US EIN hyphenated",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-020/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-020.json"
    },
    {
      "id": "BRD-021",
      "title": "An SSN is not a business registration number",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-021/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-021.json"
    },
    {
      "id": "BRD-022",
      "title": "A DUNS number is not a US business registration number",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-022/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-022.json"
    },
    {
      "id": "BRD-023",
      "title": "The identifier type must be one of the supported values",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-023/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-023.json"
    },
    {
      "id": "BRD-024",
      "title": "The identifier value must match the type declared for it",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-024/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-024.json"
    },
    {
      "id": "BRD-025",
      "title": "The issuing country must be declared, and must match the country of registration",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-025/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-025.json"
    },
    {
      "id": "BRD-026",
      "title": "An alternate identifier needs its type alongside it",
      "layer": "BRAND",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-026/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-026.json"
    },
    {
      "id": "BRD-027",
      "title": "EIN must be old enough to have propagated to IRS records",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-027/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-027.json"
    },
    {
      "id": "BRD-028",
      "title": "A business absent from the verification databases must upload its registration document",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-028/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-028.json"
    },
    {
      "id": "BRD-032",
      "title": "Submit the identifier in the form the issuing country requires",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-032/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-032.json"
    },
    {
      "id": "BRD-034",
      "title": "Validate a non-US identifier against its home register before submitting",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-034/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-034.json"
    },
    {
      "id": "BRD-035",
      "title": "The country of registration must be on the permitted list",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-035/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-035.json"
    },
    {
      "id": "BRD-036",
      "title": "A non-US brand should expect automated identity verification to fail",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-036/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-036.json"
    },
    {
      "id": "BRD-037",
      "title": "Low-Volume Standard is not available to a non-US brand that needs vetting",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-037/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-037.json"
    },
    {
      "id": "BRD-038",
      "title": "Some providers require an external vet for every non-US brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-038/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-038.json"
    },
    {
      "id": "BRD-039",
      "title": "The sending-volume tier decides whether the sole-proprietor path is available",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-039/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-039.json"
    },
    {
      "id": "BRD-040",
      "title": "Entity type must be one of the five supported values",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-040/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-040.json"
    },
    {
      "id": "BRD-041",
      "title": "The entity type must match the classification on the tax record",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-041/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-041.json"
    },
    {
      "id": "BRD-042",
      "title": "A non-US organisation registers as private for profit",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-042/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-042.json"
    },
    {
      "id": "BRD-043",
      "title": "The business-type field takes its own enum, not the entity type",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-043/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-043.json"
    },
    {
      "id": "BRD-044",
      "title": "Changing an identity field re-runs verification, and costs the fee again",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-044/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-044.json"
    },
    {
      "id": "BRD-045",
      "title": "PUBLIC_PROFIT means the shares actually trade",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-045/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-045.json"
    },
    {
      "id": "BRD-047",
      "title": "Public companies must supply stock symbol and exchange",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-047/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-047.json"
    },
    {
      "id": "BRD-048",
      "title": "The stock exchange must be a recognised enum value",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-048/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-048.json"
    },
    {
      "id": "BRD-049",
      "title": "Stock fields must be empty for non-public entities",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-049/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-049.json"
    },
    {
      "id": "BRD-050",
      "title": "A stock symbol may back only one brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-050/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-050.json"
    },
    {
      "id": "BRD-051",
      "title": "Russell 3000 membership sets the starting carrier class",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-051/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-051.json"
    },
    {
      "id": "BRD-053",
      "title": "Tax-exempt status must be verified against the IRS registers",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-053/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-053.json"
    },
    {
      "id": "BRD-055",
      "title": "Non-profit classification must be consistent across every field",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-055/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-055.json"
    },
    {
      "id": "BRD-057",
      "title": "A charity brand needs an arm's-length accreditation",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-057/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-057.json"
    },
    {
      "id": "BRD-058",
      "title": "Keep the charity evidence bundle together",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-058/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-058.json"
    },
    {
      "id": "BRD-059",
      "title": "A unified fundraising short code needs five years of operating history",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-059/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-059.json"
    },
    {
      "id": "BRD-060",
      "title": "A 501(c)(3) may not run certain use cases",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-060/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-060.json"
    },
    {
      "id": "BRD-062",
      "title": "GOVERNMENT is for US government bodies only",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-062/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-062.json"
    },
    {
      "id": "BRD-064",
      "title": "A government brand must carry the government attribute to get its class",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-064/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-064.json"
    },
    {
      "id": "BRD-065",
      "title": "Sole proprietor must have no EIN",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-065/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-065.json"
    },
    {
      "id": "BRD-067",
      "title": "A business trading under a DBA belongs on the standard tier",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-067/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-067.json"
    },
    {
      "id": "BRD-068",
      "title": "Sole proprietor brand name must be a person, not a company",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-068/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-068.json"
    },
    {
      "id": "BRD-070",
      "title": "The verification number must be a real US or Canadian mobile",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-070/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-070.json"
    },
    {
      "id": "BRD-072",
      "title": "Sole proprietor mobile number has a reuse limit",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-072/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-072.json"
    },
    {
      "id": "BRD-075",
      "title": "The verification text must be answered within 24 hours",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-075/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-075.json"
    },
    {
      "id": "BRD-076",
      "title": "Changing the mobile number re-runs the verification",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-076/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-076.json"
    },
    {
      "id": "BRD-081",
      "title": "A sole-proprietor brand cannot buy its way to more throughput",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-081/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-081.json"
    },
    {
      "id": "BRD-082",
      "title": "RCS brand assets are not available on the sole-proprietor tier",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-082/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-082.json"
    },
    {
      "id": "BRD-084",
      "title": "Sole proprietor is not supported by every provider",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-084/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-084.json"
    },
    {
      "id": "BRD-086",
      "title": "Sole-proprietor throughput is capped, and the CSP enforces it",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/brand/brd-086/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-086.json"
    },
    {
      "id": "BRD-087",
      "title": "Monthly sole-proprietor traffic reports are due by the 7th",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/brand/brd-087/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-087.json"
    },
    {
      "id": "BRD-090",
      "title": "A sole-proprietor brand cannot move between providers",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-090/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-090.json"
    },
    {
      "id": "BRD-091",
      "title": "A complete physical business address is required",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-091/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-091.json"
    },
    {
      "id": "BRD-092",
      "title": "US and Canadian addresses use the two-letter state code",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-092/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-092.json"
    },
    {
      "id": "BRD-093",
      "title": "The address must match the registration record component by component",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-093/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-093.json"
    },
    {
      "id": "BRD-095",
      "title": "The address must validate as deliverable",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-095/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-095.json"
    },
    {
      "id": "BRD-096",
      "title": "Brand address must be a physical address, not a PO box",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-096/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-096.json"
    },
    {
      "id": "BRD-097",
      "title": "Include the suite or unit number the registry holds",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-097/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-097.json"
    },
    {
      "id": "BRD-098",
      "title": "Register the company address, not the branch you work from",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-098/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-098.json"
    },
    {
      "id": "BRD-099",
      "title": "The address is checked against spam and scam complaint data",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-099/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-099.json"
    },
    {
      "id": "BRD-101",
      "title": "Express PIN delivery needs a real street address",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-101/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-101.json"
    },
    {
      "id": "BRD-102",
      "title": "A brand support phone number is required",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-102/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-102.json"
    },
    {
      "id": "BRD-103",
      "title": "The support phone must be in E.164",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-103/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-103.json"
    },
    {
      "id": "BRD-104",
      "title": "The support phone must reach the business",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-104/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-104.json"
    },
    {
      "id": "BRD-106",
      "title": "The business phone should be findable in a web search",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-106/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-106.json"
    },
    {
      "id": "BRD-107",
      "title": "The representative's phone number may back only one brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-107/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-107.json"
    },
    {
      "id": "BRD-108",
      "title": "The brand support email must be well formed",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-108/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-108.json"
    },
    {
      "id": "BRD-109",
      "title": "Brand contact email must not use a free consumer domain",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-109/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-109.json"
    },
    {
      "id": "BRD-111",
      "title": "The contact email domain must be provably the brand's",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-111/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-111.json"
    },
    {
      "id": "BRD-112",
      "title": "Brand contact email must not be a role or distribution address",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-112/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-112.json"
    },
    {
      "id": "BRD-114",
      "title": "Disposable mailboxes are refused outright",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-114/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-114.json"
    },
    {
      "id": "BRD-115",
      "title": "The email domain must resolve",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-115/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-115.json"
    },
    {
      "id": "BRD-117",
      "title": "A public company must supply a business contact email",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-117/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-117.json"
    },
    {
      "id": "BRD-119",
      "title": "Confirm the mailbox accepts outside mail before triggering 2FA",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-119/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-119.json"
    },
    {
      "id": "BRD-120",
      "title": "Changing a public brand's contact email resets its identity",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-120/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-120.json"
    },
    {
      "id": "BRD-121",
      "title": "The support contact must be the end customer's, not the agency's",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-121/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-121.json"
    },
    {
      "id": "BRD-122",
      "title": "A well-known brand name on a consumer mail domain reads as impersonation",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-122/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-122.json"
    },
    {
      "id": "BRD-125",
      "title": "The website URL must carry an explicit scheme",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-125/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-125.json"
    },
    {
      "id": "BRD-126",
      "title": "The brand website is the root domain, not a page inside it",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-126/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-126.json"
    },
    {
      "id": "BRD-132",
      "title": "The website domain must relate recognisably to the brand name",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-132/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-132.json"
    },
    {
      "id": "BRD-135",
      "title": "A website may back only one brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-135/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-135.json"
    },
    {
      "id": "BRD-143",
      "title": "A brand with no website must attach its policy document",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-143/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-143.json"
    },
    {
      "id": "BRD-144",
      "title": "The registered vertical must match the business on the website",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-144/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-144.json"
    },
    {
      "id": "BRD-145",
      "title": "A display name is required, and so is the DBA field",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-145/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-145.json"
    },
    {
      "id": "BRD-146",
      "title": "The DBA must be consistent with the legal name and every other field",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-146/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-146.json"
    },
    {
      "id": "BRD-147",
      "title": "A DBA used publicly must be registered on the brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-147/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-147.json"
    },
    {
      "id": "BRD-149",
      "title": "The opt-in evidence must be on the brand's own domain",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-149/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-149.json"
    },
    {
      "id": "BRD-150",
      "title": "The vertical must be one of the 23 registry values",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-150/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-150.json"
    },
    {
      "id": "BRD-151",
      "title": "Vertical must come from the correct provider-specific list",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-151/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-151.json"
    },
    {
      "id": "BRD-153",
      "title": "brandRelationship must be one of the five account tiers",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-153/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-153.json"
    },
    {
      "id": "BRD-154",
      "title": "The account tier cannot be changed more than once a quarter",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-154/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-154.json"
    },
    {
      "id": "BRD-155",
      "title": "Regions of operation come from a five-value enum",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-155/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-155.json"
    },
    {
      "id": "BRD-156",
      "title": "The representative needs an enum job position and their real title",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-156/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-156.json"
    },
    {
      "id": "BRD-157",
      "title": "Say whether you are the business or a reseller registering for it",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-157/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-157.json"
    },
    {
      "id": "BRD-158",
      "title": "Social profiles corroborate a brand that is otherwise thin",
      "layer": "BRAND",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-158/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-158.json"
    },
    {
      "id": "BRD-160",
      "title": "Register the message sender, not the agency or platform",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-160/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-160.json"
    },
    {
      "id": "BRD-163",
      "title": "Name the ISV on a toll-free verification filed for someone else",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-163/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-163.json"
    },
    {
      "id": "BRD-164",
      "title": "The named contact must be authorised to act for the business",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-164/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-164.json"
    },
    {
      "id": "BRD-165",
      "title": "A toll-free contact needs a full first and last name",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-165/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-165.json"
    },
    {
      "id": "BRD-166",
      "title": "The sender must be identified and authenticated before any message goes out",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-166/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-166.json"
    },
    {
      "id": "BRD-168",
      "title": "Consent must name the seller whose messages are delivered",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-168/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-168.json"
    },
    {
      "id": "BRD-169",
      "title": "Decide whether this brand is the seller or the telemarketer",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-169/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-169.json"
    },
    {
      "id": "BRD-170",
      "title": "An agency arrangement does not shield either party in Virginia",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-170/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-170.json"
    },
    {
      "id": "BRD-172",
      "title": "Document every Texas exemption you rely on",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-172/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-172.json"
    },
    {
      "id": "BRD-173",
      "title": "One brand per tax ID",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-173/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-173.json"
    },
    {
      "id": "BRD-174",
      "title": "Per-EIN brand counts are capped even where several are allowed",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-174/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-174.json"
    },
    {
      "id": "BRD-177",
      "title": "A duplicate on any identity field blocks the submission",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-177/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-177.json"
    },
    {
      "id": "BRD-178",
      "title": "Brand contact details must be unique across brands",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-178/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-178.json"
    },
    {
      "id": "BRD-181",
      "title": "A CSP has a default cap on how many brands it may register",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-181/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-181.json"
    },
    {
      "id": "BRD-182",
      "title": "A brand has a default cap on how many campaigns it may carry",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-182/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-182.json"
    },
    {
      "id": "BRD-186",
      "title": "Some providers lock a verified brand entirely",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-186/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-186.json"
    },
    {
      "id": "BRD-189",
      "title": "A failed brand can be updated by API and not in the console",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-189/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-189.json"
    },
    {
      "id": "BRD-191",
      "title": "The two bundle identifiers must not be transposed",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-191/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-191.json"
    },
    {
      "id": "BRD-194",
      "title": "Subscribe to brand status events instead of polling",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-194/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-194.json"
    },
    {
      "id": "BRD-195",
      "title": "Deactivate every campaign before deleting a brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-195/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-195.json"
    },
    {
      "id": "BRD-197",
      "title": "Brand deletion cannot be undone",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-197/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-197.json"
    },
    {
      "id": "BRD-199",
      "title": "Do not move suspended traffic onto a new brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-199/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-199.json"
    },
    {
      "id": "BRD-200",
      "title": "A suspension follows the tax ID to the next brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-200/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-200.json"
    },
    {
      "id": "BRD-203",
      "title": "The starter brand class is deprecated",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-203/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-203.json"
    },
    {
      "id": "BRD-204",
      "title": "Test against mock brands, not real ones",
      "layer": "BRAND",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-204/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-204.json"
    },
    {
      "id": "BRD-207",
      "title": "Campaigns cannot be submitted while vetting is in review",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-207/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-207.json"
    },
    {
      "id": "BRD-208",
      "title": "A score below the threshold means fixing the data, not re-vetting",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-208/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-208.json"
    },
    {
      "id": "BRD-209",
      "title": "The score maps to specific throughput terms",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-209/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-209.json"
    },
    {
      "id": "BRD-210",
      "title": "A low trust score blocks or narrows campaign registration",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-210/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-210.json"
    },
    {
      "id": "BRD-211",
      "title": "Some score inputs cannot be fixed by editing the form",
      "layer": "BRAND",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-211/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-211.json"
    },
    {
      "id": "BRD-212",
      "title": "Vetting is not a remedy for a rejection",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-212/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-212.json"
    },
    {
      "id": "BRD-214",
      "title": "An enhanced vet buys nothing on top of a top standard score",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-214/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-214.json"
    },
    {
      "id": "BRD-215",
      "title": "The vetting provider must support this entity type and country",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-215/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-215.json"
    },
    {
      "id": "BRD-216",
      "title": "An imported vet must match the brand exactly, and carry its token",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-216/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-216.json"
    },
    {
      "id": "BRD-217",
      "title": "Some vet classes cannot be imported at all",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-217/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-217.json"
    },
    {
      "id": "BRD-218",
      "title": "Import the same token into every instance of the same brand",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-218/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-218.json"
    },
    {
      "id": "BRD-221",
      "title": "Respect the cooldown before re-ordering a vet",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-221/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-221.json"
    },
    {
      "id": "BRD-222",
      "title": "Editing the brand expires a completed vet",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-222/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-222.json"
    },
    {
      "id": "BRD-223",
      "title": "Website and contact email must be in place before an identity-plus vet",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-223/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-223.json"
    },
    {
      "id": "BRD-224",
      "title": "Public companies must clear Authentication+ before campaigns",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-224/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-224.json"
    },
    {
      "id": "BRD-225",
      "title": "Authentication+ must now be ordered explicitly",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-225/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-225.json"
    },
    {
      "id": "BRD-226",
      "title": "The 2FA PIN must be completed inside the vet's window",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-226/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-226.json"
    },
    {
      "id": "BRD-227",
      "title": "The emailed verification link expires after a week",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-227/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-227.json"
    },
    {
      "id": "BRD-228",
      "title": "Do not queue a second Authentication+ vet behind a pending one",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-228/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-228.json"
    },
    {
      "id": "BRD-229",
      "title": "An unanswered 2FA is not an appealable failure",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-229/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-229.json"
    },
    {
      "id": "BRD-230",
      "title": "Identity-plus vetting is for public companies only",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-230/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-230.json"
    },
    {
      "id": "BRD-231",
      "title": "Identity information is frozen once Authentication+ completes",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-231/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-231.json"
    },
    {
      "id": "BRD-232",
      "title": "Only three registration shapes may skip the automatic vet",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-232/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-232.json"
    },
    {
      "id": "BRD-233",
      "title": "Some providers require vetting for every use case above the lowest tier",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-233/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-233.json"
    },
    {
      "id": "BRD-234",
      "title": "Vet before the campaign, not after the volume disappoints",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-234/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-234.json"
    },
    {
      "id": "BRD-235",
      "title": "The daily carrier cap is an EIN-level allowance, pooled across CSPs",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-235/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-235.json"
    },
    {
      "id": "BRD-237",
      "title": "Short-code assignment needs a successful vetting status",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-237/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-237.json"
    },
    {
      "id": "BRD-238",
      "title": "Re-vet annually",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/brand/brd-238/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-238.json"
    },
    {
      "id": "BRD-241",
      "title": "Political vetting is satisfied by exactly one recognised artefact",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-241/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-241.json"
    },
    {
      "id": "BRD-242",
      "title": "A tax-exempt organisation must not order a political vet",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-242/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-242.json"
    },
    {
      "id": "BRD-243",
      "title": "A 527 organisation needs a token and its filing reference on record",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-243/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-243.json"
    },
    {
      "id": "BRD-244",
      "title": "A political token imports only onto an eligible, campaign-free brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-244/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-244.json"
    },
    {
      "id": "BRD-246",
      "title": "A political token is used once and once only",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-246/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-246.json"
    },
    {
      "id": "BRD-247",
      "title": "Check the token has not expired before importing it",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-247/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-247.json"
    },
    {
      "id": "BRD-248",
      "title": "One political import at a time",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-248/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-248.json"
    },
    {
      "id": "BRD-249",
      "title": "The political filing email must match the registration",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-249/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-249.json"
    },
    {
      "id": "BRD-250",
      "title": "The political vetting contact must be named in the registration",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-250/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-250.json"
    },
    {
      "id": "BRD-251",
      "title": "A federal donation programme needs a current FEC registration",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-251/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-251.json"
    },
    {
      "id": "BRD-254",
      "title": "Appeal only a vet that has finished",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-254/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-254.json"
    },
    {
      "id": "BRD-255",
      "title": "Choose an appeal category valid for this entity type",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-255/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-255.json"
    },
    {
      "id": "BRD-256",
      "title": "The low-score category does not apply to an identity appeal",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-256/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-256.json"
    },
    {
      "id": "BRD-257",
      "title": "Keep the appeal explanation inside its limit",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-257/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-257.json"
    },
    {
      "id": "BRD-258",
      "title": "Respect the appeal attachment limits",
      "layer": "BRAND",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-258/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-258.json"
    },
    {
      "id": "BRD-260",
      "title": "Attach every page of a multi-page document",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-260/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-260.json"
    },
    {
      "id": "BRD-261",
      "title": "Only federal tax documentation counts in an appeal",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-261/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-261.json"
    },
    {
      "id": "BRD-263",
      "title": "Appeal a missing status attribute even on a verified brand",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-263/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-263.json"
    },
    {
      "id": "BRD-267",
      "title": "Every brand field must be within its maximum length",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-267/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-267.json"
    },
    {
      "id": "BRD-268",
      "title": "Brand contact fields must contain no spaces",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-268/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-268.json"
    },
    {
      "id": "BRD-269",
      "title": "No emoji in any brand field",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-269/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-269.json"
    },
    {
      "id": "BRD-270",
      "title": "Placeholder values are not answers",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-270/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-270.json"
    },
    {
      "id": "BRD-271",
      "title": "Brand content must be submitted in English",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-271/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-271.json"
    },
    {
      "id": "BRD-272",
      "title": "The end-business block must be complete, not partly filled",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-272/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-272.json"
    },
    {
      "id": "BRD-273",
      "title": "Contact, email, address and URL must each stand up on their own",
      "layer": "BRAND",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-273/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-273.json"
    },
    {
      "id": "BRD-274",
      "title": "RCS brand assets have exact dimension, size and format constraints",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-274/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-274.json"
    },
    {
      "id": "BRD-275",
      "title": "Brands that buy, sell or share consumer data are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-275/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-275.json"
    },
    {
      "id": "BRD-276",
      "title": "Gambling, betting and lottery brands are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-276/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-276.json"
    },
    {
      "id": "BRD-277",
      "title": "High-risk financial services brands are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-277/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-277.json"
    },
    {
      "id": "BRD-278",
      "title": "Cannabis, CBD and related brands are not carried, whatever the traffic",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-278/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-278.json"
    },
    {
      "id": "BRD-279",
      "title": "Third-party job boards are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-279/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-279.json"
    },
    {
      "id": "BRD-281",
      "title": "Sweepstakes brands are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-281/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-281.json"
    },
    {
      "id": "BRD-282",
      "title": "Debt collection, debt relief and credit repair brands are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-282/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-282.json"
    },
    {
      "id": "BRD-283",
      "title": "Get-rich-quick, work-from-home and MLM brands are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-283/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-283.json"
    },
    {
      "id": "BRD-284",
      "title": "Controlled substance, prescription drug and pyrotechnics brands are not carried",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-284/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-284.json"
    },
    {
      "id": "BRD-285",
      "title": "The brand must not be on the provider's own blocklist",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-285/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-285.json"
    },
    {
      "id": "BRD-286",
      "title": "Fabricated business details are a permanent disqualification",
      "layer": "BRAND",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/brand/brd-286/",
      "json": "https://ekas.io/rules/10dlc/brand/brd-286.json"
    },
    {
      "id": "CMP-003",
      "title": "Message flow must not begin or end with whitespace",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-003/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-003.json"
    },
    {
      "id": "CMP-010",
      "title": "HELP and STOP replies should fit in a single 160-character segment",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-010/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-010.json"
    },
    {
      "id": "CMP-014",
      "title": "Keyword entries must carry no surrounding whitespace",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-014/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-014.json"
    },
    {
      "id": "CMP-016",
      "title": "Contact email and phone must contain no spaces",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-016/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-016.json"
    },
    {
      "id": "CMP-017",
      "title": "Every mandatory campaign attribute must be explicitly set",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-017/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-017.json"
    },
    {
      "id": "CMP-018",
      "title": "Attributes that do not apply to the registration type must be empty",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-018/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-018.json"
    },
    {
      "id": "CMP-019",
      "title": "Policy link fields must be 255 characters or fewer",
      "layer": "CAMPAIGN",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-019/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-019.json"
    },
    {
      "id": "CMP-021",
      "title": "Reference id must be 50 characters or fewer",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-021/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-021.json"
    },
    {
      "id": "CMP-023",
      "title": "Declared embedded links must come with a sample URL",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-023/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-023.json"
    },
    {
      "id": "CMP-024",
      "title": "Registration fields must be written in English",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-024/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-024.json"
    },
    {
      "id": "CMP-028",
      "title": "Opt-in evidence must be a JPG, PNG or PDF under 500 KB",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-028/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-028.json"
    },
    {
      "id": "CMP-035",
      "title": "The description must describe this programme, not messaging in general",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-035/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-035.json"
    },
    {
      "id": "CMP-037",
      "title": "The description must name the business that sends the messages",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-037/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-037.json"
    },
    {
      "id": "CMP-038",
      "title": "Campaign fields must reference one company, not several",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-038/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-038.json"
    },
    {
      "id": "CMP-040",
      "title": "Promotional content anywhere requires MARKETING to be declared",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-040/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-040.json"
    },
    {
      "id": "CMP-041",
      "title": "The description must say how often the messages come",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-041/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-041.json"
    },
    {
      "id": "CMP-042",
      "title": "A programme that asks for money must say so",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-042/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-042.json"
    },
    {
      "id": "CMP-045",
      "title": "The programme must be application-to-person, not personal messaging",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-045/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-045.json"
    },
    {
      "id": "CMP-048",
      "title": "Emergency framing requires the emergency use case",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-048/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-048.json"
    },
    {
      "id": "CMP-050",
      "title": "The description must not contain personal data",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-050/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-050.json"
    },
    {
      "id": "CMP-051",
      "title": "A first-party lender must use the phrase the reviewer looks for",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-051/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-051.json"
    },
    {
      "id": "CMP-052",
      "title": "A website that is not live yet must be declared as such",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-052/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-052.json"
    },
    {
      "id": "CMP-053",
      "title": "A site a US reviewer cannot reach must be declared as such",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-053/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-053.json"
    },
    {
      "id": "CMP-056",
      "title": "An ISV registering for a customer must supply the customer's details",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-056/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-056.json"
    },
    {
      "id": "CMP-057",
      "title": "A platform registering its own product must say that it is",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-057/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-057.json"
    },
    {
      "id": "CMP-058",
      "title": "Some programmes are better served by another channel",
      "layer": "CAMPAIGN",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-058/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-058.json"
    },
    {
      "id": "CMP-059",
      "title": "Message flow must describe the mechanism end to end",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-059/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-059.json"
    },
    {
      "id": "CMP-060",
      "title": "Every opt-in method in use must be listed in the message flow",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-060/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-060.json"
    },
    {
      "id": "CMP-061",
      "title": "Each declared method needs its own complete workflow paragraph",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-061/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-061.json"
    },
    {
      "id": "CMP-062",
      "title": "Declared opt-in methods must all actually be used",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-062/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-062.json"
    },
    {
      "id": "CMP-063",
      "title": "A method you use and did not declare is the one that will be found",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-063/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-063.json"
    },
    {
      "id": "CMP-064",
      "title": "The opt-in page URL must be a deep link to the consent surface",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-064/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-064.json"
    },
    {
      "id": "CMP-065",
      "title": "A hosted artifact is required when the opt-in is not publicly crawlable",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-065/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-065.json"
    },
    {
      "id": "CMP-067",
      "title": "The hosted evidence URL must return the artifact, not an error page",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-067/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-067.json"
    },
    {
      "id": "CMP-068",
      "title": "Evidence links must keep working after approval",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-068/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-068.json"
    },
    {
      "id": "CMP-069",
      "title": "A URL mentioned in the CTA must also be given as a link field",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-069/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-069.json"
    },
    {
      "id": "CMP-072",
      "title": "Message flow must state the message types",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-072/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-072.json"
    },
    {
      "id": "CMP-073",
      "title": "Message flow must state message frequency",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-073/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-073.json"
    },
    {
      "id": "CMP-074",
      "title": "Message flow must state that rates may apply",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-074/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-074.json"
    },
    {
      "id": "CMP-075",
      "title": "Message flow must state how to get help",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-075/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-075.json"
    },
    {
      "id": "CMP-076",
      "title": "Message flow must state how to opt out",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-076/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-076.json"
    },
    {
      "id": "CMP-077",
      "title": "Message flow must carry the terms",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-077/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-077.json"
    },
    {
      "id": "CMP-078",
      "title": "Message flow must carry the privacy commitment",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-078/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-078.json"
    },
    {
      "id": "CMP-079",
      "title": "Message flow must describe the consumer-facing opt-in action",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-079/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-079.json"
    },
    {
      "id": "CMP-080",
      "title": "The disclosure must be reproduced in the registration, not only on the site",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-080/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-080.json"
    },
    {
      "id": "CMP-082",
      "title": "Message flow must state where the opt-in occurs",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-082/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-082.json"
    },
    {
      "id": "CMP-084",
      "title": "Message flow must state who opts in and when",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-084/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-084.json"
    },
    {
      "id": "CMP-085",
      "title": "Message flow must state how consent is recorded",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-085/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-085.json"
    },
    {
      "id": "CMP-088",
      "title": "The opt-in path should follow a published flow template",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-088/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-088.json"
    },
    {
      "id": "CMP-089",
      "title": "Some opt-in must be described somewhere",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-089/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-089.json"
    },
    {
      "id": "CMP-091",
      "title": "Implied consent needs a conversation the consumer started",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-091/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-091.json"
    },
    {
      "id": "CMP-092",
      "title": "Consent grade must match content grade",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-092/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-092.json"
    },
    {
      "id": "CMP-094",
      "title": "Each declared opt-in method needs its own evidence",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-094/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-094.json"
    },
    {
      "id": "CMP-095",
      "title": "A web opt-in must supply the form itself, not just describe it",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-095/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-095.json"
    },
    {
      "id": "CMP-096",
      "title": "Keyword opt-in requires both the keywords and the confirmation text",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-096/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-096.json"
    },
    {
      "id": "CMP-097",
      "title": "A keyword opt-in must give the keyword and the number to text it to",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-097/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-097.json"
    },
    {
      "id": "CMP-100",
      "title": "The declared opt-in methods must match the flow described",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-100/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-100.json"
    },
    {
      "id": "CMP-101",
      "title": "A QR opt-in must supply the QR code image itself",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-101/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-101.json"
    },
    {
      "id": "CMP-103",
      "title": "A QR flow must say where the code leads",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-103/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-103.json"
    },
    {
      "id": "CMP-112",
      "title": "A promotional programme cannot rest on spoken consent alone",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-112/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-112.json"
    },
    {
      "id": "CMP-113",
      "title": "Debt collection cannot rest on a spoken opt-in",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-113/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-113.json"
    },
    {
      "id": "CMP-115",
      "title": "A point-of-sale opt-in must show the sign the customer read",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-115/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-115.json"
    },
    {
      "id": "CMP-116",
      "title": "An email-activated opt-in must show the email that asked",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-116/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-116.json"
    },
    {
      "id": "CMP-118",
      "title": "A pop-up opt-in must be declared as one",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-118/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-118.json"
    },
    {
      "id": "CMP-119",
      "title": "Consent collected on a third-party platform must still name the registered brand",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-119/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-119.json"
    },
    {
      "id": "CMP-122",
      "title": "The opt-in screenshot must show the terms and privacy links",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-122/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-122.json"
    },
    {
      "id": "CMP-124",
      "title": "A multi-step consent flow must be captured at every step",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-124/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-124.json"
    },
    {
      "id": "CMP-127",
      "title": "A consent surface a reviewer cannot reach must be declared as such",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-127/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-127.json"
    },
    {
      "id": "CMP-128",
      "title": "An evidence field with nothing to say should be left empty",
      "layer": "CAMPAIGN",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-128/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-128.json"
    },
    {
      "id": "CMP-129",
      "title": "Evidence must come from one company, not several",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-129/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-129.json"
    },
    {
      "id": "CMP-131",
      "title": "Evidence must travel by the route the submission target actually offers",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-131/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-131.json"
    },
    {
      "id": "CMP-132",
      "title": "Where the platform has no upload field, proof must be a URL in the flow text",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-132/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-132.json"
    },
    {
      "id": "CMP-139",
      "title": "Each declared sub-use case needs its own sample message",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-139/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-139.json"
    },
    {
      "id": "CMP-141",
      "title": "Sample count must meet the minimum for the declared use case",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-141/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-141.json"
    },
    {
      "id": "CMP-142",
      "title": "Use case must be available to the brand entity type",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-142/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-142.json"
    },
    {
      "id": "CMP-175",
      "title": "Subscriber attributes must be true where the API accepts nothing else",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-175/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-175.json"
    },
    {
      "id": "CMP-176",
      "title": "Declaring opt-in requires opt-in keywords where the provider pairs them",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-176/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-176.json"
    },
    {
      "id": "CMP-187",
      "title": "The wider opt-out keyword set is required on some platforms",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-187/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-187.json"
    },
    {
      "id": "CMP-188",
      "title": "A non-standard opt-out keyword is honoured by nobody but you",
      "layer": "CAMPAIGN",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-188/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-188.json"
    },
    {
      "id": "CMP-AFFILIATE",
      "title": "Affiliate marketing campaigns are refused",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-affiliate/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-affiliate.json"
    },
    {
      "id": "CMP-AUTOREPLY-LEN",
      "title": "Auto-reply messages must be 20–320 characters",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-autoreply-len/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-autoreply-len.json"
    },
    {
      "id": "CMP-DESC-LEN",
      "title": "Campaign description must be 40–4096 characters",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-desc-len/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-desc-len.json"
    },
    {
      "id": "CMP-EMOJI",
      "title": "Registration fields must not contain emoji",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-emoji/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-emoji.json"
    },
    {
      "id": "CMP-FLOW-LEN",
      "title": "Message flow must be 40–2049 characters",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-flow-len/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-flow-len.json"
    },
    {
      "id": "CMP-HTTPS",
      "title": "Every URL must use HTTPS",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-https/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-https.json"
    },
    {
      "id": "CMP-KEYWORD-FMT",
      "title": "Opt-out and HELP keywords must be alphanumeric and under 255 characters",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-keyword-fmt/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-keyword-fmt.json"
    },
    {
      "id": "CMP-LINK-DECL",
      "title": "embeddedLink must match whether samples actually contain links",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-link-decl/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-link-decl.json"
    },
    {
      "id": "CMP-PHONE-DECL",
      "title": "embeddedPhone must match whether samples contain phone numbers",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-phone-decl/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-phone-decl.json"
    },
    {
      "id": "CMP-PLACEHOLDER",
      "title": "Registration fields must not contain placeholder text",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-placeholder/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-placeholder.json"
    },
    {
      "id": "CMP-SAMPLE-COUNT",
      "title": "At least two sample messages are required",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-sample-count/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-sample-count.json"
    },
    {
      "id": "CMP-SAMPLE-DUP",
      "title": "Sample messages must not be duplicates",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-sample-dup/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-sample-dup.json"
    },
    {
      "id": "CMP-SAMPLE-LEN",
      "title": "Each sample message must be 20–1024 characters",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-sample-len/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-sample-len.json"
    },
    {
      "id": "CMP-URL-DISTINCT",
      "title": "Privacy policy and terms URLs must be different pages",
      "layer": "CAMPAIGN",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-url-distinct/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-url-distinct.json"
    },
    {
      "id": "CMP-USECASE-ENUM",
      "title": "Use case must be a recognised TCR value",
      "layer": "CAMPAIGN",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/campaign/cmp-usecase-enum/",
      "json": "https://ekas.io/rules/10dlc/campaign/cmp-usecase-enum.json"
    },
    {
      "id": "CON-008",
      "title": "The live CTA and the declared message flow must say the same thing",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-008/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-008.json"
    },
    {
      "id": "CON-010",
      "title": "The three subscriber-management attributes must be declared true",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-010/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-010.json"
    },
    {
      "id": "CON-013",
      "title": "Subscriber attributes must agree with the message bodies supplied",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-013/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-013.json"
    },
    {
      "id": "CON-017",
      "title": "An offline opt-in still needs a findable business behind it",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-017/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-017.json"
    },
    {
      "id": "CON-023",
      "title": "Evidence URLs must resolve without a login",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-023/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-023.json"
    },
    {
      "id": "CON-024",
      "title": "The opt-in URL must serve a certificate that verifies",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-024/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-024.json"
    },
    {
      "id": "CON-027",
      "title": "The opt-in URL must land on a page that carries the opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-027/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-027.json"
    },
    {
      "id": "CON-033",
      "title": "Opt-in evidence must be the live surface, not a mockup of it",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-033/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-033.json"
    },
    {
      "id": "CON-034",
      "title": "The business name on the artifact must match the registered brand",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-034/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-034.json"
    },
    {
      "id": "CON-036",
      "title": "Platform-hosted evidence must show the end business, not the platform",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-036/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-036.json"
    },
    {
      "id": "CON-038",
      "title": "Verbally-collected informational campaigns need the mockup and the messages",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-038/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-038.json"
    },
    {
      "id": "CON-040",
      "title": "The consent basis must be an explicit opt-in, not an implied one",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-040/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-040.json"
    },
    {
      "id": "CON-041",
      "title": "The opt-in form must have a phone-number field",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-041/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-041.json"
    },
    {
      "id": "CON-042",
      "title": "The phone field must be optional on a general-purpose form",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-042/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-042.json"
    },
    {
      "id": "CON-043",
      "title": "A mandatory phone field needs its own separate, optional SMS opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-043/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-043.json"
    },
    {
      "id": "CON-044",
      "title": "A required phone field must carry an SMS disclaimer beside it",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-044/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-044.json"
    },
    {
      "id": "CON-045",
      "title": "The opt-in page must be reachable without logging in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-045/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-045.json"
    },
    {
      "id": "CON-048",
      "title": "Every page that collects a number needs consent language",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-048/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-048.json"
    },
    {
      "id": "CON-049",
      "title": "Secondary collection pages owe the full disclosure, not a token line",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-049/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-049.json"
    },
    {
      "id": "CON-059",
      "title": "The consent control label must name the programme, not just contact",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-059/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-059.json"
    },
    {
      "id": "CON-060",
      "title": "The opt-in language must actually say SMS or text message",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-060/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-060.json"
    },
    {
      "id": "CON-063",
      "title": "Labelling the consent control \"optional\" pre-empts the gating rejection",
      "layer": "CONSENT_FLOW",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-063/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-063.json"
    },
    {
      "id": "CON-064",
      "title": "A kiosk or terminal must not pre-fill the consumer's number",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-064/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-064.json"
    },
    {
      "id": "CON-070",
      "title": "Declining messages must not degrade the service afterwards",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-070/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-070.json"
    },
    {
      "id": "CON-071",
      "title": "The decline path must be as usable as the accept path",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-071/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-071.json"
    },
    {
      "id": "CON-072",
      "title": "An alternative to SMS must exist where the service needs to reach the consumer",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-072/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-072.json"
    },
    {
      "id": "CON-074",
      "title": "The \"not a condition of purchase\" claim must be true in practice",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-074/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-074.json"
    },
    {
      "id": "CON-075",
      "title": "A promotion must be open to people who do not join the SMS programme",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-075/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-075.json"
    },
    {
      "id": "CON-076",
      "title": "Opt-in must not be bought with a prize or giveaway entry",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-076/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-076.json"
    },
    {
      "id": "CON-078",
      "title": "Printed and in-store consent must not gate the transaction",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-078/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-078.json"
    },
    {
      "id": "CON-080",
      "title": "The disclosure must name the programme the consumer is joining",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-080/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-080.json"
    },
    {
      "id": "CON-088",
      "title": "Customer-care contact must be reachable from the point of consent",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-088/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-088.json"
    },
    {
      "id": "CON-090",
      "title": "The disclosure should say which number the messages come from",
      "layer": "CONSENT_FLOW",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-090/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-090.json"
    },
    {
      "id": "CON-093",
      "title": "The policy links must say which document they open",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-093/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-093.json"
    },
    {
      "id": "CON-094",
      "title": "The policy links at the opt-in must open real policy pages",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-094/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-094.json"
    },
    {
      "id": "CON-095",
      "title": "The no-sharing statement must be reachable from the consent point",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-095/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-095.json"
    },
    {
      "id": "CON-096",
      "title": "Nothing in the flow may contradict the no-sharing promise",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-096/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-096.json"
    },
    {
      "id": "CON-099",
      "title": "The opt-in and its advertising must not mislead",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-099/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-099.json"
    },
    {
      "id": "CON-101",
      "title": "\"Free\" must not be used loosely in the call to action",
      "layer": "CONSENT_FLOW",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-101/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-101.json"
    },
    {
      "id": "CON-108",
      "title": "The disclosure must be on the same page as the phone-number field",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-108/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-108.json"
    },
    {
      "id": "CON-109",
      "title": "The disclosure must sit next to the button the consumer presses",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-109/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-109.json"
    },
    {
      "id": "CON-110",
      "title": "The disclosure must be visible without the consumer opening anything",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-110/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-110.json"
    },
    {
      "id": "CON-113",
      "title": "The disclosure must read as a disclosure, not as more marketing copy",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-113/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-113.json"
    },
    {
      "id": "CON-123",
      "title": "Every entity allowed to send must be named in the consent",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-123/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-123.json"
    },
    {
      "id": "CON-124",
      "title": "The sending entities must be named before consent is captured",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-124/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-124.json"
    },
    {
      "id": "CON-125",
      "title": "Consent must not be claimed on behalf of unnamed partners",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-125/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-125.json"
    },
    {
      "id": "CON-130",
      "title": "Each messaging programme needs its own opt-in control",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-130/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-130.json"
    },
    {
      "id": "CON-132",
      "title": "Email or voice consent does not become SMS consent",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-132/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-132.json"
    },
    {
      "id": "CON-134",
      "title": "SMS consent needs its own control and its own sentence",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-134/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-134.json"
    },
    {
      "id": "CON-137",
      "title": "The consent record must capture the number it authorises",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-137/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-137.json"
    },
    {
      "id": "CON-139",
      "title": "A business built on acquiring opt-in lists cannot be registered",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-139/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-139.json"
    },
    {
      "id": "CON-145",
      "title": "Consent must come from the consumer, not from a legal process",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-145/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-145.json"
    },
    {
      "id": "CON-146",
      "title": "A TCPA exemption is not a substitute for opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-146/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-146.json"
    },
    {
      "id": "CON-147",
      "title": "An exemption relied on must be met in every one of its conditions",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-147/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-147.json"
    },
    {
      "id": "CON-150",
      "title": "A toll-free number must belong to one business",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-150/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-150.json"
    },
    {
      "id": "CON-151",
      "title": "Promotional messaging needs consent in writing, and must say so",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-151/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-151.json"
    },
    {
      "id": "CON-156",
      "title": "A call recording is not the written consent",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-156/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-156.json"
    },
    {
      "id": "CON-160",
      "title": "A marketing programme must say \"marketing\" everywhere it describes itself",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-160/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-160.json"
    },
    {
      "id": "CON-162",
      "title": "A chat conversation is not a marketing opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-162/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-162.json"
    },
    {
      "id": "CON-163",
      "title": "Keyword consent is bounded by what the advertisement promised",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-163/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-163.json"
    },
    {
      "id": "CON-164",
      "title": "Text-to-join marketing still owes the written-consent elements",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-164/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-164.json"
    },
    {
      "id": "CON-166",
      "title": "A donation programme must disclose that it solicits donations",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-166/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-166.json"
    },
    {
      "id": "CON-AGE-GATE",
      "title": "Age-gated programs require real age verification at opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-age-gate/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-age-gate.json"
    },
    {
      "id": "CON-ART-001",
      "title": "An artifact proving consent collection must be attached",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-art-001/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-art-001.json"
    },
    {
      "id": "CON-ART-002",
      "title": "The consent artifact must actually show a consent surface",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-art-002/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-art-002.json"
    },
    {
      "id": "CON-ART-003",
      "title": "The consent artifact must be legible",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-art-003/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-art-003.json"
    },
    {
      "id": "CON-BOX-BUNDLED",
      "title": "Messaging consent must be separate from terms acceptance",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-box-bundled/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-box-bundled.json"
    },
    {
      "id": "CON-BOX-PRESENT",
      "title": "An explicit affirmative opt-in control must exist",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-box-present/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-box-present.json"
    },
    {
      "id": "CON-BOX-UNCHECKED",
      "title": "The consent control must be unchecked by default",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-box-unchecked/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-box-unchecked.json"
    },
    {
      "id": "CON-DISC-ADJACENT",
      "title": "Disclosures must appear at the point of opt-in, not only in linked documents",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-adjacent/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-adjacent.json"
    },
    {
      "id": "CON-DISC-AUTOMATED",
      "title": "Consent disclosure must disclose automated, recurring messaging",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-automated/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-automated.json"
    },
    {
      "id": "CON-DISC-BRAND",
      "title": "Consent disclosure must identify the sending brand by name",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-brand/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-brand.json"
    },
    {
      "id": "CON-DISC-FREQ",
      "title": "Consent disclosure must state message frequency",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-freq/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-freq.json"
    },
    {
      "id": "CON-DISC-HELP",
      "title": "Consent disclosure must explain how to get help",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-help/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-help.json"
    },
    {
      "id": "CON-DISC-NO-POPUP",
      "title": "Terms must not be presented only in a pop-up",
      "layer": "CONSENT_FLOW",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-no-popup/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-no-popup.json"
    },
    {
      "id": "CON-DISC-NOT-CONDITION",
      "title": "Promotional consent must state it is not a condition of purchase",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-not-condition/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-not-condition.json"
    },
    {
      "id": "CON-DISC-PRIVACY-LINK",
      "title": "A Privacy Policy link must sit at the point of consent",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-privacy-link/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-privacy-link.json"
    },
    {
      "id": "CON-DISC-PURPOSE",
      "title": "Consent disclosure must state the message type or purpose",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-purpose/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-purpose.json"
    },
    {
      "id": "CON-DISC-RATES",
      "title": "Consent disclosure must carry the message and data rates notice",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-rates/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-rates.json"
    },
    {
      "id": "CON-DISC-STOP",
      "title": "Consent disclosure must explain how to opt out",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-stop/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-stop.json"
    },
    {
      "id": "CON-DISC-TERMS-LINK",
      "title": "A Terms of Service link must sit at the point of consent",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-disc-terms-link/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-disc-terms-link.json"
    },
    {
      "id": "CON-DOUBLE-OPTIN-CART",
      "title": "Abandoned-cart programs require double opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-double-optin-cart/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-double-optin-cart.json"
    },
    {
      "id": "CON-FLOW-METHOD-MATCH",
      "title": "The described opt-in method must match the evidence supplied",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-flow-method-match/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-flow-method-match.json"
    },
    {
      "id": "CON-FLOW-SPECIFIC",
      "title": "The message flow must describe a real, specific opt-in",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-flow-specific/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-flow-specific.json"
    },
    {
      "id": "CON-HELP-BACKED",
      "title": "Declared HELP support must have a help message behind it",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-help-backed/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-help-backed.json"
    },
    {
      "id": "CON-IMPORTED-LIST",
      "title": "Imported or legacy lists must evidence original consent",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-imported-list/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-imported-list.json"
    },
    {
      "id": "CON-IVR-CONFIRM",
      "title": "IVR opt-in must capture an unambiguous confirmation step",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-ivr-confirm/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-ivr-confirm.json"
    },
    {
      "id": "CON-KEYWORD-CONFIRM",
      "title": "Keyword opt-in requires a compliant confirmation reply",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-keyword-confirm/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-keyword-confirm.json"
    },
    {
      "id": "CON-KEYWORD-CTA",
      "title": "Keyword opt-in requires the advertised call to action",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-keyword-cta/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-keyword-cta.json"
    },
    {
      "id": "CON-KW-REVOCATION-SET",
      "title": "Declared opt-out keywords should cover the FCC per-se set",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-kw-revocation-set/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-kw-revocation-set.json"
    },
    {
      "id": "CON-NO-TRANSFER",
      "title": "Consent must not be purchased, shared, or transferred",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-no-transfer/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-no-transfer.json"
    },
    {
      "id": "CON-NOT-GATED",
      "title": "Declining messages must not block the primary action",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-not-gated/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-not-gated.json"
    },
    {
      "id": "CON-OPTOUT-CONFIRM",
      "title": "Opt-out confirmation must acknowledge and must not promote",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-optout-confirm/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-optout-confirm.json"
    },
    {
      "id": "CON-PAPER-ELEMENTS",
      "title": "Paper consent form must carry the disclosure, a tick box, and a signature line",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-paper-elements/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-paper-elements.json"
    },
    {
      "id": "CON-PAPER-FORM",
      "title": "Paper opt-in requires a copy of the form",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-paper-form/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-paper-form.json"
    },
    {
      "id": "CON-QR-DEST",
      "title": "QR opt-in must resolve to a compliant surface",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-qr-dest/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-qr-dest.json"
    },
    {
      "id": "CON-RECORD-FIELDS",
      "title": "Consent records must capture the required fields",
      "layer": "CONSENT_FLOW",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-record-fields/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-record-fields.json"
    },
    {
      "id": "CON-SCOPE-SPLIT",
      "title": "Promotional consent must be separate from transactional consent",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-scope-split/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-scope-split.json"
    },
    {
      "id": "CON-VERBAL-ELEMENTS",
      "title": "Verbal script must contain all eight required consent elements",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-verbal-elements/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-verbal-elements.json"
    },
    {
      "id": "CON-VERBAL-RECORD",
      "title": "Verbal consent must describe how assent is recorded",
      "layer": "CONSENT_FLOW",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-verbal-record/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-verbal-record.json"
    },
    {
      "id": "CON-VERBAL-SCRIPT",
      "title": "Verbal opt-in requires the documented script",
      "layer": "CONSENT_FLOW",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/consent-flow/con-verbal-script/",
      "json": "https://ekas.io/rules/10dlc/consent-flow/con-verbal-script.json"
    },
    {
      "id": "MSG-008",
      "title": "Opt-in confirmation must be 20–255 characters",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-008/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-008.json"
    },
    {
      "id": "MSG-009",
      "title": "HELP reply must be 20–255 characters",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-009/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-009.json"
    },
    {
      "id": "MSG-011",
      "title": "Opt-out confirmation must be 20–255 characters",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-011/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-011.json"
    },
    {
      "id": "MSG-015",
      "title": "A message must not render as ten or more segments",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-015/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-015.json"
    },
    {
      "id": "MSG-018",
      "title": "An MMS campaign must attach at least one sample media file",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-018/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-018.json"
    },
    {
      "id": "MSG-019",
      "title": "Each MMS sample file must sit under its per-type size ceiling",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-019/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-019.json"
    },
    {
      "id": "MSG-020",
      "title": "MMS sample images must not be placeholder or stock artwork",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-020/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-020.json"
    },
    {
      "id": "MSG-026",
      "title": "Samples must not contain mustache or curly-brace template tokens",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-026/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-026.json"
    },
    {
      "id": "MSG-031",
      "title": "Sample messages must be in English",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-031/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-031.json"
    },
    {
      "id": "MSG-034",
      "title": "Samples must not be framed as test, demo or machine-to-machine traffic",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-034/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-034.json"
    },
    {
      "id": "MSG-038",
      "title": "A registered domain can substitute for the brand name in a sample",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-038/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-038.json"
    },
    {
      "id": "MSG-042",
      "title": "Every message must identify who is sending it",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-042/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-042.json"
    },
    {
      "id": "MSG-045",
      "title": "Samples must not impersonate another organisation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-045/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-045.json"
    },
    {
      "id": "MSG-046",
      "title": "Samples must be consistent with the brand website",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-046/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-046.json"
    },
    {
      "id": "MSG-049",
      "title": "Opt-out instructions must name a recognised keyword",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-049/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-049.json"
    },
    {
      "id": "MSG-054",
      "title": "Universal opt-out keywords must be supported in copy and configuration",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-054/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-054.json"
    },
    {
      "id": "MSG-056",
      "title": "A no-reply route must disclose that replies are not received",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-056/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-056.json"
    },
    {
      "id": "MSG-058",
      "title": "A recurring programme must have an opt-in confirmation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-058/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-058.json"
    },
    {
      "id": "MSG-060",
      "title": "The opt-in confirmation must be the first message sent",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-060/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-060.json"
    },
    {
      "id": "MSG-061",
      "title": "The opt-in confirmation must name the registered brand",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-061/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-061.json"
    },
    {
      "id": "MSG-062",
      "title": "Opt-in confirmation must name the programme",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-062/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-062.json"
    },
    {
      "id": "MSG-063",
      "title": "Opt-in confirmation must disclose message frequency",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-063/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-063.json"
    },
    {
      "id": "MSG-064",
      "title": "Opt-in confirmation must carry the rates disclosure",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-064/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-064.json"
    },
    {
      "id": "MSG-065",
      "title": "Opt-in confirmation must carry HELP instructions",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-065/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-065.json"
    },
    {
      "id": "MSG-066",
      "title": "Opt-in confirmation must carry a working opt-out instruction",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-066/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-066.json"
    },
    {
      "id": "MSG-073",
      "title": "HELP response must name the brand or programme",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-073/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-073.json"
    },
    {
      "id": "MSG-074",
      "title": "HELP response must give a real support contact",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-074/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-074.json"
    },
    {
      "id": "MSG-075",
      "title": "HELP reply support contact must be on the brand domain",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-075/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-075.json"
    },
    {
      "id": "MSG-078",
      "title": "HELP must be a configured help keyword",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-078/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-078.json"
    },
    {
      "id": "MSG-081",
      "title": "STOP confirmation must name the brand or programme",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-081/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-081.json"
    },
    {
      "id": "MSG-082",
      "title": "STOP confirmation must acknowledge the request",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-082/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-082.json"
    },
    {
      "id": "MSG-083",
      "title": "STOP confirmation must state no further messages will be sent",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-083/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-083.json"
    },
    {
      "id": "MSG-088",
      "title": "Public URL shorteners are prohibited in every registration field",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-088/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-088.json"
    },
    {
      "id": "MSG-095",
      "title": "Any shortener used must be dedicated to this sender",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-095/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-095.json"
    },
    {
      "id": "MSG-098",
      "title": "Links must not pass through multi-hop redirects",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-098/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-098.json"
    },
    {
      "id": "MSG-101",
      "title": "Links must not be intended to deceive or cause harm",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-101/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-101.json"
    },
    {
      "id": "MSG-103",
      "title": "The page a sample links to is screened as part of the campaign",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-103/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-103.json"
    },
    {
      "id": "MSG-104",
      "title": "Link destinations must identify their owner",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-104/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-104.json"
    },
    {
      "id": "MSG-105",
      "title": "The advertised offer must match the landing page",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-105/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-105.json"
    },
    {
      "id": "MSG-106",
      "title": "Link domains must not appear in threat intelligence",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-106/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-106.json"
    },
    {
      "id": "MSG-116",
      "title": "embeddedPhone must ignore the HELP support number",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-116/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-116.json"
    },
    {
      "id": "MSG-117",
      "title": "A sample must contain a phone number when embeddedPhone is declared",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-117/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-117.json"
    },
    {
      "id": "MSG-119",
      "title": "A sample must contain a URL when embeddedLink is declared",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-119/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-119.json"
    },
    {
      "id": "MSG-120",
      "title": "Declared attributes must match sample content generally",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-120/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-120.json"
    },
    {
      "id": "MSG-123",
      "title": "Age-restricted content requires the age-gated attribute",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-123/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-123.json"
    },
    {
      "id": "MSG-131",
      "title": "Non-GSM characters silently force Unicode encoding",
      "layer": "MESSAGE_CONTENT",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-131/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-131.json"
    },
    {
      "id": "MSG-137",
      "title": "No unsolicited bulk messaging",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-137/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-137.json"
    },
    {
      "id": "MSG-142",
      "title": "The description must match the sample messages",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-142/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-142.json"
    },
    {
      "id": "MSG-148",
      "title": "Samples must match what the printed or in-person call to action promised",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-148/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-148.json"
    },
    {
      "id": "MSG-149",
      "title": "Samples must match the declared opt-in method",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-149/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-149.json"
    },
    {
      "id": "MSG-152",
      "title": "Transactional campaigns must contain no promotional element",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-152/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-152.json"
    },
    {
      "id": "MSG-155",
      "title": "Sweepstakes content requires the sweepstakes use case",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-155/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-155.json"
    },
    {
      "id": "MSG-161",
      "title": "SHAFT screening covers every campaign field, not a sample of them",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-161/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-161.json"
    },
    {
      "id": "MSG-163",
      "title": "Family-friendly styling must not carry adult themes",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-163/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-163.json"
    },
    {
      "id": "MSG-164",
      "title": "No underage, non-consensual or illegal sexual themes",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-164/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-164.json"
    },
    {
      "id": "MSG-170",
      "title": "No content promoting, glorifying or inciting violence",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-170/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-170.json"
    },
    {
      "id": "MSG-171",
      "title": "Messages must not harass, intimidate or threaten the recipient",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-171/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-171.json"
    },
    {
      "id": "MSG-175",
      "title": "Content must not invade privacy, defame, or otherwise cause harm",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-175/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-175.json"
    },
    {
      "id": "MSG-177",
      "title": "Content must not depict or facilitate substance abuse",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-177/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-177.json"
    },
    {
      "id": "MSG-179",
      "title": "Alcohol content must not be aimed at people under the drinking age",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-179/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-179.json"
    },
    {
      "id": "MSG-182",
      "title": "No explosives, fireworks or pyrotechnics content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-182/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-182.json"
    },
    {
      "id": "MSG-183",
      "title": "No weapons that are not legal in all fifty states",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-183/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-183.json"
    },
    {
      "id": "MSG-190",
      "title": "No kratom or drug-paraphernalia content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-190/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-190.json"
    },
    {
      "id": "MSG-206",
      "title": "No sweepstakes, raffle or contest-entry content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-206/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-206.json"
    },
    {
      "id": "MSG-209",
      "title": "A charity programme may not run games of chance or recurring donations",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-209/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-209.json"
    },
    {
      "id": "MSG-210",
      "title": "A political donation programme may not include gaming-related fundraising",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-210/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-210.json"
    },
    {
      "id": "MSG-214",
      "title": "No student-loan programme content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-214/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-214.json"
    },
    {
      "id": "MSG-215",
      "title": "Samples must not collect information to qualify a consumer for a loan",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-215/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-215.json"
    },
    {
      "id": "MSG-221",
      "title": "Debt relief and credit repair stay prohibited even with first-party consent",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-221/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-221.json"
    },
    {
      "id": "MSG-226",
      "title": "No forex, binary options or speculative-derivative content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-226/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-226.json"
    },
    {
      "id": "MSG-227",
      "title": "No promises of unusually high or guaranteed returns",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-227/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-227.json"
    },
    {
      "id": "MSG-243",
      "title": "No relaying one-time passcodes on behalf of other service providers",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-243/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-243.json"
    },
    {
      "id": "MSG-245",
      "title": "No fake-prize, impersonation or advance-fee patterns",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-245/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-245.json"
    },
    {
      "id": "MSG-246",
      "title": "No manufactured urgency",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-246/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-246.json"
    },
    {
      "id": "MSG-249",
      "title": "No fraud or scam message content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-249/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-249.json"
    },
    {
      "id": "MSG-250",
      "title": "No simulated-phishing or security-testing programmes",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-250/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-250.json"
    },
    {
      "id": "MSG-255",
      "title": "No impersonating a third-party brand on the landing page or in a linked file",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-255/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-255.json"
    },
    {
      "id": "MSG-261",
      "title": "The call to action must not misdescribe the programme",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-261/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-261.json"
    },
    {
      "id": "MSG-262",
      "title": "No sender whose business is buying, selling or sharing consumer information",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-262/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-262.json"
    },
    {
      "id": "MSG-263",
      "title": "An abandoned-cart message must carry an opt-out notice",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-263/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-263.json"
    },
    {
      "id": "MSG-264",
      "title": "An abandoned-cart message must not complete the purchase in the thread",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-264/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-264.json"
    },
    {
      "id": "MSG-266",
      "title": "A forwarded or referred message must say why the recipient received it",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-266/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-266.json"
    },
    {
      "id": "MSG-267",
      "title": "A political donation programme must confirm intent and certify eligibility",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-267/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-267.json"
    },
    {
      "id": "MSG-290",
      "title": "Political content is refused outright on platforms that prohibit it",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-290/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-290.json"
    },
    {
      "id": "MSG-293",
      "title": "Verbal opt-in grants no relief on sample content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-293/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-293.json"
    },
    {
      "id": "MSG-296",
      "title": "Platform sample specifications must be met where an ISV imposes one",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-296/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-296.json"
    },
    {
      "id": "MSG-ADULT-DATING",
      "title": "No adult dating or companionship solicitation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-adult-dating/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-adult-dating.json"
    },
    {
      "id": "MSG-BAIL-BONDS",
      "title": "No bail bonds or related solicitation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-bail-bonds/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-bail-bonds.json"
    },
    {
      "id": "MSG-CANNABIS",
      "title": "No cannabis, CBD, or hemp-derived product content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-cannabis/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-cannabis.json"
    },
    {
      "id": "MSG-CHARITY-SOLICIT",
      "title": "Charitable solicitation requires the charity use case and real status",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-charity-solicit/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-charity-solicit.json"
    },
    {
      "id": "MSG-COLLECTIONS-FIRST-PARTY",
      "title": "First-party collections messaging must not use third-party framing",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-collections-first-party/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-collections-first-party.json"
    },
    {
      "id": "MSG-CRYPTO",
      "title": "No cryptocurrency or high-risk investment solicitation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-crypto/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-crypto.json"
    },
    {
      "id": "MSG-DEBT",
      "title": "No third-party debt collection, relief, or credit repair content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-debt/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-debt.json"
    },
    {
      "id": "MSG-DECEPTIVE",
      "title": "Content must not be deceptive, misleading, or impersonating",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-deceptive/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-deceptive.json"
    },
    {
      "id": "MSG-DESC-QUALITY",
      "title": "Campaign description must explain who, what, and how they opted in",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-desc-quality/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-desc-quality.json"
    },
    {
      "id": "MSG-FIELD-SIMILARITY",
      "title": "Description, message flow, and samples must not be the same text",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-field-similarity/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-field-similarity.json"
    },
    {
      "id": "MSG-FIREARMS-ADJACENT",
      "title": "No firearms-adjacent product marketing",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-firearms-adjacent/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-firearms-adjacent.json"
    },
    {
      "id": "MSG-GAMBLING",
      "title": "No gambling or sportsbook content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-gambling/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-gambling.json"
    },
    {
      "id": "MSG-HIGH-RISK-FINANCIAL",
      "title": "No payday, short-term, or high-interest lending content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-high-risk-financial/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-high-risk-financial.json"
    },
    {
      "id": "MSG-ILLEGAL",
      "title": "No content promoting illegal activity",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-illegal/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-illegal.json"
    },
    {
      "id": "MSG-JOB-LEADGEN",
      "title": "No third-party job-board or staffing lead generation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-job-leadgen/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-job-leadgen.json"
    },
    {
      "id": "MSG-LEAD-GEN",
      "title": "No third-party lead generation or multi-level marketing",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-lead-gen/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-lead-gen.json"
    },
    {
      "id": "MSG-PHARMA",
      "title": "No prescription drug or controlled-substance promotion",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-pharma/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-pharma.json"
    },
    {
      "id": "MSG-PHISHING",
      "title": "Content must not solicit credentials or sensitive data",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-phishing/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-phishing.json"
    },
    {
      "id": "MSG-REAL-ESTATE-WHOLESALE",
      "title": "No unsolicited property-acquisition or wholesaling outreach",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-real-estate-wholesale/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-real-estate-wholesale.json"
    },
    {
      "id": "MSG-SAMPLES-DISTINCT",
      "title": "Sample messages must be materially different from one another",
      "layer": "MESSAGE_CONTENT",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-distinct/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-samples-distinct.json"
    },
    {
      "id": "MSG-SAMPLES-NOT-ONLY-ADMIN",
      "title": "Samples must show campaign content, not only opt-out or help replies",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-not-only-admin/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-samples-not-only-admin.json"
    },
    {
      "id": "MSG-SAMPLES-OPTOUT",
      "title": "At least one sample must show opt-out language",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-optout/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-samples-optout.json"
    },
    {
      "id": "MSG-SAMPLES-REPRESENTATIVE",
      "title": "Sample messages must be realistic, not placeholders",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-representative/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-samples-representative.json"
    },
    {
      "id": "MSG-SAMPLES-USECASE",
      "title": "Sample messages must match the declared use case",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-usecase/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-samples-usecase.json"
    },
    {
      "id": "MSG-SEO-SPAM",
      "title": "No unsolicited agency or SEO service pitching",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-seo-spam/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-seo-spam.json"
    },
    {
      "id": "MSG-SHAFT-ALCOHOL",
      "title": "Alcohol content requires robust age gating",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-shaft-alcohol/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-shaft-alcohol.json"
    },
    {
      "id": "MSG-SHAFT-FIREARMS",
      "title": "No firearms sales or promotion",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-shaft-firearms/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-shaft-firearms.json"
    },
    {
      "id": "MSG-SHAFT-HATE",
      "title": "No hate speech",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-shaft-hate/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-shaft-hate.json"
    },
    {
      "id": "MSG-SHAFT-SEX",
      "title": "No adult or sexually explicit content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-shaft-sex/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-shaft-sex.json"
    },
    {
      "id": "MSG-SHAFT-TOBACCO",
      "title": "No tobacco, vape, or nicotine product content",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-shaft-tobacco/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-shaft-tobacco.json"
    },
    {
      "id": "MSG-SPAM-STYLE",
      "title": "Messages must not use spam-signal formatting",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-spam-style/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-spam-style.json"
    },
    {
      "id": "MSG-SWEEPSTAKES-DECEPTIVE",
      "title": "No prize or winner claims without a genuine promotion",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-sweepstakes-deceptive/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-sweepstakes-deceptive.json"
    },
    {
      "id": "MSG-TELEHEALTH-ACQUISITION",
      "title": "No telehealth or supplement acquisition marketing",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-telehealth-acquisition/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-telehealth-acquisition.json"
    },
    {
      "id": "MSG-TIMESHARE",
      "title": "No timeshare or vacation-club solicitation",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-timeshare/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-timeshare.json"
    },
    {
      "id": "MSG-URL-OWNERSHIP",
      "title": "Links must resolve to a domain the brand owns",
      "layer": "MESSAGE_CONTENT",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-url-ownership/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-url-ownership.json"
    },
    {
      "id": "MSG-VARIABLES",
      "title": "Template variables must use square-bracket notation",
      "layer": "MESSAGE_CONTENT",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/message-content/msg-variables/",
      "json": "https://ekas.io/rules/10dlc/message-content/msg-variables.json"
    },
    {
      "id": "OPS-026",
      "title": "The universal opt-out keyword set must be declared",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-026/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-026.json"
    },
    {
      "id": "OPS-027",
      "title": "Opt-out keyword handling must be declared, not assumed",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-027/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-027.json"
    },
    {
      "id": "OPS-029",
      "title": "A revocation must survive punctuation, case and surrounding words",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-029/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-029.json"
    },
    {
      "id": "OPS-031",
      "title": "A plainly-worded opt-out counts even with no keyword in it",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-031/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-031.json"
    },
    {
      "id": "OPS-032",
      "title": "A help request containing a stop-word is not an opt-out",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-032/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-032.json"
    },
    {
      "id": "OPS-033",
      "title": "STOP must never come back as an error",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-033/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-033.json"
    },
    {
      "id": "OPS-034",
      "title": "A programme in another language still owes the English keyword",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-034/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-034.json"
    },
    {
      "id": "OPS-035",
      "title": "The mandatory keywords must work over MMS too",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-035/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-035.json"
    },
    {
      "id": "OPS-037",
      "title": "On a shared address, STOP must stop everything",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-037/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-037.json"
    },
    {
      "id": "OPS-038",
      "title": "Opt-out must not be reduced to one prescribed method",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-038/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-038.json"
    },
    {
      "id": "OPS-039",
      "title": "A revocation on any channel must reach the SMS suppression list",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-039/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-039.json"
    },
    {
      "id": "OPS-042",
      "title": "Somebody has to own revocations that arrive in conversation",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-042/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-042.json"
    },
    {
      "id": "OPS-043",
      "title": "A revocation crosses media",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-043/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-043.json"
    },
    {
      "id": "OPS-044",
      "title": "Suppression is brand-wide, not per number",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-044/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-044.json"
    },
    {
      "id": "OPS-045",
      "title": "Sending stops on receipt, including on a political programme",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-045/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-045.json"
    },
    {
      "id": "OPS-046",
      "title": "The honouring clock starts when the revocation arrives",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-046/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-046.json"
    },
    {
      "id": "OPS-047",
      "title": "A state may give you less time than the federal limit",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-047/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-047.json"
    },
    {
      "id": "OPS-050",
      "title": "The opt-out confirmation is worth sending inside five minutes",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-050/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-050.json"
    },
    {
      "id": "OPS-051",
      "title": "Only ask which messages to stop when there is more than one kind",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-051/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-051.json"
    },
    {
      "id": "OPS-052",
      "title": "Silence after a scope question revokes everything",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-052/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-052.json"
    },
    {
      "id": "OPS-053",
      "title": "A STOP answering a scope question must not be answered with another",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-053/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-053.json"
    },
    {
      "id": "OPS-054",
      "title": "Revoking against an exempt message stops everything else too",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-054/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-054.json"
    },
    {
      "id": "OPS-055",
      "title": "Revoke-all across categories has a deadline",
      "layer": "OPERATIONAL",
      "severity": "LOW",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-055/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-055.json"
    },
    {
      "id": "OPS-056",
      "title": "Opt-out records must keep the words the consumer actually sent",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-056/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-056.json"
    },
    {
      "id": "OPS-057",
      "title": "Log the sends you did not make",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-057/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-057.json"
    },
    {
      "id": "OPS-058",
      "title": "Re-read the inbound log for opt-outs the handler missed",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-058/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-058.json"
    },
    {
      "id": "OPS-061",
      "title": "A later form fill does not undo an earlier opt-out",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-061/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-061.json"
    },
    {
      "id": "OPS-062",
      "title": "An opted-out consumer must be able to come back",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-062/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-062.json"
    },
    {
      "id": "OPS-063",
      "title": "Opt-out records must not be shared onward",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-063/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-063.json"
    },
    {
      "id": "OPS-065",
      "title": "A carrier opt-out is authoritative even if your list has no record",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-065/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-065.json"
    },
    {
      "id": "OPS-066",
      "title": "Watch the opt-out rate, and act at both thresholds",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-066/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-066.json"
    },
    {
      "id": "OPS-068",
      "title": "STOP and HELP volumes are a standing report",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-068/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-068.json"
    },
    {
      "id": "OPS-070",
      "title": "A referral opt-out covers everything sent through the application",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-070/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-070.json"
    },
    {
      "id": "OPS-071",
      "title": "Group messaging needs a member opt-out and anti-abuse controls",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-071/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-071.json"
    },
    {
      "id": "OPS-072",
      "title": "The programme must not evade opt-out detection",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-072/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-072.json"
    },
    {
      "id": "OPS-073",
      "title": "Toll-free keyword behaviour cannot be customised, so do not promise it",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-073/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-073.json"
    },
    {
      "id": "OPS-074",
      "title": "Toll-free opt-out language is appended for you, and billed",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-074/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-074.json"
    },
    {
      "id": "OPS-075",
      "title": "Opt-out instructions must recur, not just appear at opt-in",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-075/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-075.json"
    },
    {
      "id": "OPS-076",
      "title": "Customer-care contact details must recur too",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-076/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-076.json"
    },
    {
      "id": "OPS-078",
      "title": "HELP is answered whoever asks",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-078/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-078.json"
    },
    {
      "id": "OPS-079",
      "title": "HELP must work in every form it arrives in",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-079/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-079.json"
    },
    {
      "id": "OPS-081",
      "title": "The HELP reply must send people somewhere that answers",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-081/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-081.json"
    },
    {
      "id": "OPS-083",
      "title": "Carrier deactivation files must be ingested daily",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-083/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-083.json"
    },
    {
      "id": "OPS-085",
      "title": "The programme must scrub deactivated numbers before sending",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-085/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-085.json"
    },
    {
      "id": "OPS-087",
      "title": "The reassigned-numbers database is the only route to the safe harbour",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-087/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-087.json"
    },
    {
      "id": "OPS-088",
      "title": "Some states make reassigned-number screening mandatory",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-088/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-088.json"
    },
    {
      "id": "OPS-089",
      "title": "A ported number is a new subscriber",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-089/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-089.json"
    },
    {
      "id": "OPS-090",
      "title": "Check the number is a live mobile before paying to send to it",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-090/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-090.json"
    },
    {
      "id": "OPS-092",
      "title": "Local time is where the recipient is, not what their area code says",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-092/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-092.json"
    },
    {
      "id": "OPS-093",
      "title": "Several states set a narrower quiet-hours window than the federal one",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-093/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-093.json"
    },
    {
      "id": "OPS-096",
      "title": "A state may black out whole days",
      "layer": "OPERATIONAL",
      "severity": "LOW",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-096/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-096.json"
    },
    {
      "id": "OPS-097",
      "title": "Some states cap how often you may raise the same subject",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-097/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-097.json"
    },
    {
      "id": "OPS-098",
      "title": "There is a per-recipient daily ceiling even without a state rule",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-098/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-098.json"
    },
    {
      "id": "OPS-099",
      "title": "A state may cap monthly volume and demand the logs",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-099/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-099.json"
    },
    {
      "id": "OPS-100",
      "title": "A national campaign needs a per-state matrix, evaluated against the strictest rule",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-100/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-100.json"
    },
    {
      "id": "OPS-101",
      "title": "Default to daytime hours even where nothing requires it",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-101/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-101.json"
    },
    {
      "id": "OPS-102",
      "title": "The national do-not-call registry must be scrubbed before any solicitation",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-102/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-102.json"
    },
    {
      "id": "OPS-103",
      "title": "A registry snapshot older than a month is not a scrub",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-103/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-103.json"
    },
    {
      "id": "OPS-104",
      "title": "Several states run their own do-not-call registry",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-104/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-104.json"
    },
    {
      "id": "OPS-105",
      "title": "The internal do-not-call list is checked on every send",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-105/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-105.json"
    },
    {
      "id": "OPS-107",
      "title": "Staff have to be trained on the internal list, and it has to be evidenced",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-107/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-107.json"
    },
    {
      "id": "OPS-108",
      "title": "A do-not-call request is recorded when it is made",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-108/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-108.json"
    },
    {
      "id": "OPS-109",
      "title": "The scrub process needs writing down, version dates included",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-109/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-109.json"
    },
    {
      "id": "OPS-110",
      "title": "Some states require the seller to register before texting residents",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-110/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-110.json"
    },
    {
      "id": "OPS-113",
      "title": "A state may impose its own opt-out and identification duties",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-113/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-113.json"
    },
    {
      "id": "OPS-114",
      "title": "A programme relying on the delivery exemption still owes an opt-out",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-114/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-114.json"
    },
    {
      "id": "OPS-115",
      "title": "An exempt message must not cost the recipient anything",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-115/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-115.json"
    },
    {
      "id": "OPS-116",
      "title": "Carrier approval is not legal cover",
      "layer": "OPERATIONAL",
      "severity": "LOW",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-116/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-116.json"
    },
    {
      "id": "OPS-123",
      "title": "Every message needs a valid carrier message-class tag",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-123/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-123.json"
    },
    {
      "id": "OPS-124",
      "title": "Unregistered and P2P-classified traffic has a hard per-number ceiling",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-124/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-124.json"
    },
    {
      "id": "OPS-126",
      "title": "A low-volume campaign has a ceiling, not a warning",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-126/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-126.json"
    },
    {
      "id": "OPS-127",
      "title": "UCaaS low-volume carries restrictions beyond the volume",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-127/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-127.json"
    },
    {
      "id": "OPS-128",
      "title": "Registering and vetting a brand does not raise the platform rate limit",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-128/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-128.json"
    },
    {
      "id": "OPS-130",
      "title": "Tax-exempt status is not a political vet",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-130/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-130.json"
    },
    {
      "id": "OPS-131",
      "title": "A validity period shorter than the queue drops messages silently",
      "layer": "OPERATIONAL",
      "severity": "LOW",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-131/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-131.json"
    },
    {
      "id": "OPS-132",
      "title": "The consumer-traffic thresholds are where P2P stops",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-132/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-132.json"
    },
    {
      "id": "OPS-133",
      "title": "A P2P exemption has conditions, all of them",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-133/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-133.json"
    },
    {
      "id": "OPS-134",
      "title": "The registry has API rate limits of its own",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-134/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-134.json"
    },
    {
      "id": "OPS-135",
      "title": "Do not spread one message across many numbers",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-135/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-135.json"
    },
    {
      "id": "OPS-136",
      "title": "The campaign must not duplicate another campaign on the account",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-136/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-136.json"
    },
    {
      "id": "OPS-137",
      "title": "Do not burn numbers and replace them",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-137/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-137.json"
    },
    {
      "id": "OPS-138",
      "title": "A blocked number must not be automatically replaced",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-138/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-138.json"
    },
    {
      "id": "OPS-139",
      "title": "One number, one static route",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-139/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-139.json"
    },
    {
      "id": "OPS-140",
      "title": "Grey routes are not a price advantage",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-140/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-140.json"
    },
    {
      "id": "OPS-141",
      "title": "One approved number is controlled by one party",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-141/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-141.json"
    },
    {
      "id": "OPS-142",
      "title": "A legitimately shared number needs a register of who sends on it",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-142/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-142.json"
    },
    {
      "id": "OPS-143",
      "title": "Distributing like content across several numbers needs an arrangement",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-143/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-143.json"
    },
    {
      "id": "OPS-144",
      "title": "Do not rotate domains across a bulk send",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-144/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-144.json"
    },
    {
      "id": "OPS-145",
      "title": "Consecutive number ranges are a volume signal",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-145/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-145.json"
    },
    {
      "id": "OPS-146",
      "title": "Identical bodies across a bulk send fingerprint the campaign",
      "layer": "OPERATIONAL",
      "severity": "LOW",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-146/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-146.json"
    },
    {
      "id": "OPS-149",
      "title": "Live content has to keep matching the registration",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-149/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-149.json"
    },
    {
      "id": "OPS-150",
      "title": "Send only the message types the subscriber agreed to",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-150/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-150.json"
    },
    {
      "id": "OPS-151",
      "title": "Separate marketing traffic once volume matters",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-151/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-151.json"
    },
    {
      "id": "OPS-152",
      "title": "One recognisable number per programme",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-152/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-152.json"
    },
    {
      "id": "OPS-153",
      "title": "The sender must be who the message says it is",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-153/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-153.json"
    },
    {
      "id": "OPS-154",
      "title": "Where the numbers came from matters",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-154/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-154.json"
    },
    {
      "id": "OPS-155",
      "title": "Sending through a provider you have no relationship with is a red flag",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-155/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-155.json"
    },
    {
      "id": "OPS-156",
      "title": "Watch for traffic that is being pumped",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-156/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-156.json"
    },
    {
      "id": "OPS-157",
      "title": "A provider can block anything its risk assessment dislikes",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-157/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-157.json"
    },
    {
      "id": "OPS-159",
      "title": "A registered campaign must expect to carry traffic",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-159/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-159.json"
    },
    {
      "id": "OPS-161",
      "title": "Campaign auto-renewal must be set deliberately",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-161/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-161.json"
    },
    {
      "id": "OPS-180",
      "title": "Approved samples do not license prohibited content",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-180/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-180.json"
    },
    {
      "id": "OPS-199",
      "title": "Consent records must capture all seven required fields",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-199/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-199.json"
    },
    {
      "id": "OPS-201",
      "title": "The consent experience itself must be versioned and retained",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-201/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-201.json"
    },
    {
      "id": "OPS-204",
      "title": "Verbal consent records must substitute a call identifier for the IP address",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-204/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-204.json"
    },
    {
      "id": "OPS-207",
      "title": "The consent record must name the page the opt-in came from",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-207/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-207.json"
    },
    {
      "id": "OPS-208",
      "title": "The consent record should carry the browser user agent",
      "layer": "OPERATIONAL",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-208/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-208.json"
    },
    {
      "id": "OPS-209",
      "title": "The consent record must say which act gave consent",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-209/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-209.json"
    },
    {
      "id": "OPS-210",
      "title": "Telemarketing consent must retain the request, its purpose and the answer",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-210/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-210.json"
    },
    {
      "id": "OPS-214",
      "title": "Telemarketing consent taken by phone must retain the recording of both halves",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-214/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-214.json"
    },
    {
      "id": "OPS-215",
      "title": "Express written consent must name the specific number and bear a signature",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-215/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-215.json"
    },
    {
      "id": "OPS-217",
      "title": "Consent must be tracked per consumer, not per list",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-217/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-217.json"
    },
    {
      "id": "OPS-219",
      "title": "Opt-out records must be retained alongside opt-ins",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-219/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-219.json"
    },
    {
      "id": "OPS-221",
      "title": "The retention period must clear the longest window that applies",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-221/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-221.json"
    },
    {
      "id": "OPS-223",
      "title": "The retention clock starts at the last message, not the opt-in",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-223/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-223.json"
    },
    {
      "id": "OPS-232",
      "title": "A spoken opt-in needs a per-consumer artifact, not just a script",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-232/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-232.json"
    },
    {
      "id": "OPS-233",
      "title": "A spoken consent record must name the agent who took it",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-233/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-233.json"
    },
    {
      "id": "OPS-235",
      "title": "A spoken consent record must pin the script version that was read",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-235/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-235.json"
    },
    {
      "id": "OPS-236",
      "title": "An IVR opt-in must log the prompt, the keypress, the time and the call",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-236/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-236.json"
    },
    {
      "id": "OPS-239",
      "title": "Declining to be recorded must not block the opt-in",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-239/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-239.json"
    },
    {
      "id": "OPS-240",
      "title": "Recordings must outlive the consent records they evidence",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-240/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-240.json"
    },
    {
      "id": "OPS-251",
      "title": "Consent left unused for a month must be reconfirmed",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-251/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-251.json"
    },
    {
      "id": "OPS-252",
      "title": "Consent collected away from the handset should be confirmed on it",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-252/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-252.json"
    },
    {
      "id": "OPS-256",
      "title": "A recurring programme should expire consent that has gone quiet",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-256/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-256.json"
    },
    {
      "id": "OPS-261",
      "title": "Only the charity may use the numbers a charity collects",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-261/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-261.json"
    },
    {
      "id": "OPS-292",
      "title": "Evidence screenshots must say when and where they were taken",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-292/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-292.json"
    },
    {
      "id": "OPS-323",
      "title": "An identity appeal has a window, and it runs from brand creation",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-323/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-323.json"
    },
    {
      "id": "OPS-324",
      "title": "An appeal is void if you edit the identity you are appealing",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-324/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-324.json"
    },
    {
      "id": "OPS-344",
      "title": "A brand carrying live work cannot have its identity edited at all",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-344/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-344.json"
    },
    {
      "id": "OPS-384",
      "title": "Nothing goes out before the opt-in",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/operational/ops-384/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-384.json"
    },
    {
      "id": "OPS-385",
      "title": "A referral programme must not pay people to forward messages",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-385/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-385.json"
    },
    {
      "id": "OPS-FREQ-COHERENT",
      "title": "Declared frequency must be consistent everywhere it appears",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-freq-coherent/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-freq-coherent.json"
    },
    {
      "id": "OPS-HELP-ONE-TIME",
      "title": "HELP must be supported even on one-time programmes",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-help-one-time/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-help-one-time.json"
    },
    {
      "id": "OPS-OPTOUT-CONF-ONLY",
      "title": "Opt-out confirmation must be the only message sent after revocation",
      "layer": "OPERATIONAL",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-optout-conf-only/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-optout-conf-only.json"
    },
    {
      "id": "OPS-POOL-DECLARED",
      "title": "Number pooling must be declared consistently with the campaign scale",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-pool-declared/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-pool-declared.json"
    },
    {
      "id": "OPS-QUIET-HOURS-DISCLOSED",
      "title": "Quiet-hours handling should be disclosed for promotional programmes",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-quiet-hours-disclosed/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-quiet-hours-disclosed.json"
    },
    {
      "id": "OPS-RETENTION-STATED",
      "title": "Consent record retention period should be stated",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-retention-stated/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-retention-stated.json"
    },
    {
      "id": "OPS-USECASE-SCOPE",
      "title": "The campaign must not describe content it is not registered to send",
      "layer": "OPERATIONAL",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-usecase-scope/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-usecase-scope.json"
    },
    {
      "id": "OPS-VOLUME-PLAUSIBLE",
      "title": "Declared volume must be plausible for the business",
      "layer": "OPERATIONAL",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/operational/ops-volume-plausible/",
      "json": "https://ekas.io/rules/10dlc/operational/ops-volume-plausible.json"
    },
    {
      "id": "POL-001",
      "title": "A privacy policy URL is required on the campaign",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-001/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-001.json"
    },
    {
      "id": "POL-002",
      "title": "A terms and conditions URL is required on the campaign",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-002/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-002.json"
    },
    {
      "id": "POL-003",
      "title": "An uploaded policy document must fit the provider file constraints",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-003/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-003.json"
    },
    {
      "id": "POL-005",
      "title": "The terms and conditions attestation must be set",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-005/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-005.json"
    },
    {
      "id": "POL-010",
      "title": "Both policy URLs must resolve and return content anonymously",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-010/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-010.json"
    },
    {
      "id": "POL-015",
      "title": "The policy host must serve a valid certificate of its own",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-015/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-015.json"
    },
    {
      "id": "POL-016",
      "title": "The privacy policy URL must open an actual privacy policy",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-016/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-016.json"
    },
    {
      "id": "POL-018",
      "title": "Policy pages must be machine-crawlable",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-018/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-018.json"
    },
    {
      "id": "POL-020",
      "title": "A non-English site needs an English policy",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-020/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-020.json"
    },
    {
      "id": "POL-021",
      "title": "Policy URLs must not redirect",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-021/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-021.json"
    },
    {
      "id": "POL-022",
      "title": "The policy must be the brand's own, not a platform's",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-022/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-022.json"
    },
    {
      "id": "POL-023",
      "title": "A social profile is not a policy page",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-023/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-023.json"
    },
    {
      "id": "POL-024",
      "title": "The site hosting the policy must itself be live and real",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-024/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-024.json"
    },
    {
      "id": "POL-025",
      "title": "Exactly one privacy policy must be discoverable",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-025/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-025.json"
    },
    {
      "id": "POL-026",
      "title": "The policy on the site and the policy attached to the registration must agree",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-026/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-026.json"
    },
    {
      "id": "POL-027",
      "title": "The policy URLs must stay live after approval",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-027/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-027.json"
    },
    {
      "id": "POL-028",
      "title": "Keep a dated copy of both documents as submitted",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-028/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-028.json"
    },
    {
      "id": "POL-030",
      "title": "Both documents must be linked from the site footer on every page",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-030/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-030.json"
    },
    {
      "id": "POL-041",
      "title": "Offline and keyword opt-in copy must carry the route to the policy",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-041/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-041.json"
    },
    {
      "id": "POL-043",
      "title": "Print, QR and point-of-sale calls to action need a typeable policy URL",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-043/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-043.json"
    },
    {
      "id": "POL-044",
      "title": "The QR landing page must link a compliant policy and message-programme terms",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-044/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-044.json"
    },
    {
      "id": "POL-045",
      "title": "An offline opt-in does not relax the policy content requirements",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-045/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-045.json"
    },
    {
      "id": "POL-050",
      "title": "Privacy policy must state mobile opt-in data is not shared or sold",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-050/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-050.json"
    },
    {
      "id": "POL-053",
      "title": "The clause must say NOT SHARED, not merely \"not sold\"",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-053/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-053.json"
    },
    {
      "id": "POL-058",
      "title": "A service-provider carve-back is required, not prohibited",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-058/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-058.json"
    },
    {
      "id": "POL-060",
      "title": "No exception may permit sharing SMS opt-in data",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-060/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-060.json"
    },
    {
      "id": "POL-061",
      "title": "The non-sharing prohibition must hold even with consumer consent",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-061/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-061.json"
    },
    {
      "id": "POL-062",
      "title": "A general permission to share data with other companies fails even where SMS is never named",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-062/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-062.json"
    },
    {
      "id": "POL-063",
      "title": "A policy that says mobile opt-in data is shared is refused outright",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-063/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-063.json"
    },
    {
      "id": "POL-064",
      "title": "No clause anywhere in the policy may permit sharing data for third-party marketing",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-064/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-064.json"
    },
    {
      "id": "POL-065",
      "title": "Boilerplate \"trusted partners\" language must be removed or narrowed",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-065/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-065.json"
    },
    {
      "id": "POL-066",
      "title": "CCPA sold/shared disclosure must exclude phone numbers and SMS consent",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-066/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-066.json"
    },
    {
      "id": "POL-067",
      "title": "A Do-Not-Sell link must not appear to reopen the SMS carve-out",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-067/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-067.json"
    },
    {
      "id": "POL-068",
      "title": "An override sentence should say the SMS clause prevails",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-068/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-068.json"
    },
    {
      "id": "POL-069",
      "title": "The general policy and the SMS clause must not contradict each other",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-069/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-069.json"
    },
    {
      "id": "POL-070",
      "title": "No other document on the domain may contradict the SMS non-sharing clause",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-070/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-070.json"
    },
    {
      "id": "POL-071",
      "title": "No document may reserve the right to sell or share consent itself",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-071/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-071.json"
    },
    {
      "id": "POL-072",
      "title": "Consent must not be described as transferable or assignable",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-072/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-072.json"
    },
    {
      "id": "POL-073",
      "title": "The policy should say the brand does not use rented or purchased lists",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-073/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-073.json"
    },
    {
      "id": "POL-074",
      "title": "An explicit SMS opt-in carve-out belongs in the policy either way",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-074/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-074.json"
    },
    {
      "id": "POL-076",
      "title": "The privacy policy must describe data handling, not sell the programme",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-076/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-076.json"
    },
    {
      "id": "POL-078",
      "title": "A political brand is held to the same data-sharing ban",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-078/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-078.json"
    },
    {
      "id": "POL-079",
      "title": "A charity policy must bar anyone but the charity from using subscriber data",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-079/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-079.json"
    },
    {
      "id": "POL-080",
      "title": "A political donation programme must put its policy in front of donors",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-080/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-080.json"
    },
    {
      "id": "POL-090",
      "title": "The policy must say what messaging data is collected",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-090/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-090.json"
    },
    {
      "id": "POL-091",
      "title": "The policy must say how the number was obtained",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-091/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-091.json"
    },
    {
      "id": "POL-092",
      "title": "The policy must say what the messages are for",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-092/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-092.json"
    },
    {
      "id": "POL-093",
      "title": "A non-marketing programme's policy must not describe promotional texting",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-093/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-093.json"
    },
    {
      "id": "POL-094",
      "title": "The policy must describe how information is collected, used and shared",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-094/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-094.json"
    },
    {
      "id": "POL-095",
      "title": "The policy must say how to contact the sender",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-095/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-095.json"
    },
    {
      "id": "POL-096",
      "title": "The policy must state who the business is",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-096/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-096.json"
    },
    {
      "id": "POL-097",
      "title": "The policy must carry opt-out instructions of its own",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-097/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-097.json"
    },
    {
      "id": "POL-098",
      "title": "The policy must disclose message frequency",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-098/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-098.json"
    },
    {
      "id": "POL-099",
      "title": "The policy must carry the message-and-data-rates disclosure",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-099/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-099.json"
    },
    {
      "id": "POL-101",
      "title": "The registered brand name must appear in the privacy policy",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-101/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-101.json"
    },
    {
      "id": "POL-104",
      "title": "The policy must say how message content is handled",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-104/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-104.json"
    },
    {
      "id": "POL-105",
      "title": "The policy must describe its security safeguards at a high level",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-105/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-105.json"
    },
    {
      "id": "POL-106",
      "title": "The policy must state retention and consumer rights",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-106/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-106.json"
    },
    {
      "id": "POL-107",
      "title": "The policy must be consistent with applicable privacy law",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-107/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-107.json"
    },
    {
      "id": "POL-108",
      "title": "The policy must describe what the business actually does",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-108/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-108.json"
    },
    {
      "id": "POL-109",
      "title": "A cart-reminder programme must say how abandonment is detected",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-109/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-109.json"
    },
    {
      "id": "POL-110",
      "title": "A cart-reminder programme must be reflected in the terms",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-110/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-110.json"
    },
    {
      "id": "POL-111",
      "title": "An incentivised opt-in needs a financial-incentive notice that agrees with the SMS clause",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-111/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-111.json"
    },
    {
      "id": "POL-112",
      "title": "Location-triggered messaging must be described in the policy",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-112/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-112.json"
    },
    {
      "id": "POL-113",
      "title": "The policy needs a children's-data section",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-113/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-113.json"
    },
    {
      "id": "POL-114",
      "title": "A child-directed service owes the full COPPA notice",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-114/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-114.json"
    },
    {
      "id": "POL-115",
      "title": "Children's data needs a published retention policy",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-115/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-115.json"
    },
    {
      "id": "POL-116",
      "title": "A written internal do-not-call policy must exist",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-116/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-116.json"
    },
    {
      "id": "POL-117",
      "title": "No document may designate an exclusive way to revoke consent",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-117/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-117.json"
    },
    {
      "id": "POL-121",
      "title": "The policy must say what it covers",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-121/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-121.json"
    },
    {
      "id": "POL-122",
      "title": "The policy must list the categories of personal information collected",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-122/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-122.json"
    },
    {
      "id": "POL-123",
      "title": "The policy must list where the information came from",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-123/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-123.json"
    },
    {
      "id": "POL-124",
      "title": "The policy must state the purpose of each category",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-124/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-124.json"
    },
    {
      "id": "POL-125",
      "title": "The policy must list who the information is disclosed to",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-125/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-125.json"
    },
    {
      "id": "POL-126",
      "title": "The policy must say whether data was sold or shared in the last 12 months",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-126/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-126.json"
    },
    {
      "id": "POL-127",
      "title": "The policy must state its position on minors under 16",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-127/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-127.json"
    },
    {
      "id": "POL-128",
      "title": "The policy must state its position on sensitive personal information",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-128/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-128.json"
    },
    {
      "id": "POL-129",
      "title": "The policy must name or categorise its processors",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-129/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-129.json"
    },
    {
      "id": "POL-130",
      "title": "The policy must disclose cookies, pixels and tracking",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-130/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-130.json"
    },
    {
      "id": "POL-131",
      "title": "The policy must describe how opt-out preference signals are handled",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-131/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-131.json"
    },
    {
      "id": "POL-133",
      "title": "A brand handling EU or UK data needs a GDPR addendum",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-133/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-133.json"
    },
    {
      "id": "POL-134",
      "title": "The policy must enumerate the CCPA consumer rights",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-134/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-134.json"
    },
    {
      "id": "POL-135",
      "title": "The policy must say how to exercise those rights",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-135/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-135.json"
    },
    {
      "id": "POL-136",
      "title": "A business that sells or shares must publish the Do-Not-Sell link",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-136/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-136.json"
    },
    {
      "id": "POL-137",
      "title": "Other state-law addenda are needed where thresholds are met",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-137/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-137.json"
    },
    {
      "id": "POL-138",
      "title": "The policy should offer an accessible alternative format",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-138/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-138.json"
    },
    {
      "id": "POL-139",
      "title": "The policy should be printable",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-139/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-139.json"
    },
    {
      "id": "POL-140",
      "title": "Both documents must say how changes are communicated",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-140/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-140.json"
    },
    {
      "id": "POL-141",
      "title": "The published documents must show when they were last updated",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-141/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-141.json"
    },
    {
      "id": "POL-150",
      "title": "The SMS terms must exist as a document of their own",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-150/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-150.json"
    },
    {
      "id": "POL-151",
      "title": "The SMS terms must be about the messaging programme",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-151/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-151.json"
    },
    {
      "id": "POL-152",
      "title": "The SMS terms must be findable rather than buried",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-152/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-152.json"
    },
    {
      "id": "POL-156",
      "title": "Published policy must not contain unreplaced template tokens",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-156/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-156.json"
    },
    {
      "id": "POL-157",
      "title": "The documents must describe the programme as it runs today",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-157/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-157.json"
    },
    {
      "id": "POL-170",
      "title": "Terms must contain a dedicated SMS/messaging section",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-170/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-170.json"
    },
    {
      "id": "POL-171",
      "title": "The terms must describe the programme",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-171/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-171.json"
    },
    {
      "id": "POL-175",
      "title": "The terms must carry opt-out information",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-175/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-175.json"
    },
    {
      "id": "POL-176",
      "title": "SMS terms must state message frequency and that rates may apply",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-176/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-176.json"
    },
    {
      "id": "POL-177",
      "title": "The terms must say one final message follows an opt-out",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-177/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-177.json"
    },
    {
      "id": "POL-178",
      "title": "The terms should say how to re-subscribe",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-178/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-178.json"
    },
    {
      "id": "POL-180",
      "title": "SMS terms must state consent is not a condition of purchase",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-180/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-180.json"
    },
    {
      "id": "POL-181",
      "title": "The terms must describe every opt-in method actually used",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-181/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-181.json"
    },
    {
      "id": "POL-182",
      "title": "SMS terms must carry a carrier non-liability disclaimer",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-182/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-182.json"
    },
    {
      "id": "POL-184",
      "title": "SMS terms must list the supported opt-out and help keywords",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-184/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-184.json"
    },
    {
      "id": "POL-185",
      "title": "The terms should state a minimum age",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-185/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-185.json"
    },
    {
      "id": "POL-186",
      "title": "The terms should say the subscriber warrants the number is theirs",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-186/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-186.json"
    },
    {
      "id": "POL-187",
      "title": "The terms should state the right to change or end the programme",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-187/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-187.json"
    },
    {
      "id": "POL-188",
      "title": "SMS terms and privacy policy must link to each other",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-188/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-188.json"
    },
    {
      "id": "POL-189",
      "title": "The terms must distinguish transactional from promotional messages",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-189/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-189.json"
    },
    {
      "id": "POL-190",
      "title": "SMS terms must give a working support contact",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-190/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-190.json"
    },
    {
      "id": "POL-191",
      "title": "The terms must say the opt-in applies to this programme only",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-191/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-191.json"
    },
    {
      "id": "POL-192",
      "title": "A sweepstakes campaign needs its sweepstakes terms in the T&C",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-192/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-192.json"
    },
    {
      "id": "POL-193",
      "title": "The programme described in the terms must match the registered use case",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-193/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-193.json"
    },
    {
      "id": "POL-194",
      "title": "The terms must not say consumer data is shared",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-194/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-194.json"
    },
    {
      "id": "POL-195",
      "title": "No affiliate-marketing or lead-generation language in the terms",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-195/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-195.json"
    },
    {
      "id": "POL-196",
      "title": "Opt-out information must appear in all three places",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-196/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-196.json"
    },
    {
      "id": "POL-197",
      "title": "The programme name must appear on the call to action and in the terms",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-197/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-197.json"
    },
    {
      "id": "POL-198",
      "title": "STOP and HELP instructions must be legible — bold is not required",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-198/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-198.json"
    },
    {
      "id": "POL-200",
      "title": "The terms need an acceptance clause",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-200/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-200.json"
    },
    {
      "id": "POL-201",
      "title": "The terms must name the contracting entity and its address",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-201/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-201.json"
    },
    {
      "id": "POL-202",
      "title": "The terms should state a minimum age",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-202/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-202.json"
    },
    {
      "id": "POL-203",
      "title": "The terms should cover accounts and credentials",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-203/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-203.json"
    },
    {
      "id": "POL-204",
      "title": "The services in the terms must match the campaign description",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-204/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-204.json"
    },
    {
      "id": "POL-205",
      "title": "A retail brand's terms should cover orders and payment",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-205/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-205.json"
    },
    {
      "id": "POL-206",
      "title": "A retail brand's terms should cover shipping and returns",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-206/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-206.json"
    },
    {
      "id": "POL-207",
      "title": "The terms should include an acceptable-use clause",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-207/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-207.json"
    },
    {
      "id": "POL-208",
      "title": "The terms should cover user-generated content",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-208/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-208.json"
    },
    {
      "id": "POL-209",
      "title": "The terms should state intellectual-property ownership",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-209/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-209.json"
    },
    {
      "id": "POL-210",
      "title": "The terms should disclaim third-party links and services",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-210/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-210.json"
    },
    {
      "id": "POL-212",
      "title": "Email and other-channel marketing terms must be kept separate from SMS consent",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-212/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-212.json"
    },
    {
      "id": "POL-213",
      "title": "The terms should allocate risk",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-213/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-213.json"
    },
    {
      "id": "POL-214",
      "title": "Arbitration and class-waiver language needs a lawyer",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-214/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-214.json"
    },
    {
      "id": "POL-215",
      "title": "The terms should state governing law and venue",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-215/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-215.json"
    },
    {
      "id": "POL-216",
      "title": "The terms should cover termination",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-216/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-216.json"
    },
    {
      "id": "POL-217",
      "title": "The terms should carry the standard boilerplate",
      "layer": "POLICY_PAGE",
      "severity": "LOW",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-217/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-217.json"
    },
    {
      "id": "POL-219",
      "title": "The terms must carry a contact block",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-219/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-219.json"
    },
    {
      "id": "POL-225",
      "title": "Legal entity name must be identical across policy, terms and brand record",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-225/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-225.json"
    },
    {
      "id": "POL-226",
      "title": "The brand name must be identical across samples, SMS terms and the opt-in disclosure",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-226/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-226.json"
    },
    {
      "id": "POL-228",
      "title": "The terms, the use case and the samples must promise the same messages",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-228/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-228.json"
    },
    {
      "id": "POL-229",
      "title": "The support contact in the terms must match the HELP reply",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-229/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-229.json"
    },
    {
      "id": "POL-230",
      "title": "Keywords in the SMS terms must match the keywords declared on the campaign",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-230/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-230.json"
    },
    {
      "id": "POL-231",
      "title": "The ages in the terms and the privacy policy must not conflict",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-231/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-231.json"
    },
    {
      "id": "POL-232",
      "title": "Every opt-in surface on the site must appear in the terms",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-232/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-232.json"
    },
    {
      "id": "POL-233",
      "title": "The document dates must not predate the last change to the programme",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-233/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-233.json"
    },
    {
      "id": "POL-234",
      "title": "An opt-in incentive must be described in both documents",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-234/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-234.json"
    },
    {
      "id": "POL-240",
      "title": "Template policy and website content is a known reject cause",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-240/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-240.json"
    },
    {
      "id": "POL-241",
      "title": "A generated document must carry brand-specific facts",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-241/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-241.json"
    },
    {
      "id": "POL-242",
      "title": "Never assert a fact about the business nobody has confirmed",
      "layer": "POLICY_PAGE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-242/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-242.json"
    },
    {
      "id": "POL-243",
      "title": "Mark every unverified variable and block export until it is resolved",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-243/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-243.json"
    },
    {
      "id": "POL-244",
      "title": "Do not silently overwrite a policy the brand already publishes",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-244/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-244.json"
    },
    {
      "id": "POL-246",
      "title": "Export must carry a visible not-legal-advice disclaimer",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-246/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-246.json"
    },
    {
      "id": "POL-247",
      "title": "Do not claim a generated document makes the brand compliant",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-247/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-247.json"
    },
    {
      "id": "POL-248",
      "title": "Record who approved the document and when",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-248/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-248.json"
    },
    {
      "id": "POL-249",
      "title": "A regulated vertical needs a warning that sector rules sit on top",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-249/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-249.json"
    },
    {
      "id": "POL-250",
      "title": "A generated policy must not describe practices the site does not perform",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-250/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-250.json"
    },
    {
      "id": "POL-251",
      "title": "Say that carriers, not CTIA, enforce the non-sharing language",
      "layer": "POLICY_PAGE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-251/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-251.json"
    },
    {
      "id": "POL-252",
      "title": "A sole proprietor still needs a published policy",
      "layer": "POLICY_PAGE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/policy-page/pol-252/",
      "json": "https://ekas.io/rules/10dlc/policy-page/pol-252.json"
    },
    {
      "id": "WEB-001",
      "title": "A brand website URL is required",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-001/",
      "json": "https://ekas.io/rules/10dlc/website/web-001.json"
    },
    {
      "id": "WEB-004",
      "title": "The website value must fit the provider field limit",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-004/",
      "json": "https://ekas.io/rules/10dlc/website/web-004.json"
    },
    {
      "id": "WEB-006",
      "title": "The website should sit on a custom domain",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-006/",
      "json": "https://ekas.io/rules/10dlc/website/web-006.json"
    },
    {
      "id": "WEB-009",
      "title": "The website must resolve and return content",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-009/",
      "json": "https://ekas.io/rules/10dlc/website/web-009.json"
    },
    {
      "id": "WEB-012",
      "title": "A parked or for-sale domain is not a website",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-012/",
      "json": "https://ekas.io/rules/10dlc/website/web-012.json"
    },
    {
      "id": "WEB-013",
      "title": "A pre-launch placeholder is not a website",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-013/",
      "json": "https://ekas.io/rules/10dlc/website/web-013.json"
    },
    {
      "id": "WEB-014",
      "title": "Staging, admin and internal hosts must not be the brand website",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-014/",
      "json": "https://ekas.io/rules/10dlc/website/web-014.json"
    },
    {
      "id": "WEB-015",
      "title": "Pages the registration points at must not be broken",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-015/",
      "json": "https://ekas.io/rules/10dlc/website/web-015.json"
    },
    {
      "id": "WEB-016",
      "title": "The website must be machine-crawlable",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-016/",
      "json": "https://ekas.io/rules/10dlc/website/web-016.json"
    },
    {
      "id": "WEB-017",
      "title": "The site must not be gated by geo, bot challenge or app wall",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-017/",
      "json": "https://ekas.io/rules/10dlc/website/web-017.json"
    },
    {
      "id": "WEB-018",
      "title": "The site must be readable in English",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-018/",
      "json": "https://ekas.io/rules/10dlc/website/web-018.json"
    },
    {
      "id": "WEB-019",
      "title": "The site must stay live for the whole vetting window, not just at submission",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-019/",
      "json": "https://ekas.io/rules/10dlc/website/web-019.json"
    },
    {
      "id": "WEB-021",
      "title": "The site must not be behind a login or access wall",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-021/",
      "json": "https://ekas.io/rules/10dlc/website/web-021.json"
    },
    {
      "id": "WEB-022",
      "title": "A login-gated product needs a public description page",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-022/",
      "json": "https://ekas.io/rules/10dlc/website/web-022.json"
    },
    {
      "id": "WEB-024",
      "title": "The site must not look inauthentic",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-024/",
      "json": "https://ekas.io/rules/10dlc/website/web-024.json"
    },
    {
      "id": "WEB-026",
      "title": "The site must look established rather than erected for the registration",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-026/",
      "json": "https://ekas.io/rules/10dlc/website/web-026.json"
    },
    {
      "id": "WEB-027",
      "title": "The site must be more than a bare lead-capture form",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-027/",
      "json": "https://ekas.io/rules/10dlc/website/web-027.json"
    },
    {
      "id": "WEB-028",
      "title": "A campaign landing page is not the brand website",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-028/",
      "json": "https://ekas.io/rules/10dlc/website/web-028.json"
    },
    {
      "id": "WEB-030",
      "title": "E-commerce brands need a published catalog",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-030/",
      "json": "https://ekas.io/rules/10dlc/website/web-030.json"
    },
    {
      "id": "WEB-031",
      "title": "The business name on the site must match the registered brand",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-031/",
      "json": "https://ekas.io/rules/10dlc/website/web-031.json"
    },
    {
      "id": "WEB-032",
      "title": "The business name must be visible on the page, not only in the markup",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-032/",
      "json": "https://ekas.io/rules/10dlc/website/web-032.json"
    },
    {
      "id": "WEB-034",
      "title": "The site must describe the business and the messaging programme",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-034/",
      "json": "https://ekas.io/rules/10dlc/website/web-034.json"
    },
    {
      "id": "WEB-035",
      "title": "The reseller platform website must not stand in for the customer site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-035/",
      "json": "https://ekas.io/rules/10dlc/website/web-035.json"
    },
    {
      "id": "WEB-037",
      "title": "The site, the registered name and the registered address must agree",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-037/",
      "json": "https://ekas.io/rules/10dlc/website/web-037.json"
    },
    {
      "id": "WEB-039",
      "title": "Contact details on the site must match the brand record",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-039/",
      "json": "https://ekas.io/rules/10dlc/website/web-039.json"
    },
    {
      "id": "WEB-043",
      "title": "The site must have an About page and a Contact page",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-043/",
      "json": "https://ekas.io/rules/10dlc/website/web-043.json"
    },
    {
      "id": "WEB-044",
      "title": "The footer should carry a phone number, an email and a street address",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-044/",
      "json": "https://ekas.io/rules/10dlc/website/web-044.json"
    },
    {
      "id": "WEB-045",
      "title": "A privacy policy must be reachable from the website",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-045/",
      "json": "https://ekas.io/rules/10dlc/website/web-045.json"
    },
    {
      "id": "WEB-046",
      "title": "Terms must be reachable from the website",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-046/",
      "json": "https://ekas.io/rules/10dlc/website/web-046.json"
    },
    {
      "id": "WEB-047",
      "title": "The site must show business contact information",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-047/",
      "json": "https://ekas.io/rules/10dlc/website/web-047.json"
    },
    {
      "id": "WEB-054",
      "title": "A brand with a website must publish its policies as web pages, not as PDFs",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-054/",
      "json": "https://ekas.io/rules/10dlc/website/web-054.json"
    },
    {
      "id": "WEB-055",
      "title": "The site should describe the SMS programme",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-055/",
      "json": "https://ekas.io/rules/10dlc/website/web-055.json"
    },
    {
      "id": "WEB-056",
      "title": "Opt-in and opt-out information must be clear on the site",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-056/",
      "json": "https://ekas.io/rules/10dlc/website/web-056.json"
    },
    {
      "id": "WEB-057",
      "title": "Website content must be consistent with the declared use case",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-057/",
      "json": "https://ekas.io/rules/10dlc/website/web-057.json"
    },
    {
      "id": "WEB-058",
      "title": "Website, description, flow and samples must identify one sender",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-058/",
      "json": "https://ekas.io/rules/10dlc/website/web-058.json"
    },
    {
      "id": "WEB-059",
      "title": "The site referenced in the message flow must be the registered brand site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-059/",
      "json": "https://ekas.io/rules/10dlc/website/web-059.json"
    },
    {
      "id": "WEB-060",
      "title": "Declared attributes must be consistent with the crawled site",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-060/",
      "json": "https://ekas.io/rules/10dlc/website/web-060.json"
    },
    {
      "id": "WEB-062",
      "title": "An undeclared additional use case must be surfaced",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-062/",
      "json": "https://ekas.io/rules/10dlc/website/web-062.json"
    },
    {
      "id": "WEB-063",
      "title": "Charitable solicitation on the site forces the charity use case",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-063/",
      "json": "https://ekas.io/rules/10dlc/website/web-063.json"
    },
    {
      "id": "WEB-064",
      "title": "Political content on the site forces the political use case",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-064/",
      "json": "https://ekas.io/rules/10dlc/website/web-064.json"
    },
    {
      "id": "WEB-066",
      "title": "Lending content anywhere requires the direct-lending declaration",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-066/",
      "json": "https://ekas.io/rules/10dlc/website/web-066.json"
    },
    {
      "id": "WEB-068",
      "title": "A cart-reminder programme must say so in the opt-in terms on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-068/",
      "json": "https://ekas.io/rules/10dlc/website/web-068.json"
    },
    {
      "id": "WEB-069",
      "title": "The described opt-in and the live opt-in must both pass, separately",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-069/",
      "json": "https://ekas.io/rules/10dlc/website/web-069.json"
    },
    {
      "id": "WEB-070",
      "title": "The call to action described in the registration must exist on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-070/",
      "json": "https://ekas.io/rules/10dlc/website/web-070.json"
    },
    {
      "id": "WEB-072",
      "title": "A verbal-only programme should not point at a website with no consent surface",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-072/",
      "json": "https://ekas.io/rules/10dlc/website/web-072.json"
    },
    {
      "id": "WEB-073",
      "title": "The brand website must serve a certificate that verifies",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-073/",
      "json": "https://ekas.io/rules/10dlc/website/web-073.json"
    },
    {
      "id": "WEB-074",
      "title": "Pages must not load sub-resources over HTTP",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-074/",
      "json": "https://ekas.io/rules/10dlc/website/web-074.json"
    },
    {
      "id": "WEB-075",
      "title": "Submitted URLs must not redirect",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-075/",
      "json": "https://ekas.io/rules/10dlc/website/web-075.json"
    },
    {
      "id": "WEB-077",
      "title": "The website must not redirect to an unrelated brand",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-077/",
      "json": "https://ekas.io/rules/10dlc/website/web-077.json"
    },
    {
      "id": "WEB-079",
      "title": "A redirected URL is reviewed at its destination, not where it was submitted",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-079/",
      "json": "https://ekas.io/rules/10dlc/website/web-079.json"
    },
    {
      "id": "WEB-081",
      "title": "A newly registered domain is scored as higher risk",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-081/",
      "json": "https://ekas.io/rules/10dlc/website/web-081.json"
    },
    {
      "id": "WEB-083",
      "title": "Hosting shared with malicious neighbours is scored against the domain",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-083/",
      "json": "https://ekas.io/rules/10dlc/website/web-083.json"
    },
    {
      "id": "WEB-084",
      "title": "A lookalike domain is treated as a phishing signal",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-084/",
      "json": "https://ekas.io/rules/10dlc/website/web-084.json"
    },
    {
      "id": "WEB-085",
      "title": "Adverse reputation on the domain blocks the brand",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-085/",
      "json": "https://ekas.io/rules/10dlc/website/web-085.json"
    },
    {
      "id": "WEB-090",
      "title": "The message flow must deep-link the opt-in page, not the homepage",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-090/",
      "json": "https://ekas.io/rules/10dlc/website/web-090.json"
    },
    {
      "id": "WEB-098",
      "title": "The QR landing page must be publicly reachable",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-098/",
      "json": "https://ekas.io/rules/10dlc/website/web-098.json"
    },
    {
      "id": "WEB-101",
      "title": "The QR landing page must display the registered brand name",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-101/",
      "json": "https://ekas.io/rules/10dlc/website/web-101.json"
    },
    {
      "id": "WEB-107",
      "title": "Age-restricted content on the site must sit behind a working age gate",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-107/",
      "json": "https://ekas.io/rules/10dlc/website/web-107.json"
    },
    {
      "id": "WEB-109",
      "title": "The age gate must come before the restricted content, not after it",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-109/",
      "json": "https://ekas.io/rules/10dlc/website/web-109.json"
    },
    {
      "id": "WEB-110",
      "title": "The age gate must not be trivially bypassable",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-110/",
      "json": "https://ekas.io/rules/10dlc/website/web-110.json"
    },
    {
      "id": "WEB-111",
      "title": "Alcohol delivery must gate the ordering flow, not just a splash page",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-111/",
      "json": "https://ekas.io/rules/10dlc/website/web-111.json"
    },
    {
      "id": "WEB-112",
      "title": "An alcohol age gate must enforce 21, not 18",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-112/",
      "json": "https://ekas.io/rules/10dlc/website/web-112.json"
    },
    {
      "id": "WEB-115",
      "title": "A landing page reached from a message must publish a postal address",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-115/",
      "json": "https://ekas.io/rules/10dlc/website/web-115.json"
    },
    {
      "id": "WEB-116",
      "title": "A landing page that collects personal information must publish a privacy policy",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-116/",
      "json": "https://ekas.io/rules/10dlc/website/web-116.json"
    },
    {
      "id": "WEB-119",
      "title": "The whole site must be screened for prohibited content, not just the landing page",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-119/",
      "json": "https://ekas.io/rules/10dlc/website/web-119.json"
    },
    {
      "id": "WEB-122",
      "title": "No adult content on the site or any page it links to",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-122/",
      "json": "https://ekas.io/rules/10dlc/website/web-122.json"
    },
    {
      "id": "WEB-123",
      "title": "No hate-group brand",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-123/",
      "json": "https://ekas.io/rules/10dlc/website/web-123.json"
    },
    {
      "id": "WEB-124",
      "title": "No advertising that ridicules a protected group or trivialises an atrocity",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-124/",
      "json": "https://ekas.io/rules/10dlc/website/web-124.json"
    },
    {
      "id": "WEB-125",
      "title": "No graphic violence on the linked site",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-125/",
      "json": "https://ekas.io/rules/10dlc/website/web-125.json"
    },
    {
      "id": "WEB-126",
      "title": "No firearms, ammunition or explosives sales on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-126/",
      "json": "https://ekas.io/rules/10dlc/website/web-126.json"
    },
    {
      "id": "WEB-127",
      "title": "No tobacco or vape product content on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-127/",
      "json": "https://ekas.io/rules/10dlc/website/web-127.json"
    },
    {
      "id": "WEB-128",
      "title": "No cannabis, CBD, hemp or kratom content anywhere on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-128/",
      "json": "https://ekas.io/rules/10dlc/website/web-128.json"
    },
    {
      "id": "WEB-129",
      "title": "No gambling content on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-129/",
      "json": "https://ekas.io/rules/10dlc/website/web-129.json"
    },
    {
      "id": "WEB-130",
      "title": "No high-risk financial services on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-130/",
      "json": "https://ekas.io/rules/10dlc/website/web-130.json"
    },
    {
      "id": "WEB-131",
      "title": "No lead-generation, affiliate-marketing or SEO-services content on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-131/",
      "json": "https://ekas.io/rules/10dlc/website/web-131.json"
    },
    {
      "id": "WEB-133",
      "title": "Sweepstakes content on the site must be registered as sweepstakes",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-133/",
      "json": "https://ekas.io/rules/10dlc/website/web-133.json"
    },
    {
      "id": "WEB-134",
      "title": "No multilevel-marketing content on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-134/",
      "json": "https://ekas.io/rules/10dlc/website/web-134.json"
    },
    {
      "id": "WEB-135",
      "title": "No site impersonating another service to collect credentials",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-135/",
      "json": "https://ekas.io/rules/10dlc/website/web-135.json"
    },
    {
      "id": "WEB-136",
      "title": "No malware or insecure downloads served from the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-136/",
      "json": "https://ekas.io/rules/10dlc/website/web-136.json"
    },
    {
      "id": "WEB-137",
      "title": "No deceptive marketing claims on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-137/",
      "json": "https://ekas.io/rules/10dlc/website/web-137.json"
    },
    {
      "id": "WEB-139",
      "title": "No counterfeit goods or falsified documents sold on the site",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-139/",
      "json": "https://ekas.io/rules/10dlc/website/web-139.json"
    },
    {
      "id": "WEB-140",
      "title": "No law-evasion or questionable-legality products in the catalog",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-140/",
      "json": "https://ekas.io/rules/10dlc/website/web-140.json"
    },
    {
      "id": "WEB-141",
      "title": "No infringing content on the site",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-141/",
      "json": "https://ekas.io/rules/10dlc/website/web-141.json"
    },
    {
      "id": "WEB-142",
      "title": "A storefront catalog must be screened for SHAFT merchandise before submitting through a strict platform",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-142/",
      "json": "https://ekas.io/rules/10dlc/website/web-142.json"
    },
    {
      "id": "WEB-143",
      "title": "Affiliate marketing plus lending on the site is a harder rejection than either alone",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-143/",
      "json": "https://ekas.io/rules/10dlc/website/web-143.json"
    },
    {
      "id": "WEB-145",
      "title": "A business social profile can stand in where no website exists",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-145/",
      "json": "https://ekas.io/rules/10dlc/website/web-145.json"
    },
    {
      "id": "WEB-146",
      "title": "A substituted profile must be a business page, not a personal one",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-146/",
      "json": "https://ekas.io/rules/10dlc/website/web-146.json"
    },
    {
      "id": "WEB-147",
      "title": "A social profile must not stand in for a website the brand has",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-147/",
      "json": "https://ekas.io/rules/10dlc/website/web-147.json"
    },
    {
      "id": "WEB-148",
      "title": "The profile substitute is for small businesses without an established site",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-148/",
      "json": "https://ekas.io/rules/10dlc/website/web-148.json"
    },
    {
      "id": "WEB-152",
      "title": "A sole proprietor site must not present as a registered company",
      "layer": "WEBSITE",
      "severity": "HIGH",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-152/",
      "json": "https://ekas.io/rules/10dlc/website/web-152.json"
    },
    {
      "id": "WEB-153",
      "title": "A charity campaign must supply both its own site and an accreditation listing",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-153/",
      "json": "https://ekas.io/rules/10dlc/website/web-153.json"
    },
    {
      "id": "WEB-154",
      "title": "A political campaign must supply a resolving organisation website",
      "layer": "WEBSITE",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/website/web-154/",
      "json": "https://ekas.io/rules/10dlc/website/web-154.json"
    },
    {
      "id": "WEB-157",
      "title": "A changed domain must be updated on the brand record",
      "layer": "WEBSITE",
      "severity": "MEDIUM",
      "phase": "post",
      "url": "https://ekas.io/rules/10dlc/website/web-157/",
      "json": "https://ekas.io/rules/10dlc/website/web-157.json"
    },
    {
      "id": "XBC-001",
      "title": "Sole proprietor brands may only run the sole proprietor use case",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-001/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-001.json"
    },
    {
      "id": "XBC-002",
      "title": "Charity use case requires a verified 501(c)(3) non-profit brand",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-002/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-002.json"
    },
    {
      "id": "XBC-003",
      "title": "Political use case requires a non-profit brand with political vetting",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-003/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-003.json"
    },
    {
      "id": "XBC-004",
      "title": "Emergency and public-safety use cases exclude sole proprietors",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-004/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-004.json"
    },
    {
      "id": "XBC-005",
      "title": "Sole proprietor brand and campaign both require a reference ID",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-005/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-005.json"
    },
    {
      "id": "XBC-006",
      "title": "The brand must be verified before its campaign is submitted",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-006/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-006.json"
    },
    {
      "id": "XBC-007",
      "title": "A public company must finish two-factor identity before any campaign",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-007/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-007.json"
    },
    {
      "id": "XBC-008",
      "title": "A sole proprietor gets one campaign and one number",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-008/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-008.json"
    },
    {
      "id": "XBC-010",
      "title": "Every sample message must identify the registered brand",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-010/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-010.json"
    },
    {
      "id": "XBC-011",
      "title": "Opt-in description must carry the registered brand name",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-011/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-011.json"
    },
    {
      "id": "XBC-012",
      "title": "HELP reply must identify the brand",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-012/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-012.json"
    },
    {
      "id": "XBC-013",
      "title": "Brand, website and campaign content must describe the same business",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-013/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-013.json"
    },
    {
      "id": "XBC-014",
      "title": "The description must name the registered business",
      "layer": "CROSS",
      "severity": "BLOCKING",
      "phase": "approval",
      "url": "https://ekas.io/rules/10dlc/cross/xbc-014/",
      "json": "https://ekas.io/rules/10dlc/cross/xbc-014.json"
    }
  ]
}
