Skip to content

Conversation

jacobmalleau
Copy link
Collaborator

@jacobmalleau jacobmalleau commented Apr 21, 2025

Adding the ability to handle enforcement related events in the CDS Curb Events and Metrics data. Based on work with LADOT in the SMART Grant Collab.
Resolves #173
Resolves #174

Adding the ability to handle enforcement related events in the CDS Curb Events and Metrics data. 
Based on work with LADOT in the SMART Grant Collab
@jacobmalleau jacobmalleau requested a review from a team as a code owner April 21, 2025 17:18
Addition of metric to handle summation of events
@schnuerle
Copy link
Member

We will be talking about this at today's public Curb Working Group meeting.

@schnuerle schnuerle changed the base branch from main to dev April 24, 2025 14:23
@mplsmitch mplsmitch added the SMART Collaborative Idea coming from the OMF USDOT SMART grant collaborative. label May 1, 2025
Slight edits to enforcement type names
@schnuerle schnuerle added the Los Angeles OMF and USDOT SMART Curb Collaborative Member label Jun 12, 2025
@schnuerle
Copy link
Member

schnuerle commented Jun 17, 2025

From our Curb Working Group meeting today:

  • Could add an 'enforcement' array key value object that can be part of Events to be captured: muni code, violation name, enforcement action taken, fee/cost, ticket id
  • Also applies to curb objects, how to connect to these objects?
  • Minneapolis and San Joes support this

SFMTA pushes our parking citation data to a public open data feed, and it would be great to have this information available in CDS events.
Current feed: https://data.sfgov.org/Transportation/SFMTA-Parking-Citations-Fines/ab4h-6ztd/about_data

LADOT does as well: https://data.lacity.org/Transportation/Parking-Citations/4f5p-udkv/about_data

Also slight edits to language.
@jacobmalleau
Copy link
Collaborator Author

Added a commit to connect Events to Objects, but held off on adding the key-value pairs as I want to see if anyone else has thoughts on attributes to add:

  • muni code
  • violation name
  • enforcement action taken
  • fee/cost
  • ticket id
  • Others?

@schnuerle
Copy link
Member

... held off on adding the key-value pairs as I want to see if anyone else has thoughts on attributes to add:

Where would these key value pairs be added?

@schnuerle
Copy link
Member

@jacobmalleau I think go ahead and add a new Enforcement data type with these fields, like we created for External References. Then we can talk about what enforcement fields to add/remove/edit beyond your short list.

You can then add the new enforcement data object as a field in Events, like with External References in Events (bottom of table) and Curbs.

jacobmalleau and others added 5 commits August 6, 2025 14:30
@schnuerle
Copy link
Member

Thanks, looks good, I made some formatting updates, and changed it to just 'Enforcement'. The 'External Reference' name was really just because it was a reference to an external thing.

@schnuerle schnuerle linked an issue Aug 8, 2025 that may be closed by this pull request
@schnuerle
Copy link
Member

We will be reviewing this at tomorrow's public Curb Working Group meeting. However we won't have much time to discuss, so leave your comments and suggestions here as general or inline comments to spark changes before the CDS 1.1 release is made.

@michael-danko-passport
Copy link
Collaborator

michael-danko-passport commented Aug 12, 2025

There are a few places where we are using citation, ticket, and violation and I think we should be consistent throughout the spec. I would propose the following:

  • citation -> Replaces the usage of ticket and represents a single instance of a broken infraction.
  • violation -> The city or municipal code that was violated

If we can get consensus in one direction or another there are some additional changes that will need to be made.

schnuerle and others added 8 commits August 20, 2025 15:16
Co-authored-by: michael-danko-passport <99669313+michael-danko-passport@users.noreply.github.com>
Co-authored-by: michael-danko-passport <99669313+michael-danko-passport@users.noreply.github.com>
Co-authored-by: michael-danko-passport <99669313+michael-danko-passport@users.noreply.github.com>
Reduces need to enumerate event types.

Co-authored-by: michael-danko-passport <99669313+michael-danko-passport@users.noreply.github.com>
Co-authored-by: michael-danko-passport <99669313+michael-danko-passport@users.noreply.github.com>
Co-authored-by: michael-danko-passport <99669313+michael-danko-passport@users.noreply.github.com>
@schnuerle
Copy link
Member

There are a few places where we are using citation, ticket, and violation and I think we should be consistent throughout the spec. I would propose the following:

  • citation -> Replaces the usage of ticket and represents a single instance of a broken infraction.
  • violation -> The city or municipal code that was violated

If we can get consensus in one direction or another there are some additional changes that will need to be made.

Are you thinking here, for ticket_id and ticket_cost?

https://github.com/openmobilityfoundation/curb-data-specification/blob/jacobmalleau-enforcementimprovements/data-types.md#enforcement

Is a ticket different than a citation? Can there be a ticket ID and a citation ID too, or are those really always the same thing?

@schnuerle
Copy link
Member

@JohnLundstrom-Minneapolis and @bhamlinSDOT can you propose a definition of a status field?

It should be an open ended 'string' type, so you can use two letter abbreviations if needed, or other cities can use what they need.

@kenyaw
Copy link

kenyaw commented Aug 20, 2025

There are a few places where we are using citation, ticket, and violation and I think we should be consistent throughout the spec. I would propose the following:

  • citation -> Replaces the usage of ticket and represents a single instance of a broken infraction.
  • violation -> The city or municipal code that was violated

If we can get consensus in one direction or another there are some additional changes that will need to be made.

Are you thinking here, for ticket_id and ticket_cost?

https://github.com/openmobilityfoundation/curb-data-specification/blob/jacobmalleau-enforcementimprovements/data-types.md#enforcement

Is a ticket different than a citation? Can there be a ticket ID and a citation ID too, or are those really always the same thing?

@schnuerle In San Francisco, we utilize citation for parking violations, so the change from ticket seems fine.

Regarding the definition for violation, cities enforce infractions from various levels of government. A more descriptive definition statement could be "The city/municipal, county, state, or provincial code that was violated."

@schnuerle
Copy link
Member

Based on @kenyaw's comments, I think you can align things to citation, and away from ticket @michael-danko-passport. And update the violation description to "The city/municipal, county, state, provincial, or federal code that was violated." Note I added federal to that list.

@JohnLundstrom-Minneapolis

@JohnLundstrom-Minneapolis and @bhamlinSDOT can you propose a definition of a status field?

It should be an open ended 'string' type, so you can use two letter abbreviations if needed, or other cities can use what they need.

I'm realizing that we wouldn't be capturing changes to the status over time (such as when a citation is cancelled on some future date), as those wouldn't be distinct curb events, but we still have some options at the time the citation is issued, mainly delineating between a warning and an active citation. My first attempt is:

"Describes the disposition of the citation at the time it was issued which can be used to identify alternate use cases such as warnings."

schnuerle and others added 10 commits August 26, 2025 11:26
Documentation updates:
- Clarifies distinction between vehicle detection and enter/exit event types.
- Text formatting changes
Applies changes discussed via Slack with members from WGSC.
- Documentation updates to the descriptions of vehicle_detected (new) and enter_area (existing) events to distinguish between these.
- Adds a new `enforcement.is_warning` field
- Adds a new `enforcement.violations` array
- Defines a new `Violations` object
- Moves violation specific fields to the new violations array
- Previously was an array of Enforcement objects
- Change aligns with a single enforcement object for each event, with the Enforcement object now containing an array of violations
…nt-object-changes

Incorporate Enforcement updates from WGSC discussions
Copy link
Member

@schnuerle schnuerle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks to the OMF member WGSC and public WG participants for the work and clarity on this feature!

@schnuerle schnuerle merged commit 6ebc72d into dev Sep 4, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Events API Los Angeles OMF and USDOT SMART Curb Collaborative Member Metrics API SMART Collaborative Idea coming from the OMF USDOT SMART grant collaborative.
Projects
None yet
7 participants