CRITICAL: Before starting, MUST first use the Read tool to read
../openydt-shared/SKILL.md(authentication / profile / signature / status codes / rate limiting / security rules). Do not execute any commands without reading the shared foundation.
When to use this skill
Use this skill when the user wants to maintain in the parking lotlicense plate lists, including three types of business:
- Blacklist (blacklist): Prohibit a vehicle from entering / charge high fees. Phrasings such as "blacklist this car", "add to blacklist", "check the blacklist", "remove from blacklist".
- Redlist (redlist): Passage rules, free / privileged passage. Phrasings such as "add to redlist", "police car passage", "redlist rules", "delete passage rule".
- Visitor (visitor): Temporary visit registration, time-limited passage. Phrasings such as "register visitor vehicle", "visitor passage", "cancel visitor appointment".
Intent routing:
- "add black / blacklist / check blacklist / remove from blacklist" →
openydt blacklist ... - "add red / redlist rules / delete redlist" →
openydt redlist ... - "visitor registration / cancel visitor" →
openydt visitor ... - "create special vehicle type / VIP group" →
openydt ticket add-special-car-type(prerequisite step, see business flow; see [[openydt-monthticket]] for details)
Note: The commands of this skill are distributed across blacklist / redlist / visitor three subcommand domains, and the invocation prefixes are all different.
Available commands
| Chinese name | Command | Read/Write | Key parameters |
|---|---|---|---|
| Add blacklist vehicle | openydt blacklist add-black-list-car |
Write | --park-code --special-car-type-id --car-code --car-owner --reason(all required) |
| Query blacklist vehicle list | openydt blacklist get-park-black-list |
Read | --body(parkCodeList required) / --car-code --owner --page-size --page-num |
| Cancel blacklist vehicle | openydt blacklist remove-black-list-car |
Write | --park-code(required) --blacklist-id / --car-no(choose one of two) |
| Add redlist rule | openydt redlist red-list-add |
Write | --redlist-param --park-code-list(required)--plate-color --operator --remark |
| Query redlist rules | openydt redlist get-red-list |
Read | --park-code-list(required) |
| Delete redlist rule | openydt redlist del-red-list |
Write | --rule-id(required, from query results) |
| Add visitor vehicle | openydt visitor add-visitor-car-new |
Write | --park-code --car-no --owner --special-car-type-id --visit-from --visit-to(all required) |
| Cancel visitor vehicle | openydt visitor cancel-visitor-car-new |
Write | --park-code(required) --visitor-id / --car-no(choose one of two) |
Allwrite operations(add/remove/del/cancel) require appending
--yesconfirmation. Read operations (get-*) do not require--yes。
Business flow
Blacklist / visitor registration must first have a "special vehicle type", whose specialCarTypeId is a required input parameter for subsequent commands. The complete closed loop is as follows,be sure to use fields from the responses of preceding commands as input parameters for subsequent commands:
-
Create special vehicle type(Prerequisite, belongs to the ticket domain)
openydt ticket add-special-car-type --yes- For the blacklist use
vipGroupType=2, for visitors usevipGroupType=1。 - retrieved from the response
specialCarTypeIdis a required input parameter for step 2 (blacklist--special-car-type-id/ visitor--special-car-type-id)。
- For the blacklist use
-
Register vehicle(using step 1's
specialCarTypeId+ license plate + parkCode)- Blacklist:
openydt blacklist add-black-list-car --yes - Visitor:
openydt visitor add-visitor-car-new --yes
- Blacklist:
-
Query confirmation
- Blacklist:
openydt blacklist get-park-black-list, retrieve from the returned listblacklistId, for use by step 4 for precise cancellation. - Whitelist:
openydt redlist get-red-list, retrieve from the responseruleId, for use bydel-red-list.
- Blacklist:
-
Cleanup / cancellation
- Blacklist:
openydt blacklist remove-black-list-car --yes(using step 3's--blacklist-id, or pass only--car-noto cancel all blacklist entries for that license plate) - Visitor:
openydt visitor cancel-visitor-car-new --yes(using--visitor-id, or pass only--car-noto cancel the most recent visitor) - Whitelist rules:
openydt redlist del-red-list --yes --rule-id <步骤3的ruleId>
- Blacklist:
Whitelist rules are relatively independent, no special vehicle type is needed, directly use openydt redlist red-list-add to add (supports a single license plate or *警 such wildcard rules).
Write idempotency and confirmation
add-black-list-car/add-visitor-car-newRepeatedly submitting the same license plate: the platform deduplicates by license plate (repeatedly blacklisting the same license plate does not create a new entry); if unsure whether the first attempt took effect, firstget-park-black-listquery.- ⚠️
remove-black-list-car/cancel-visitor-car-newPassing only--car-no(without id) will cancel all entries for that license plate—batch impact, before executing firstget-park-black-listconfirm the scope, and prefer using theblacklistId/visitorIdobtained from the query for precise cancellation.
PII:
--phone/--car-nois PII, prod does not record real values (see [[openydt-shared]]); for creating special vehicle types see [[openydt-monthticket]].
Error self-healing quick reference (blacklist/whitelist/visitor)
| Symptom | Meaning | Recovery action |
|---|---|---|
Failed to add to blacklist status=7/resultCode=909 |
specialCarTypeId not passed/does not belong to this parking lot/type mismatch |
First openydt ticket get-special-car-type-list query this parking lot's type ID, confirm vipGroupType=2 then add to blacklist |
Visitor registration failed status=2 |
specialCarTypeId belongs to a blacklist type (vipGroupType=2) or is unauthorized |
Confirm using the visitor type (vipGroupType=1) specialCarTypeId |
| After canceling blacklist/visitor, suspected not to have taken effect | Passing only --car-no but there is a delay in the platform-side query |
Wait 1-2 seconds then get-park-black-list recheck; if multiple entries exist for the same license plate, switch to --blacklist-id for precise cancellation |
get-park-black-list returns 0 entries |
The parking lot has no blacklist or parkCodeList not fully passed |
Confirm parkCodeList is correct before concluding "no blacklist"; see [[openydt-shared]] result interpretation SOP |
For general status codes and retry rules see [[openydt-shared]]; for the three-layer result interpretation see its
../openydt-shared/references/result-reading-sop.md。
Example
The following parkCode/time are documented test values (test only;
1ZS7H5PQH9/PTD2YBBZis a test parking lot, replace with an authorized parking lot in production). For write operations it is recommended to first--dry-runpreview, and after confirmation then--yes。
- Add a blacklist vehicle (write, requires
--yes;special-car-type-idfromadd-special-car-typeresponse):
openydt blacklist add-black-list-car --yes \
--park-code 1ZS7H5PQH9 \
--car-code 粤EJW962 \
--car-owner 车主 \
--reason 原因 \
--special-car-type-id 253
- Query a parking lot's blacklist list (read, no
--yes, use--bodyto pass the parkCodeList array):
openydt blacklist get-park-black-list \
--body '{"parkCodeList":["1ZS7H5PQH9"],"carCode":"粤EJW962","pageNum":1,"pageSize":10}'
- Add a whitelist release rule (write, requires
--yes, park-code-list is an array using--body):
openydt redlist red-list-add --yes \
--body '{"parkCodeList":["1ZS7H5PQH9","PTD2YBBZ"],"redlistParam":"粤EJW962"}'
- Register a visitor vehicle (write, requires
--yes;special-car-type-idfrom the visitor type'sadd-special-car-typeresponse):
openydt visitor add-visitor-car-new --yes \
--park-code PTD2YBBZ \
--car-no 粤EJW962 \
--owner 李四 \
--phone 13800000000 \
--reason 访友 \
--visit-from 20260601000000 \
--visit-to 20260602000000 \
--special-car-type-id 154