JSON API · Datatype

Agitation

City demonstration-law documents (type: "agitation"): signage, sound, recording, permits, buffer zones, and police interaction across the municipal, county, state, and federal layers. Everything the datatype contains is on this page.

A record, end to end

One real published city record, abridged. Flip the tiers to see exactly what each file adds — every field below is documented on this page.

agitation/<slug>.json
{
  "schema": "abhortion.org/agitation.summary/v1",
  "id": "agitation-us-ma-boston",
  "type": "agitation",
  "level": "city",
  "jurisdiction": "Boston, Massachusetts",
  "as_of_date": "2026-07-18",
  "research_completed_date": "2026-07-18",
  "headline": "Moderate rules; strong sidewalk speech rights",
  "summary": "Peaceful sidewalk advocacy generally needs no permit, but Boston regulates amplification, noise, obstruction,…",
  "machine_readable_summary": {
    "overall_posture": "moderate",
    "recording_consent_regime": "all_party",
    "open_recording_in_public_lawful": true,
    "right_to_record_police_recognized": "recognized",
    "amplification_permit_required": "conditional",
    "amplification_banned_areas": true,
    "…": "+20 more fields"
  },
  "links": {
    "html": "https://www.abhortion.org/agitation/boston.html",
    "markdown": "https://www.abhortion.org/agitation/boston.md",
    "summary_json": "https://www.abhortion.org/agitation/boston.json",
    "full_json": "https://www.abhortion.org/agitation/boston-full.json",
    "verbose_json": "https://www.abhortion.org/agitation/boston-verbose.json"
  }
}

Lines in this colour are elisions made for this page, not part of the format.

Which file do I want?

If you are…Fetch
Building a map, a comparison table, or a filter over jurisdictions<id>.json S
Rendering the written analysis — sections, penalties, timelines<id>-full.json F
Quoting the law, or checking a claim against its source<id>-verbose.json V

The tiers are cumulative — moving up a tier never drops information. The full file contains every field the summary file has; the verbose file contains everything in the full file. The one transformation: each compact sources array is expanded in place into a richer citations array — the same links, plus verbatim quotes and formal citations. The S/F/V badges above each table mark which tiers carry those fields.

  • <id>.jsonsummary S: identity, headline/summary, the full machine-readable summary, and links.
  • <id>-full.jsonfull F: all of the above plus the whole document body (overview, sections, penalties, changes, authorities) with compact sources — but without the heavy legal-analysis/quote/citation detail.
  • <id>-verbose.jsonverbose V: everything in the full file, with sources upgraded to full citations and each finding gaining legal_analysis and a verbatim quote.

Conventions

These hold across every file documented on this page.

MinifiedAll JSON is emitted minified (single line). Pretty-print it locally if you need to read it.
Key-addressableContent is reached by key, not by searching arrays — e.g. sections.methods.medication, sections.exceptions.life. The only fixed-enum array (exceptions) is published as an object keyed by exception_type.
Absent = not applicableEmpty values (null, "", [], {}) are omitted. A missing key means "not present / not applicable", never "we forgot".
Ordered lists stay arrayspenalties, recent_changes, pending_changes, and key_authorities are arrays — order is meaningful and they have no unique key.
Absolute cross-linksThe links block on every record uses absolute https://www.abhortion.org URLs.

Files

  • Index: https://www.abhortion.org/agitation.json
  • Per city: /agitation/<slug>.json + -full.json + -verbose.json (e.g. minneapolis)
Index items carry id, city, state, jurisdiction, population_rank, a posture object ({ code, label }), and links. Note the per-city documents do not repeat state/counties/population_rank — those live on the index item.
one item from https://www.abhortion.org/agitation.json
{
  "id": "agitation-us-ma-boston",
  "city": "Boston",
  "state": "MA",
  "jurisdiction": "Boston, Massachusetts",
  "population_rank": 25,
  "posture": {
    "code": "moderate",
    "label": "Moderate regulation"
  },
  "links": {
    "html": "https://www.abhortion.org/agitation/boston.html",
    "markdown": "https://www.abhortion.org/agitation/boston.md",
    "json": "https://www.abhortion.org/agitation/boston.json"
  }
}

The record envelope

Every record documented on this page shares this top-level shape.

FieldTypeTiersDescription
schemastringSFVIdentifies the module and tier, e.g. abhortion.org/legislation.summary/v1. The three tiers use the suffixes .summary, .full, and .verbose.
idstringSFVStable record id, e.g. legality-us-mn or agitation-us-mn-minneapolis.
typestringSFVModule: legislation or agitation.
levelstringSFVJurisdiction level: state, federal, province, or city.
jurisdictionstringSFVHuman-readable jurisdiction name (e.g. "Minnesota", "Minneapolis, Minnesota").
as_of_datestring (YYYY-MM-DD)SFVDate the legal analysis is current through.
research_completed_datestring (YYYY-MM-DD)SFVDate the underlying research was completed.
headlinestringSFVShort table-cell label for the jurisdiction (extracted from the overview finding).
summarystringSFVOne-sentence bottom line (extracted from the overview finding).
machine_readable_summaryobjectSFVThe flat, machine-readable determination set — present in every tier (it is what makes the light summary file self-sufficient). Module-specific — documented per document type below. See machine_readable_summary.
overviewfindingSFVThe jurisdiction overview, as a finding atom (the source of headline and summary).
sectionsobjectSFVThe body content, keyed by section name. Documented per document type below. See sections.
penaltiesarraySFVPenalty rows (see “Penalties, changes & authorities”).
recent_changesarraySFVDated timeline of changes.
pending_changesarraySFVLive litigation / legislation / rulemaking.
key_authoritiesarraySFVThe controlling authorities.
research_notesobjectSFVOverall confidence, unresolved gaps, and editor notes.
linksobjectSFVAbsolute URLs to the sibling representations: html, markdown, and the JSON tiers (summary_json, full_json, verbose_json).

The finding atom

The recurring unit of content. overview is one; most sections leaves are too. Its fields depend on the tier.

FieldTypeTiersDescription
titlestringSFVShort table-cell label — the finding’s bottom line in 2–6 words.
summarystringSFVExactly one sentence: the finding’s bottom line, display-ready.
descriptionstringSFVA 2–6 sentence plain-language explanation a layperson can read as-is.
typestringSFVPresent only on exception findings — the exception_type value (also the key under sections.exceptions).
countystringSFVPresent only on legal_layers.county_law findings (agitation) — the county name.
verificationenumSFVHow well-confirmed the finding is.
verified
The quoted text was confirmed at the cited URL.
verify_before_publication
Well-supported, but the exact text was not confirmed at a primary source. Confirm before relying on it.
semi_verified
Added by the research runner, not the model: the model marked it verified but none of the cited pages were opened in full during the run (matched search snippets only). Stronger than verify_before_publication, weaker than verified.
conflicting_sources
Authorities genuinely disagree; the conflict is named in the finding’s conflicting_authority (verbose tier).
not_applicable
The jurisdiction has no law on this point; the summaries explain the resulting default.
confidenceenumSFVHow settled the legal conclusion is.
high
The legal conclusion is settled.
medium
Reasonably settled, some uncertainty.
low
Unsettled — e.g. an enjoined statute whose future effect is unclear. Independent of whether the quote itself was verified.
sourcesarray of {name, href}SFVCompact source links (full tier only). Each: name (publisher) + href (direct URL).
legal_analysisstringSFVThe precise legal treatment for a legally literate reader (verbose tier only).
quotestringSFVThe single most operative statutory/case text, verbatim (verbose tier only).
conflicting_authoritystringSFVPresent when authorities disagree — names the conflict and cites both sides.
notestringSFVAn editor’s note to the reader: caveats or what to re-check.
citationsarray of citation objectsSFVFull citations (verbose tier only) — replaces sources. See below.

machine_readable_summary

All fields below appear in SFV summary · full · verbose
FieldTypeDescription
overall_postureenumHow heavily the city regulates public demonstration overall, as enforced.
permissive
Light regulation.
moderate
Moderate regulation.
restrictive
Heavy regulation.
recording_consent_regimeenumThe STATE’s conversation-recording rule.
one_party
One-party consent.
all_party
All-party consent.
mixed
Differs by context (e.g. criminal vs civil, in-person vs electronic).
open_recording_in_public_lawfulboolean | 'qualified'Whether openly recording people in public is lawful.
right_to_record_police_recognizedenumWhether the controlling federal circuit recognizes a right to record police in public.
recognized
Recognized.
qualified
Recognized with significant qualifications.
unrecognized
Not recognized in this circuit.
amplification_permit_requiredenumWhether amplified sound on public sidewalks/parks requires a permit.
always
Always required.
conditional
Depends on location, time, or device.
no
Not required.
amplification_banned_areasbooleanWhether any public areas flatly ban amplified sound.
noise_standardenumThe measurement standard the operative noise ordinance uses.
decibel
A decibel limit.
plainly_audible
A "plainly audible at N feet" standard.
distance
A distance-based standard.
nuisance
A general nuisance standard.
multiple
Multiple standards combined.
daytime_noise_limitstring | nullDisplay string of the operative daytime limit (e.g. "70 dBA at 25 ft"); null if none.
quiet_hoursstring | nullDisplay string (e.g. "10pm–7am"); null if none.
medical_facility_noise_rulebooleanA noise rule specific to hospitals/healthcare facilities.
handheld_sign_restrictionsbooleanAny restriction on carrying handheld signs on public sidewalks.
sign_pole_material_rulesbooleanRestrictions on sticks, poles, or sign-support materials.
graphic_imagery_restrictionsboolean | 'unclear'Any ordinance/practice restricting graphic sign imagery.
assembly_permit_thresholdnumber | nullParticipants above which a permit is required for a stationary sidewalk assembly; 0 if always required, null if never.
spontaneous_assembly_exceptionboolean | 'not_applicable'Whether the permit scheme exempts spontaneous/small assemblies.
leafleting_restrictedbooleanAny restriction on leafleting beyond littering laws.
healthcare_buffer_zoneenumAny buffer/bubble zone around healthcare facilities applicable in this city.
none
None.
municipal
Municipal only.
state
State only.
both
Both municipal and state.
buffer_zone_summarystring | nullDisplay string (e.g. "8-ft bubble within 100 ft of entrance (state)"); null if none.
residential_picketing_banenumRestrictions on picketing outside private residences.
none
No restriction.
targeted_only
Reaches targeted residential picketing (incl. via harassment/restraining-order law), not a broad ban.
broad
A broad ban.
sidewalk_obstruction_ordinancebooleanAn ordinance criminalizing obstructing sidewalks or entrances.
school_area_restrictionsbooleanDemonstration/noise restrictions specific to schools in session.
county_code_applies_in_cityenumWhether county ordinances operate inside city limits.
no
County code does not apply in the city.
partially
Applies partially.
yes
Applies.
no_county
Independent city or federal district — no county layer.
anti_mask_lawbooleanA state/local law restricting masks/face coverings at gatherings.
stop_and_identify_statebooleanWhether state (or DC) law compels identifying oneself to police during a lawful detention.
typical_violation_levelstringDisplay string for how ordinance violations are typically charged (e.g. "civil infraction, $250").
major_pending_changebooleanTrue iff the pending_changes array is non-empty.

sections

All sections below appear in SFV full · verbose
Section keyShapeWhat it documents
legal_layersgroup of findingsWhich law governs (which_law_governs), county_law (an array of findings, one per county, each with a county field — empty for independent cities/DC), and the First Amendment overlay (federal_baseline).
signagegroup of findings — keys: handheld_signs, sticks_poles_materials, stationary_and_attached_displays, graphic_imageryRules on signs, sign supports, attached/unattended displays, and graphic imagery.
sound_and_amplificationgroup of findings — keys: amplified_sound, noise_limits, unamplified_voice, sensitive_locationsAmplification permits, noise standards, unamplified voice, and sensitive locations.
recording_and_photographygroup of findings — keys: state_consent_law, recording_in_public, recording_police, publishing_footage, dronesConsent law, recording in public / of police, publishing footage, and drones.
assembly_and_permitsgroup of findings — keys: permit_scheme, fees_insurance_indemnification, spontaneous_and_small_groups, denial_and_appealPermit thresholds, fees/insurance, small-group exemptions, and denial/appeal.
location_rulesgroup of findings — keys: sidewalks_and_streets, parks_and_plazas, healthcare_buffer_zones, residential_picketing, schools_and_other_sensitive_sitesObstruction, parks, healthcare buffer zones, residential picketing, and sensitive sites.
person_to_persongroup of findings — keys: leafleting, approaching_people, harassment_and_disorderly, anonymity_and_masksLeafleting, approaching listeners, harassment/disorderly law, and masks/anonymity.
police_interactiongroup of findings — keys: identification, dispersal_orders, common_charges_and_outcomesStop-and-identify, dispersal orders, and the charges demonstrators actually receive.
enforcement_realityfindingLaw-in-effect vs law-on-the-books: what is actually enforced, consent decrees, recent incidents.
federal_jurisdiction_layersfinding (DC only)Washington, DC adds this after enforcement_reality.

penalties[]

Agitation penalty rows carry a level (offense grade) instead of an actor.

All fields below appear in SFV full · verbose
FieldTypeDescription
levelstringOffense grade — e.g. "misdemeanor", "felony class C" (agitation documents). Absent on legislation rows.
offensestringThe offense as charged, with code section.
penaltystringSentence range, fines, license consequences.
verificationenumVerification status for the row.
verified
The quoted text was confirmed at the cited URL.
verify_before_publication
Well-supported, but the exact text was not confirmed at a primary source. Confirm before relying on it.
semi_verified
Added by the research runner, not the model: the model marked it verified but none of the cited pages were opened in full during the run (matched search snippets only). Stronger than verify_before_publication, weaker than verified.
conflicting_sources
Authorities genuinely disagree; the conflict is named in the finding’s conflicting_authority (verbose tier).
not_applicable
The jurisdiction has no law on this point; the summaries explain the resulting default.
sourcesarray of {name, href}Compact source links (full tier).
citationsarray of citation objectsFull citations (verbose tier) — replaces sources.

recent_changes[]

A dated timeline of changes already in force, oldest first.

All fields below appear in SFV full · verbose
FieldTypeDescription
datestring (YYYY-MM-DD)When the change took effect.
eventstringWhat changed, as display text.
sourcesarray of {name, href}Compact source links (full tier).
citationsarray of citation objectsFull citations (verbose tier) — replaces sources.

pending_changes[]

Live litigation, bills, ballot measures, and rulemaking that could still move the law.

All fields below appear in SFV full · verbose
FieldTypeDescription
namestringThe case, bill, measure, or rulemaking.
statusstringWhere it currently stands.
effectstringWhat would change if it succeeds.
typeenumWhat kind of pending change this is.
litigation
Live court case.
legislation
A pending bill (state or federal legislature).
ballot_measure
A qualified ballot initiative (US state).
rulemaking
Pending administrative rulemaking (US federal).
executive_action
Pending executive action (US federal).
regulation
Pending regulation (Canada).
ordinance
A pending city ordinance (agitation).
state_legislation
A pending state bill affecting a city (agitation).
policy
An announced policy or enforcement change.
sourcesarray of {name, href}Compact source links (full tier).
citationsarray of citation objectsFull citations (verbose tier) — replaces sources.

key_authorities[]

The controlling authorities for the document, deduplicated.

All fields below appear in SFV full · verbose
FieldTypeDescription
namestringCommon name of the authority.
citationstringFormal legal citation.
urlstringDirect link to the authority.
whystringOne sentence on why it controls.
typeenumKind of authority.
statute
A statute or code section.
case
A judicial opinion.
regulation
A regulation.
constitution
A constitutional provision.
ballot_measure
A ballot measure (US state).
agency_action
An agency action (federal documents).
regulator_policy
A professional-regulator policy (Canada).
municipal_code
A municipal code section (agitation).
county_code
A county code section (agitation).
consent_decree
A consent decree (agitation).

research_notes

How much weight the document itself will bear.

All fields below appear in SFV full · verbose
FieldTypeDescription
overall_confidenceenumConfidence in the document as a whole.
high
The legal conclusion is settled.
medium
Reasonably settled, some uncertainty.
low
Unsettled — e.g. an enjoined statute whose future effect is unclear. Independent of whether the quote itself was verified.
editor_notesstringEditor’s note on the document. Present only when non-empty.
gapsarray of stringsUnresolved points the research could not settle. Present only when non-empty.

Source & citation objects

In the full tier, sources are compact { name, href } objects. In the verbose tier they are replaced by richer citation objects.

Citation fields appear in SFV verbose
FieldTypeDescription
namestringPublisher of the URL (e.g. "Minnesota Office of the Revisor of Statutes").
hrefstringDirect URL to the specific provision or opinion.
citationstringFormal legal citation (e.g. "Minn. Stat. § 145.409").
pinpointstringSubsection, paragraph, or page the quote appears in. Absent if the whole document is the target.
quotestringThe exact text at this URL supporting the claim, verbatim.
source_typeenumKind of source.
statute
A statute or code section.
case
A judicial opinion.
regulation
An administrative regulation or rule.
constitution
A constitutional provision.
ag_opinion
An attorney-general opinion.
agency_guidance
Guidance issued by an agency.
ballot_measure
A ballot initiative or referendum.
municipal_code
A city ordinance / municipal code section (agitation).
county_code
A county ordinance / code section (agitation).
consent_decree
A consent decree or settlement (agitation).
secondary
A secondary source (news, advocacy, scholarship) — only ever an additional citation, never the sole support.
accessedstringWhich edition/version of the source the quote reflects. Absent if not meaningful.