CRITICAL: Before starting, MUST first use the Read tool to read
../openydt-shared/SKILL.md, to understand common conventions such as authentication / profile / signature / status codes / rate limiting / security, then execute commands in this domain.
Intent routing
- "Query on-site vehicles / on-site vehicles / which vehicles are currently on site" →
get-park-on-site-car - "Entry records / vehicle entry records" →
get-car-in-list; "Exit records" →get-car-out-list - "Full entry-exit details / raw operational analysis data" → export a local NDJSON snapshot according to the full pagination rules of [[openydt-shared]]
- "Recalculate / verify parking duration, distribution, or quantiles based on exit details" → First read
references/parking-duration-analysis.md, then run the accompanying script - "Evasion / suspected tailgating / statistics by release mode / abnormal release / remote gate opening analysis" → First read
references/parking-record-enums.md, and take the CLI schema's enums and domain semantics as authoritative - "Directly call platform aggregate statistics such as parking duration distribution" → [[openydt-data]]
- "Details of a certain parking record" →
get-park-detail(or ignore statusget-park-detail-ignore-status) - "Payment records / historical bills" →
get-pay-bill/get-payment-record-detail-list/get-park-pay-bill-by-car-nos-and-pay-time(for real-time amount due, please use the trade domainget-park-fee, this domain only queries history) - "Arrears / arrears records" →
get-car-arrearage-list/get-arrears-list-by-operator/get-arrears-count - "Vehicle entry supplementary recording / supplementary entry" →
supplement-parking-record-in - "Inventory exit / batch clearing / inventory records" →
inventory-car(write) /get-inventory-record(read) - "Vehicle locking / unlocking / vehicle lock status" →
lock-car/unlock-car/get-car-lock-status - Cross-domain note: monthly passes/electronic coupons/visitors/blacklists, etc. are not in this domain; use
openydt ticket(see [[openydt-monthticket]]) /openydt coupon(see [[openydt-coupon]]) /openydt visitor/openydt blacklist(see [[openydt-list]]) respectively; for real-time fee calculation/payment see [[openydt-billing]].
Available commands
Commands are uniformly invoked with
openydt parking <use>. Write operations (write) all require appending--yesfor confirmation.
| Chinese name | Command | Read/Write | Key parameters |
|---|---|---|---|
| Check whether the channel has a vehicle | openydt parking check-channel-exist-car |
Read | parkCode, channelCode |
| On-site vehicle query | openydt parking get-park-on-site-car |
Read | parkCodeList, enterTimeFrom, enterTimeTo, pageNum, pageSize |
| Entry record query | openydt parking get-car-in-list |
Read | parkCode, isPresence, startTime, endTime, pageNum, pageSize |
| Exit record query | openydt parking get-car-out-list |
Read | parkCode, carNo(singular), leaveStartTime/leaveEndTime or enterTimeFrom/enterTimeTo (choose one, required), pageNum, pageSize (≤100) |
| Parking record details | openydt parking get-park-detail |
Read | parkCode, parkingCode/carCode (choose either for locating) |
| Query inventory records | openydt parking get-inventory-record |
Read | parkCodeList, inventoryStartTime, inventoryEndTime, remark |
| Inventory exit | openydt parking inventory-car |
Write | parkCode, enterTimeEnd, carNo/carNos/parkingCodes, remark |
| Parking record details (ignore status) | openydt parking get-park-detail-ignore-status |
Read | parkCode, parkingCode/carCode (choose either for locating) |
| Channel permission query | openydt parking get-channel-permission |
Read | parkCode, channelId, carCode, operatorTime, plateColor |
| Payment record query | openydt parking get-pay-bill |
Read | parkingCode (+parkCode) |
| Payment bill detail list | openydt parking get-payment-record-detail-list |
Read | parkCode, pageNum, pageSize |
| Payment bill file | openydt parking get-payment-record-detail-file |
Read | parkCode, payTime |
| Query bills by license plate + payment time | openydt parking get-park-pay-bill-by-car-nos-and-pay-time |
Read | carNoList, pageNum, pageSize |
| Vehicle arrears records | openydt parking get-car-arrearage-list |
Read | carNo, parkCodeList (optional filter) |
| Operator arrears records | openydt parking get-arrears-list-by-operator |
Read | pageSize, pageNum |
| Operator arrears count | openydt parking get-arrears-count |
Read | (body may be empty) |
| Arrears image details | openydt parking get-arrears-detail |
Read | (body may be empty) |
| Non-system gate opening records | openydt parking get-abnormal-open-gate-list |
Read | parkCodeList, openGateTimeFrom, openGateTimeTo |
| Abnormal exit records | openydt parking get-abnormal-out-list |
Read | parkCodeList, leaveTimeFrom, leaveTimeTo |
| Check vehicle lock status | openydt parking get-car-lock-status |
Read | carNo / cardNumber |
| Vehicle entry supplementary record | openydt parking supplement-parking-record-in |
Write | parkCode, carCode, enterTime, channelCode, carCodeType, carCodeColor, parkOrArea |
| Entry image supplementary record | openydt parking supplement-parking-record-image |
Write | parkCode, parkingCode, parkOrArea, carCodeImage, carImage, parkingType |
| On-site license plate correction | openydt parking correct-car-no |
Write | parkCode, parkingCode, newCarNo, correctTime, correctName, operateType |
| Lane pending entry/exit license plate correction | openydt parking correct-car-on-channel |
Write | parkCode, channelCode, newCarNo, correctTime |
| License plate correction after entry/exit confirmation photo | openydt parking correcting-car-code-after-car-in-out-confirm-phone |
Write | parkCode, channelId, newCarNo, correctTime |
| Lock vehicle | openydt parking lock-car |
Write | carNo / cardNumber, lockReason |
| Unlock | openydt parking unlock-car |
Write | carNo / cardNumber, unlockReason |
| Scan lane code for self-service entry/exit | openydt parking scan-channel-code-in-out |
Write | parkCode, channelSeq, userUniqCode |
| Roadside vehicle self-service registration | openydt parking roadside-car-check-in |
Write | carNo, positionNo, longitude, latitude |
| Create parking lot interception policy | openydt parking create-intercept-policy |
Write | parkCode, policyName, tags |
| Delete parking lot interception policy | openydt parking delete-intercept-policy |
Write | parkCode |
| Cancel arrears | openydt parking cancellation-of-arrears |
Write | recordId, status, remark, operator |
| Update withholding process order | openydt parking update-wihhold-detail-bill |
Write | thirdBillCode, billStatus, billCallbackDate |
Callable interfaces not listed in this table but belonging to the parking domain (such as
getHisParkDetail/getParkPayBill/getParkingPosition/getParkingSpaceInfo/paymentRecordQuery*/selfInOutForCloudPark/typingRandomCodeInOut/scanChannelCodeInOutFlow/supplyCarIn-Out-Picetc.), useopenydt api <cmd> --body '{...}'to call (write operations--yes, first--dry-run); vehicle tag tagging/untagging:openydt api addCarTags/openydt api delCarTags(write, requires--yes), see body incatalog/catalog.jsonsampleBody; see [[openydt-api-explorer]] for details.
⚠️
update-wihhold-detail-billInwihholdis the platform interface codeupdateWihholdDetailBill'soriginal spelling(platform-side typo, should be withhold). The CLI sends it verbatim according to the platform code,must be spelled exactly like this, do not "correct" it to withhold, otherwise the platform returnsstatus=9 接口不存在。
Before querying, correcting entry/exit records, or handling lane sessions, read
references/pitfalls.md; it covers exit fields, on-site time ranges, status determination, and session expiration branches.
Write operations are idempotent (avoid duplicate retries)
update-wihhold-detail-billusethirdBillCodefor deduplication—retries reuse the same value, never generate a new one.supplement-parking-record-in/inventory-car/correct-*No explicit idempotency key: automatic retries triggered by network timeouts/gateway 404s may cause duplicate supplementary records or duplicate exit inventory. Before resending,first use a read command to confirm whether the first attempt took effect:- Before supplementary entry:
check-channel-exist-carconfirm whether the lane already has an on-site record; - Before inventory:
get-inventory-recordconfirm whether an inventory operation already exists for that time period; - On-site verification:
get-park-on-site-carconfirm whether the license plate is still on-site, to avoid duplicate supplementary records and duplicate accounting.
- Before supplementary entry:
- See details in [[openydt-shared]]'s
../openydt-shared/references/write-idempotency.md。
For multi-step business processes (on-site/entry-exit queries → details, vehicle entry supplementary logging, lock/unlock, arrears → cancellation), see references/flows.md, before running multi-step chains, Read first.
Example
Example parkCode/time are documented test values (test environment only:
1ZS7H5PQH9/PTD2YBBZ, 2026 relative times); copying old parkCode/times from historical sampleBody will hit invalid parking lots or expired time periods. For write operations, it is recommended to first change--yesto--dry-runto preview the signed request, and after confirmation--yes。
Read: query entry records for a specified time period at a parking lot (including specified license plate filtering and pagination)
openydt parking get-car-in-list --body '{
"parkCode": "1ZS7H5PQH9",
"carNoArray": ["粤EJW962"],
"isPresence": "0",
"startTime": "20260601000000",
"endTime": "20260601235959",
"pageNum": 1,
"pageSize": 10
}'
Read: query a parking lot's specifiedexittime period's exit records (note the field names differ from in-list:carNo singular + leaveStartTime/leaveEndTime)
openydt parking get-car-out-list --body '{
"parkCode": "PTD2YBBZ",
"carNo": "粤EJW987",
"leaveStartTime": "20260531000000",
"leaveEndTime": "20260531235959",
"pageNum": 1,
"pageSize": 10
}'
Write: vehicle entry supplementary logging (note --yes, the response returns parkingCode for subsequent image supplementation/correction use)
openydt parking supplement-parking-record-in --yes --body '{
"parkCode": "1ZS7H5PQH9",
"carCode": "粤EJW962",
"enterTime": "20260601080000",
"channelCode": "AA123C",
"carCodeType": 1,
"carCodeColor": 1,
"parkOrArea": 1
}'
Write: lock the specified vehicle (note --yes)
openydt parking lock-car --yes --body '{
"cardNumber": "A12345",
"carNo": "粤EJW962",
"lockReason": "测试锁车"
}'