Skip to content

Use Case: Regulate dynamic flex smart zoning of multiple uses per day

Wendy Grus edited this page Sep 4, 2026 · 2 revisions

Note: this is a specific implementation of use case from the CDS Examples page.

This example supports the CDS use case " Regulate dynamic flex/smart zoning of multiple uses per day" It shows how the Curb Data Specification (CDS) describes a city's curb and signals which activities are allowable or restricted at different times of the day, using a single multi-functional block of Main Street and the API responses a CDS server returns. Street names and coordinates are illustrative.

We use three CDS objects to describe the curb groupings:

  • Curb Area: the parent grouping of the zones, here this is the block face.
  • Curb Zone: a stretch of curb on the block face under a set of rules.
  • Curb Policy: the rules, meaning who may do what and when. A zone references one or more policies.

The block

Block A (100 block) has 3 curbzones:

(1) No parking all day everyday,

(2) Commercial Vehicle Loading Zone from 6 AM to 1 PM and Paid Parking from 1 PM to 8 PM Mon - Fri, Paid Parking 8 AM to 8 PM Sat,

(3) Paid Parking from 8 AM to 8 PM Mon - Sat.

Zones 2 and 3 offer free parking outside of their stated regulations.

Using Priority to Layer Multiple Policies on a Zone

All zones get the base level paid and unrestricted parking policies (priority = 99) that apply to this paid area. Then, we layer on zone-specific policies for No parking (Zone 1, priority 1) and CVLZ (Zone 2, priority 20). These policies have higher priority when the times overlap.

Zone 1: There is always a no parking policy with higher priority than the baseline parking policy.

Zone 2: On Monday to Friday from 6 am to 1 pm, there is a Commercial Vehicle Loading policy that is higher priority than the baseline parking policy. At all other days/times, the baseline parking policy applies.

Zone 3: There are no extra policies for this zone, so the baseline parking policy always applies.

 { 
    "policies": [ 
      { 
        "curb_policy_id": "9999999a-3765-4f0b-a72e-7caf7cf3fe21", 
        "name": "unrestricted_parking_mon_to_sat_until_8am", 
        "published_date": 1552678594428, 
        "priority": 99, 
        "rules": [ 
          { 
            "activity": "parking" 
          } 
        ], 
        "time_spans": [ 
          { 
            "days_of_week": [ 
              "mon", 
              "tue", 
              "wed", 
              "thu", 
              "fri", 
              "sat" 
            ], 
            "time_of_day_start": "00:00", 
            "time_of_day_end": "07:59" 
          } 
        ], 
      }, 
      { 
        "curb_policy_id": "9999999b-3765-4f0b-a72e-7caf7cf3fe21", 
        "name": "unrestricted_parking_mon_to_sat_after_8pm", 
        "published_date": 1552678594428, 
        "priority": 99, 
        "rules": [ 
          { 
            "activity": "parking" 
          } 
        ],
        "time_spans": [ 
          { 
            "days_of_week": [ 
              "mon", 
              "tue", 
              "wed", 
              "thu", 
              "fri", 
              "sat" 
            ], 
            "time_of_day_start": "20:00", 
            "time_of_day_end": "23:59" 
          } 
        ], 
      }, 
      { 
        "curb_policy_id": "9999999c-3765-4f0b-a72e-7caf7cf3fe21", 
        "name": "unrestricted_parking_sun", 
        "published_date": 1552678594428, 
        "priority": 99, 
        "rules": [ 
          { 
            "activity": "parking" 
          } 
        ],
        "time_spans": [ 
          { 
            "days_of_week": [ 
              "sun" 
            ], 
            "time_of_day_start": "00:00", 
            "time_of_day_end": "23:59" 
          } 
        ], 
      }, 
      { 
        "curb_policy_id": "11111111-1042-4254-b5fc-fed97124a6c7", 
        "name": "24_hour_no_parking_everyday", 
        "published_date": 1552678857362, 
        "priority": 1, 
        "time_spans": [ 
          { 
            "days_of_week": [ 
              "mon", 
              "tue", 
              "wed", 
              "thu", 
              "fri", 
              "sat", 
              "sun" 
            ], 
            "time_of_day_start": "00:00", 
            "time_of_day_end": "23:59" 
          } 
        ], 
        "rules": [ 
          { 
            "activity": "no parking" 
          } 
        ] 
      }, 
      { 
        "curb_policy_id": "80808080-b8d2-469e-bdb1-b6de52c430ac", 
        "name": "paid_parking_8to8_MontoSat", 
        "published_date": 1552678857362, 
        "priority": 99, 
        "time_spans": [ 
          { 
            "days_of_week": [ 
              "mon", 
              "tue", 
              "wed", 
              "thu", 
              "fri", 
              "sat" 
            ], 
            "time_of_day_start": "08:00", 
            "time_of_day_end": "19:59" 
          } 
        ], 
        "rules": [ 
          { 
            "activity": "parking", 
            "max_stay": 120, 
            "rate": [ 
              { 
                "rate": 3, 
                "rate_unit": "hour", 
                "rate_unit_period": "rolling" 
              } 
            ] 
          } 
        ] 
      }, 
      { 
        "curb_policy_id": "20202020-3765-4f0b-a72e-7caf7cf3fe21", 
        "name": "CVLZ_6to1_MontoFri", 
        "published_date": 1552678594428, 
        "priority": 20, 
        "time_spans": [ 
          { 
            "days_of_week": [ 
              "mon", 
              "tue", 
              "wed", 
              "thu", 
              "fri" 
            ], 
            "time_of_day_start": "06:00", 
            "time_of_day_end": "12:59" 
          } 
        ], 
        "rules": [ 
          { 
            "activity": "loading", 
            "max_stay": 30, 
            "user_classes": [ 
              "truck" 
            ], 
            "purpose": [ 
              "commercial_vehicle_permit" 
            ] 
          }, 
          { 
            "activity": "loading", 
            "max_stay": 30, 
            "user_classes": [ 
              "truck" 
            ], 
            "rate": [ 
              { 
                "rate": 2, 
                "rate_unit": "hour", 
                "rate_unit_period": "rolling" 
              } 
            ] 
          }, 
          { 
            "activity": "no parking", 
            "user_classes_except": [ 
              "truck" 
            ] 
          } 
        ] 
      } 
    ] 
  } 
{ 
  "zones": [ 
    { 
      "curb_zone_id": "00000001-e7e2-5500-b395-c4e77c512918", 
      "geometry": { 
        "type": "Polygon", 
        "coordinates": [ 
          [ 
            [ 
              -79.3892, 
              43.6512 
            ], 
            [ 
              -79.3884, 
              43.6512 
            ], 
            [ 
              -79.3884, 
              43.6513 
            ], 
            [ 
              -79.3892, 
              43.6513 
            ], 
            [ 
              -79.3892, 
              43.6512 
            ] 
          ] 
        ] 
      }, 
      "curb_policy_ids": [ 
        "9999999a-3765-4f0b-a72e-7caf7cf3fe21", 
        "9999999b-3765-4f0b-a72e-7caf7cf3fe21", 
        "9999999c-3765-4f0b-a72e-7caf7cf3fe21", 
        "80808080-b8d2-469e-bdb1-b6de52c430ac", 
        "11111111-1042-4254-b5fc-fed97124a6c7" 
      ], 
      "published_date": 1767247200000, 
      "last_updated_date": 1767247200000, 
      "start_date": 1767247200000, 
      "name": "E14-10-01", 
      "curb_area_ids": [ 
        "7b03ef54-194f-4d7a-a9f1-52b945fa52d1" 
      ] 
    }, 
    { 
      "curb_zone_id": " 00000002-1234-5678-9012-abcdef123456", 
      "geometry": { 
        "type": "Polygon", 
        "coordinates": [ 
          [ 
            [ 
              -79.3871, 
              43.6512 
            ], 
            [ 
              -79.3863, 
              43.6512 
            ], 
            [ 
              -79.3863, 
              43.6513 
            ], 
            [ 
              -79.3871, 
              43.6513 
            ], 
            [ 
              -79.3871, 
              43.6512 
            ] 
          ] 
        ] 
      }, 
      "curb_policy_ids": [ 
        "9999999a-3765-4f0b-a72e-7caf7cf3fe21", 
        "9999999b-3765-4f0b-a72e-7caf7cf3fe21", 
        "9999999c-3765-4f0b-a72e-7caf7cf3fe21", 
        "80808080-b8d2-469e-bdb1-b6de52c430ac", 
        "20202020-3765-4f0b-a72e-7caf7cf3fe21" 
      ], 
      "published_date": 1767247200000, 
      "last_updated_date": 1767247200000, 
      "start_date": 1767247200000, 
      "name": " E14-10-03", 
      "curb_area_ids": [ 
        "6b84aa91-4ee6-482d-87ff-b1e474f3ad91" 
      ] 
    }, 
    { 
      "curb_zone_id": " 00000003-1234-5678-9012-abcdef123456", 
      "geometry": { 
        "type": "Polygon", 
        "coordinates": [ 
          [ 
            [ 
              -79.3871, 
              43.6512 
            ], 
            [ 
              -79.3863, 
              43.6512 
            ], 
            [ 
              -79.3863, 
              43.6513 
            ], 
            [ 
              -79.3871, 
              43.6513 
            ], 
            [ 
              -79.3871, 
              43.6512 
            ] 
          ] 
        ] 
      }, 
      "curb_policy_ids": [ 
        "9999999a-3765-4f0b-a72e-7caf7cf3fe21", 
        "9999999b-3765-4f0b-a72e-7caf7cf3fe21", 
        "9999999c-3765-4f0b-a72e-7caf7cf3fe21", 
        "80808080-b8d2-469e-bdb1-b6de52c430ac" 
      ], 
      "published_date": 1767247200000, 
      "last_updated_date": 1767247200000, 
      "start_date": 1767247200000, 
      "name": " E14-10-05", 
      "curb_area_ids": [ 
        "6b84aa91-4ee6-482d-87ff-b1e474f3ad91" 
      ] 
    } 
  ] 
} 

Clone this wiki locally