Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
14c4720
Merge pull request #71 from openmobilityfoundation/release-1.0.0
schnuerle Apr 29, 2022
2f3da77
Start OpenAPI spec for Curbs API
BigIdeas Jul 7, 2022
0706316
Rename spec.yaml to curbs.yaml
schnuerle Jul 8, 2022
3ac89b9
License, email, and formatting
schnuerle Jul 8, 2022
32834c1
Fix use of exclusiveMinimum; make rule.user_classes an array of user_…
BigIdeas Jul 8, 2022
d794300
Update polygon coordinate schema
BigIdeas Jul 11, 2022
6abfb61
Additional fixes to server URL and a coordinates prop
BigIdeas Jul 11, 2022
a8356d7
Delete curbs.yaml
schnuerle Oct 18, 2022
32f876e
Add schema link to Curbs
schnuerle Oct 18, 2022
aa39da7
Add schema link to Events
schnuerle Oct 18, 2022
0372ad6
Add schema link to Metrics
schnuerle Oct 18, 2022
92b2fc1
Add schema link to homepage
schnuerle Oct 18, 2022
1a739a0
Correction of copy paste that referenced MDS
michael-danko-passport Feb 15, 2023
45715e9
Updating link to root of OpenAPI repo
schnuerle Dec 12, 2023
52c2181
Updating link to root of OpenAPI repo
schnuerle Dec 12, 2023
c513bca
Updating link to root of OpenAPI repo
schnuerle Dec 12, 2023
b820b9d
Updating link to root of OpenAPI repo
schnuerle Dec 12, 2023
a1b7945
Merge pull request #100 from openmobilityfoundation/feature-openapi
schnuerle Dec 12, 2023
4b26dbc
Merge pull request #114 from openmobilityfoundation/michael-danko-pas…
schnuerle Dec 12, 2023
e83dd32
Update Curb Examples
mplsmitch Mar 7, 2024
05d3e37
Update event examples
mplsmitch Mar 7, 2024
a2a694a
Update examples.md
mplsmitch Mar 8, 2024
c6b710c
Update examples.md
mplsmitch Mar 8, 2024
9b026d5
Link GeoJSON type to description
mplsmitch Mar 8, 2024
942d9b0
Remove array
mplsmitch Mar 8, 2024
f742662
Merge pull request #134 from mplsmitch/dev
schnuerle Mar 9, 2024
f8d84ad
Merge pull request #132 from mplsmitch/patch-1
schnuerle Mar 9, 2024
8400a9d
Merge pull request #133 from mplsmitch/patch-2
schnuerle Mar 9, 2024
8ced0f1
Add field - maximum_fee
mplsmitch Mar 11, 2024
c42a742
specify cents in maximum_fee
mplsmitch Mar 11, 2024
b492a30
Merge pull request #135 from mplsmitch/dev
schnuerle Mar 26, 2024
11b5da2
Update street_name definition
mplsmitch Jul 18, 2024
73ff25b
Add Curb Event field for operator device name
jiffyclub Aug 30, 2024
f267d2f
Update data_source_operators.csv
rneubauer Sep 20, 2024
ed1cf45
Introduced Cleverciti entry in operator list
ArchaicDebugger Sep 26, 2024
e218173
Add links to OpenAPI schema and Stoplight
mplsmitch Oct 11, 2024
8d70598
Update general-information.md with OpenAPI schema links
mplsmitch Oct 16, 2024
61c87a6
Merge pull request #144 from rneubauer/patch-2
schnuerle Oct 24, 2024
258ae1f
Merge branch 'dev' into main
schnuerle Nov 19, 2024
0966a6d
Merge pull request #153 from ArchaicDebugger/main
schnuerle Nov 19, 2024
d2e67cd
Merge pull request #155 from openmobilityfoundation/mplsmitch-patch-2
schnuerle Nov 19, 2024
de1c66d
Added second example
schnuerle Nov 19, 2024
c93e2b9
Merge pull request #139 from openmobilityfoundation/mplsmitch-patch-1
schnuerle Nov 19, 2024
2540639
Merge pull request #141 from populus-ai/data-source-name
schnuerle Dec 6, 2024
cd6710b
Replace Handicapped with Accessible
mplsmitch Dec 6, 2024
55e9e0d
Add disabled_parking_permit to Well Known Values
mplsmitch Dec 6, 2024
6e186cb
Merge pull request #160 from openmobilityfoundation/mplsmitch-patch-3
schnuerle Dec 9, 2024
ca2d5f1
Update ReleaseNotes.md for 1.0.1
schnuerle Dec 9, 2024
ae8956e
Alphabetizing user classes
schnuerle Dec 9, 2024
8a2da99
Fix spacing
schnuerle Dec 9, 2024
8d66ed7
Keeping generic Schema link
schnuerle Dec 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- [Curb Data Specification APIs](#curb-data-specification-apis)
- [Structure](#structure)
- [Modularity](#modularity)
- [CDS OpenAPI Schema](#cds-openapi-schema)
- [MDS Overlap](#mds-overlap)
- [Work in Progress](#work-in-progress)
- [Get Involved](#get-involved)
Expand Down Expand Up @@ -68,6 +69,8 @@ CDS is designed to be a modular and flexible specification. Regulatory agencies

![CDS APIs and Endpoints](https://i.imgur.com/wlSeEa0.png)

## CDS OpenAPI Schema
For CDS data and feed validation, please see the [OpenAPI schema description](https://github.com/openmobilityfoundation/cds-openapi). Interactive OpenAPI documentation for the CDS APIs, endpoints, fields, and data objects is also available on OMF's [Stoplight Interactive Documentation](https://openmobilityfnd.stoplight.io/docs/cds-openapi/83teyinnn1py6-curb-api) page.
## MDS Overlap

Like the [Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/) (MDS), the CDS will be consumed by both cities and transportation providers operating in the public right of way. In many cases, the same mobility providers using curbs with CDS may also be interacting with other OMF [MDS Policy](https://github.com/openmobilityfoundation/mobility-data-specification/tree/main/policy), [MDS Provider](https://github.com/openmobilityfoundation/mobility-data-specification/tree/main/provider), and [MDS Agency](https://github.com/openmobilityfoundation/mobility-data-specification/tree/main/agency) data objects within the same [MDS Jurisdiction](https://github.com/openmobilityfoundation/mobility-data-specification/tree/main/jurisdiction) or [MDS Geography](https://github.com/openmobilityfoundation/mobility-data-specification/tree/main/geography), and using similar [MDS Metrics](https://github.com/openmobilityfoundation/mobility-data-specification/tree/main/metrics). Consistent with the Technology Design Principles codified in the [Technology Council's](https://github.com/openmobilityfoundation/governance/wiki/Technology-Council) OMF [Architectural Landscape Document](https://github.com/openmobilityfoundation/governance/blob/main/documents/OMF-MDS-Architectural-Landscape.pdf), the members of this working group are making reasonable best efforts to ensure that work is both _modular_ and _inter operable_ with other technology managed by the OMF as to avoid duplication and downstream implementation complexity. The first version of CDS intentionally has no direct connetions to MDS which allowed it to be created based strictly on real-world curb use cases and needs, but may align directly in future versions.
Expand Down
34 changes: 34 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
## 1.0.1

> Released: 2024-12-09

The 1.0.1 patch release cleans up and clarifies some minor issues and typos to help make the specification clearer.

### CHANGES

See the closed [PRs](https://github.com/openmobilityfoundation/curb-data-specification/pulls?q=is%3Apr+is%3Aclosed+milestone%3A1.0.1) tagged with [Milestone 1.0.1](https://github.com/openmobilityfoundation/curb-data-specification/milestone/6?closed=1) and [Issues](https://github.com/openmobilityfoundation/curb-data-specification/issues?q=is%3Aissue+milestone%3A1.0.1+is%3Aclosed) for a full list of changes.

**Minor updates**

- OpenAPI support
- Reference to MDS
- Internal Links
- Event location description
- Street name description
- Accessibility user classes
- Rate maximum fee clarification
- New data source device name field
- New operators

### ACKNOWLEDGEMENTS

Thank you to our current and past [steering committee members](https://github.com/openmobilityfoundation/curb-data-specification/wiki#steering-committee), GitHub pull request and issue creators (Passport, CurbIQ, INRIX, Umojo, Clevercity, @jamesdwilson) for this release, and for the organizations that participated on our weekly [working group calls](https://github.com/openmobilityfoundation/curb-data-specification/wiki#meeting-agendas).

## What's Changed

**Full Changelog**: https://github.com/openmobilityfoundation/curb-data-specification/compare/1.0.0...1.0.1

### Additional Updates

See the [final release page](https://github.com/openmobilityfoundation/curb-data-specification/releases/tag/1.0.1) for any additional updates to these notes

## 1.0.0

> Released: 2022-04-29
Expand Down
23 changes: 16 additions & 7 deletions curbs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ There are four different endpoints that are part of the Curbs API:
- [Rate](#rate)
- [Location Reference](#location-reference)
- [Examples](#examples)
- [Schema](#schema)

# REST Endpoints

Expand Down Expand Up @@ -249,7 +250,7 @@ A Curb Zone is represented as a JSON object, whose fields are as follows:
| `location_references` | Array of [Location Reference](#location-reference) objects | Optional | One or more linear references for this Curb Zone. |
| `name` | String | Optional | A human-readable name for this Curb Zone that identifies it to end users. |
| `user_zone_id` | String | Optional | An identifier that can be used to refer to this Curb Zone on physical signage as well as within mobile applications, typically for payment purposes. |
| `street_name` | String | Optional | The name of the street that this Curb Zone is on. |
| `street_name` | String | Optional | The name of the street that this Curb Zone is on, including directionals. SHOULD NOT contain address numbers. Examples: `Main Street NE` or `West Market St`. |
| `cross_street_start_name` | String | Optional | The name of the cross street at or before the start of this Curb Zone (which cross street is at the start and end of the location is defined in the same direction as the linear reference for this curb; if no linear reference is provided, start and end SHOULD be oriented such that start comes before end when moving in the direction of travel for the roadway immediately adjacent to the curb.) |
| `cross_street_end_name` | String | Optional | The name of the cross street at the end of this Curb Zone. |
| `length` | Integer | Optional | The length, in centimeters, of the Curb Zone when projected along the street centerline. Note that this is the definitive length of the curb area, and not the edge length of the geographic polygon. |
Expand Down Expand Up @@ -395,7 +396,7 @@ These are not meant to be a mirror to similarly named items in the Events API, b
unique purpose of describing locally defined regulations at a curb.

This array of user classes serves as an 'AND' function. A vehicle must have all the properties listed
in the array to use the curb. For example, an accessible EV bus will use `handicap-accessible` AND `electric`
in the array to use the curb. For example, an accessible EV bus will use `accessible` AND `electric`
AND `bus`. To create 'OR' values at the same curb, you must create a new rule
with the new array of values.

Expand All @@ -417,16 +418,17 @@ Vehicle types
- `van`

Vehicle properties
- `handicap-accessible`
- `human`
- `electric_assist`
- `electric`
- `combustion`
- `accessible`
- `autonomous`
- `combustion`
- `electric`
- `electric_assist`
- `human`

Purpose
- `construction`
- `delivery`
- `disabled_parking_permit`
- `emergency_use`
- `freight`
- `parking`
Expand Down Expand Up @@ -485,6 +487,7 @@ A Rate defines the amount a user of the curb needs to pay when a given rule appl
| `increment_amount` | Integer | Optional | If specified, the rate for this space is rounded up to the nearest increment of this amount, specified in the same currency units as `rate`. |
| `start_duration` | Integer | Optional | The number of `rate_unit`s the vehicle must have already been present in the Curb Zone before this rate starts applying (_inclusive_, see [Range Boundaries](/general-information.md#range-boundaries)). If not specified, this rate starts when the vehicle arrives. |
| `end_duration` | Integer | Optional | The number of `rate_unit`s after which the rate stops applying (_exclusive_, see [Range Boundaries](/general-information.md#range-boundaries)). If not specified, this rate ends when the vehicle departs. |
| `maximum_fee` | Integer | Optional | The maximum amount in cents a user of a curb can pay for a particular parking event. |

[Top][toc]

Expand Down Expand Up @@ -524,6 +527,12 @@ See a series of [CDS Curbs endpoint examples](examples.md) to use as templates.

[Top][toc]

# Schema

For details on the CDS schema in OpenAPI format and on Stoplight, please reference the [CDS OpenAPI](https://github.com/openmobilityfoundation/cds-openapi) repository.

[Top][toc]

[toc]: #table-of-contents
[uuid]: /general-information.md#uuid
[ts]: /general-information.md#timestamp
Expand Down
220 changes: 114 additions & 106 deletions curbs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,31 +26,29 @@ A [Query Curb Zones](/curbs#query-curb-zones) example of `/curbs/zones` with min
"currency": "USD",
"author": "City of Metropolis",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"data": [
{
"zones": [
{
"curb_zone_id": "7d8a5885-e949-4ac9-afb7-fa4d43b68530",
"geometry": {
"type": "Polygon",
"coordinates": [[
"data": {
"zones": [
{
"curb_zone_id": "7d8a5885-e949-4ac9-afb7-fa4d43b68530",
"geometry": {
"type": "Polygon",
"coordinates": [[
[-73.982105, 40.767932],
[-73.973694, 40.764551],
[-73.949318, 40.796918],
[-73.958416, 40.800686],
[-73.982105, 40.767932]
[-73.982105,40.767932]
]]
},
"curb_policy_ids": [
"cd0996d7-3765-4f0b-a72e-7caf7cf3fe21"
],
"published_date": 1552678594428,
"last_updated_date": 1552678594428,
"start_date": 1552678594428
}
]
}
]
},
"curb_policy_ids": [
"cd0996d7-3765-4f0b-a72e-7caf7cf3fe21"
],
"published_date": 1552678594428,
"last_updated_date": 1552678594428,
"start_date": 1552678594428
}
]
}
}
```

Expand All @@ -74,63 +72,70 @@ A [Query Curb Policies](/curbs#query-curb-policies) example of `/curbs/policies`
"currency": "USD",
"author": "City of Metropolis",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"data": [
{
"policies": [
{
"curb_policy_id": "cd0996d7-3765-4f0b-a72e-7caf7cf3fe21",
"published_date": 1552678594428,
"priority": 1,
"data_source_operator_id": [
"b2046faf-2bc2-4f0e-b784-7cc746138555",
"aba63473-351c-4624-93ab-456db34f83a6",
"984cae91-3a11-49eb-b68c-d325a6cc8970"
],
"time_spans": [
{
"days_of_week": ["mon", "tue", "wed", "thu", "fri"],
"time_of_day_start": "10:00",
"time_of_day_end": "16:00"
}
],
"rules": [
{
"activity": "parking",
"max_stay": 15,
"user_classes": [
"rideshare", "electric"
]
}
]
},{
"curb_policy_id": "51f58575-1042-4254-b5fc-fed97124a6c7",
"published_date": 1552678857362,
"priority": 2,
"time_spans": [
{
"time_of_day_start": "08:00",
"time_of_day_end": "22:00"
}
],
"rules": [
{
"activity": "parking",
"max_stay": 60
}
]
},{
"curb_policy_id": "8c0abb35-b8d2-469e-bdb1-b6de52c430ac",
"published_date": 1552678857362,
"priority": 3,
"rules": [
{
"activity": "no stopping"
}
]
}
]
}
]
"data": {
"policies": [
{
"curb_policy_id": "cd0996d7-3765-4f0b-a72e-7caf7cf3fe21",
"published_date": 1552678594428,
"priority": 1,
"data_source_operator_id": [
"b2046faf-2bc2-4f0e-b784-7cc746138555",
"aba63473-351c-4624-93ab-456db34f83a6",
"984cae91-3a11-49eb-b68c-d325a6cc8970"
],
"time_spans": [
{
"days_of_week": [
"mon",
"tue",
"wed",
"thu",
"fri"
],
"time_of_day_start": "10:00",
"time_of_day_end": "16:00"
}
],
"rules": [
{
"activity": "parking",
"max_stay": 15,
"user_classes": [
"rideshare",
"electric"
]
}
]
},
{
"curb_policy_id": "51f58575-1042-4254-b5fc-fed97124a6c7",
"published_date": 1552678857362,
"priority": 2,
"time_spans": [
{
"time_of_day_start": "08:00",
"time_of_day_end": "22:00"
}
],
"rules": [
{
"activity": "parking",
"max_stay": 60
}
]
},
{
"curb_policy_id": "8c0abb35-b8d2-469e-bdb1-b6de52c430ac",
"published_date": 1552678857362,
"priority": 3,
"rules": [
{
"activity": "no stopping"
}
]
}
]
}
}
```

Expand All @@ -152,41 +157,44 @@ A [Query Curb Policies](/curbs#query-curb-policies) example of `/curbs/policies`
"currency": "USD",
"author": "City of Metropolis",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"data": [
{
"policies": [
{
"curb_policy_id": "cd0996d7-3765-4f0b-a72e-7caf7cf3fe21",
"published_date": 1552678594428,
"priority": 1,
"rules": [
{
"activity": "parking",
"rate": [
"data": {
"policies": [
{
"curb_policy_id": "cd0996d7-3765-4f0b-a72e-7caf7cf3fe21",
"published_date": 1552678594428,
"priority": 1,
"rules": [
{
"activity": "parking",
"rate": [
{
"rate": 500,
"rate_unit": "hour",
"rate_unit_period": "rolling"
]
}
]
},{
"curb_policy_id": "51f58575-1042-4254-b5fc-fed97124a6c7",
"published_date": 1552678857362,
"priority": 2,
"rules": [
{
"activity": "parking",
"rate": [
}
]
}
]
},
{
"curb_policy_id": "51f58575-1042-4254-b5fc-fed97124a6c7",
"published_date": 1552678857362,
"priority": 2,
"rules": [
{
"activity": "parking",
"rate": [
{
"rate": 3000,
"rate_unit": "day",
"rate_unit_period": "calendar"
]
}
]
}
]
}
]
}
]
}
]
}
]
}
}
```

Expand Down
2 changes: 2 additions & 0 deletions data_source_operators.csv
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ Vade,a7e7d081-7718-4abe-addf-c43dc138f655,https://www.vade.ai
Flowbird Group,1e56a8aa-d5bc-4b43-9c56-3de44d787ac2,https://www.flowbird.group/
CurbIQ,d79d92ee-d554-4348-a749-bb5c24a60151,https://curbiq.io/
Univrses,99cab7dc-4ae3-4f8b-82f9-99426910db03,https://univrses.com/
Cleverciti,1e240e62-5871-497e-9e27-e8f798ce4829,https://www.cleverciti.com/
Umojo,d0abb612-cc14-41ad-a3a8-a616e2c92ddb,https://www.umojo.com/
Loading