SuperAPI AI Directory

openydt-monthticket

Office & productivity

View repository

Updated 10-16 06:47

About this skill

openydt-monthticket — Monthly pass / VIP domain (ticket)

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's request falls under monthly pass / VIP / membership monthly package / special vehicles (visitor, blacklist) / vehicle identity business, typically such as:

  • "Activate monthly pass / renew / refund / cancel monthly pass for a certain license plate"
  • "Create a monthly pass type / modify monthly pass type / query monthly pass type details"
  • "Query the monthly pass records of a certain license plate / monthly passes about to expire / number of monthly passes sold"
  • "Check whether a vehicle is VIP / check the owner", "freeze / unfreeze monthly pass"
  • "Add special vehicle types for visitor VIP group / blacklist VIP group"

Intent routing:

  • Only doingquery(read) → directly use the corresponding get-* command, no need for --yes。
  • Involvingcreate / modify / activate / renew / refund / cancel / freeze(write) → the command must add --yes(see the annotation for each item below).
  • Management of "list members" for visitors/blacklist is not in this domain: for visitors use openydt visitor, for blacklist use openydt blacklist, for redlist use openydt redlist(see [[openydt-list]]); but the "special vehicle type ID" they reference is created by this domain's add-special-car-type and queried via get-special-car-type-list .
  • Real-time temporary parking fee calculationis not in this domain, please use [[openydt-billing]] (openydt trade get-park-fee)。

Available commands

Command format:openydt ticket <use>. The table below lists only the included commands in the catalog (29 in total).

Chinese name Command Read/Write Key parameters
Add online monthly pass type openydt ticket add-online-month-ticket-type Write (--yes) parkCodes*, ticketName*, price*, timePeriod(startTime/endTime), channelList
Modify online monthly pass type openydt ticket month-ticket-config-edit Write (--yes) monthTicketConfigId*, ticketName*, parkCodeList*, price*
Query online monthly pass type details openydt ticket get-month-ticket-config-detail Read monthTicketConfigId*
Query online monthly pass type details list openydt ticket get-month-ticket-config-detail-list Read parkCodeList*, monthTicketConfigId, ticketStatus
View number of monthly passes purchased openydt ticket get-month-ticket-sell-num Read monthId*
Monthly pass type quota deduction openydt ticket deduct-month-ticket-config Write (--yes) monthTicketConfigId*, thirdpartyBillCode*, thirdpartyIdentify*, parkCodes*, carNo*, num*, startTime*, endTime*
Activate online monthly pass openydt ticket add-online-month-ticket Write (--yes) monthTicketConfigId*, parkCodes*, carNo*, billCode*, userName*, userPhone*, originPrice*, favorPrice*, payOrigin*, payMode*, timePeriodList*, thirdpartyIdentify(required for reservation activation)
Renew online monthly pass openydt ticket renew-online-vip-ticket Write (--yes) billCode*, monthTicketId*, originPrice*, favorPrice*, payOrigin*, payMode*, renewBy*, renewTime*, timePeriodList*
Cancel online monthly pass openydt ticket cancel-online-vip-ticket Write (--yes) parkCode*, billCode*, refundPrice*, payOrigin*, payMode*
Cancel online monthly pass by monthly pass type openydt ticket cancel-online-month-ticket-by-month-ticket-type Write (--yes) monthTicketConfigId*, parkCode*
Modify online monthly pass order information openydt ticket edit-online-vip-ticket Write (--yes) monthTicketId*, carNo*, userName*, userPhone*, remark1~remark3, editBy*, editTime*
Query online monthly pass openydt ticket get-online-vip-ticket Read monthTicketId*
Query online monthly ticket records openydt ticket get-online-month-ticket-list Read parkCodeList*, pageNum*, pageSize*
Query online monthly tickets by license plate openydt ticket get-online-month-ticket-by-car-card Read carCode*
Query online monthly ticket payment information openydt ticket get-online-month-ticket-payment Read parkCode*, operateTimeFrom*, operateTimeTo*, pageNum*, pageSize*
View monthly ticket reservation details by license plate openydt ticket get-month-ticket-bill-detail Read thirdBillCode*
Query monthly tickets about to expire openydt ticket get-will-expire-month-ticket-bill Read validFrom, validTo, pageNum, pageSize
Query monthly ticket account transaction records openydt ticket get-month-ticket-account-transation-record Read monthTicketBillId*, transationTimeStart*, transationTimeEnd*, pageNum*, pageSize*
Query monthly ticket account deduction records openydt ticket get-month-ticket-account-use-record Read monthTicketBillId*, pageNum*, pageSize*
Apply for monthly ticket freeze openydt ticket apply-month-ticket-freeze Write(--yes) monthTicketBillId*, frozenStartTime*, frozenEndTime*, reason*
Monthly ticket freeze openydt ticket freeze-month-ticket Write(--yes) monthTicketBillId*, frozenStartTime*, frozenEndTime*
Monthly ticket unfreeze openydt ticket un-freeze-month-ticket Write(--yes) monthTicketBillId*
Add special vehicle type openydt ticket add-special-car-type Write(--yes) parkCode*, specialCarTypeName*, vipGroupType*(1 visitor/2 blacklist)
Get special vehicle type list openydt ticket get-special-car-type-list Read parkCodeList*, vipGroupType*(1 visitor/2 blacklist)
Query vehicle owner and VIP openydt ticket get-car-owner-and-vip-type Read parkCode*, carNo*
Get vehicle identity openydt ticket get-vip-by-car-no Read carCode*, enterTime*, leaveTime*, parkCode*, parkingCode*
Get VIP information by license plate and time openydt ticket get-vip-by-car-no-and-time Read carCode*, enterTime*, parkCode*
Get parking lot agreement openydt ticket get-park-agreement Read parkCodeList*
Sync electronic coupon QR code scan (parking lot agreement) openydt ticket park-agreement-save Write(--yes) parkCode*, agreementTitle*, agreementContent*

* indicates required. Write operations are all intercepted by f.ConfirmWrite , and when executingmustcarry --yes, otherwise it will be rejected. Parameters are based on openydt ticket <cmd> --help ; if there is any discrepancy, refer to --help.

Business process

Monthly ticket closed loop (create type → activate → renew/refund → query)

Be sure to usefields in the response of preceding commands as input parameters for subsequent commands, do not fabricate IDs out of thin air.

  1. Create monthly ticket type — openydt ticket add-online-month-ticket-type --yes(see the example below for body). Take data.monthTicketConfigId from the response as the "Monthly Ticket Type ID".
  2. Activate online monthly ticket — openydt ticket add-online-month-ticket --yes, use monthTicketConfigId from the previous step to fill in --month-ticket-config-id(or the body's monthTicketConfigId). Take data.monthTicketId(monthly ticket order id) from the response for renewal / refund / modification.
  3. Renewal / refund:
    • Renewal — openydt ticket renew-online-vip-ticket --yes, use monthTicketId from step 2 to fill in --month-ticket-id, and provide the new timePeriodList。
    • Refund (cancel) — openydt ticket cancel-online-vip-ticket --yes, use monthTicketId + parkCode + refundPrice; or batch cancel by type openydt ticket cancel-online-month-ticket-by-month-ticket-type --yes(use monthTicketConfigId)。
  4. Query:
    • Query by type/parking lot list — openydt ticket get-online-month-ticket-list。
    • Query by license plate — openydt ticket get-online-month-ticket-by-car-card(use carCode)。
    • Query single order — openydt ticket get-online-vip-ticket(use monthTicketId)。

💰 Amount (originPrice/favorPrice/refundPrice/price) unit isyuan; for activation/renewal/deduction, the billCode/thirdpartyBillCode/thirdpartyIdentify is an idempotency key——reuse the first value on retry, never generate a new one; upon receiving 907 账单已同步 = idempotency hit, already activated the first time, switch to querying get-online-vip-ticket to confirm, do not send again. See [[openydt-shared]]'s references/write-idempotency.md and references/result-reading-sop.md。

Monthly ticket freeze / unfreeze

  • Freeze requiresMonthly ticket order id: first use get-online-month-ticket-by-car-card or get-online-month-ticket-list to find monthTicketBillId(monthly ticket order id)。
  • Freeze — openydt ticket apply-month-ticket-freeze --yes or openydt ticket freeze-month-ticket --yes(pass monthTicketBillId + frozenStartTime + frozenEndTime)。
  • Unfreeze — openydt ticket un-freeze-month-ticket --yes(pass monthTicketBillId)。

Special vehicle type (reused for visitors / blacklist)

  • Use openydt ticket add-special-car-type --yes to create a special vehicle type,vipGroupType=1 for the visitor VIP group,vipGroupType=2 for the blacklist VIP group.
  • Get from the responsespecial vehicle type ID(you can also use openydt ticket get-special-car-type-list --vip-group-type 1 and pass --body '{"parkCodeList":["1ZS7H5PQH9"]}' to query the list and get the ID; parkCodeList and vipGroupType are both required).
  • This "special vehicle type ID" is reused by openydt visitor(visitor) and openydt blacklist(blacklist) as an input parameter when adding list members, realizing the closed loop of "the type is created in the ticket domain, and list members are managed in their respective domains".

Ticket sub-features not yet first-classed (use openydt api as a fallback)

The following ticket domain APIs are callable in the catalog but have not been made into first-class commands, with no dedicated openydt ticket subcommand; when needed, use the generic fallback openydt api <cmd>(write operations must --yes, and it is recommended to first --dry-run preview), copy the body from catalog/catalog.json 's sampleBody, see [[openydt-api-explorer]] for details:

  • Monthly ticket reservation/queueing:bookOrCancelReservation(write),checkMonthTicketAppointment、getMonthTicketAppointmentByCarCode / getMonthTicketAppointmentDetail / getMonthTicketAppointmentLineUp。

    ⚠️ getMonthTicketAppointmentPark(query the lots where monthly ticket reservations can be activated) belongs to the park domain, please use openydt api getMonthTicketAppointmentPark to call, see [[openydt-park]].

  • Monthly ticket authorized visitor:addMonthTicketAuthorizeVisitor(write),allowBuyMonthlyTicket(write),cancelMonthTicketAuthorizeVisitorByCarNo / cancelMonthTicketAuthorizeVisitorById(write),getMonthTicketAuthorizeVisitor / getMonthTicketAuthorizeVisitorHis。
  • Monthly ticket credential rules:monthTicketCertifiRuleSave(write),saveOrUpdateMonthTicketCretifi(write),delMonthTicketCertifiRule(write),getMonthTicketCertifiRuleList / getMonthTicketCertificateInfoList / getCertificateByInfo。
  • Offline monthly card (the whole set is not yet first-classed):getMonthCard / pauseMonthCard(write) / recoverMonthCard(write) / refundMonthCard(write) / renewMonthCard(write) — query/pause/resume/refund/renew for offline monthly cards all use openydt api <cmd> to call, see the catalog for the body.
  • VIP type extension:addCusVipType(write) / editCusVipType(write) / getVipType / addVipTicket(write) / setVipChargeRule(write) / querySupportMonthTicketParkList— custom VIP types and billing rules also use api as a fallback.

Example

The example parkCode/time are documented test values (test environment only; copying the catalog's historical sampleBody will hit an invalid lot/expired validity period). For write operations, it is recommended to first use --dry-run to preview the signed request, and after confirmation then --yes; ID-type parameters (monthTicketConfigId, etc.) must be taken from the previous step's response, do not copy the example values.

  1. Add online monthly ticket type (write, requires --yes) — after success, get the type ID from the response data.monthTicketConfigId :
# 先 dry-run 预览
openydt ticket add-online-month-ticket-type --dry-run --body '{
  "parkCodes": "1ZS7H5PQH9",
  "ticketName": "测试月票类型01",
  "price": 10,
  "timePeriod": { "startTime": "2026-06-01 00:00:00", "endTime": "2026-06-30 23:59:59" }
}'
# 确认后实发
openydt ticket add-online-month-ticket-type --yes --body '{
  "parkCodes": "1ZS7H5PQH9",
  "ticketName": "测试月票类型01",
  "price": 10,
  "timePeriod": { "startTime": "2026-06-01 00:00:00", "endTime": "2026-06-30 23:59:59" }
}'
  1. Use the previous step's monthTicketConfigId to activate the online monthly ticket (write, requires --yes):
# 先 dry-run 预览
openydt ticket add-online-month-ticket --dry-run --body '{
  "carNo": "粤EJW962",
  "billCode": "<全局唯一订单号,如 your-app-20260601-0001>",
  "parkCodes": "1ZS7H5PQH9,PTD2YBBZ",
  "originPrice": 10,
  "favorPrice": 5,
  "payMode": 4,
  "payModeRemark": "微信支付",
  "payOrigin": 7,
  "payOriginRemark": "智慧停车",
  "userName": "王五",
  "userPhone": "18000000000",
  "thirdpartyIdentify": "<第三方唯一标识,预约开通必填>",
  "monthTicketConfigId": "<取自上一步响应的 data.monthTicketConfigId>",
  "timePeriodList": [
    { "startTime": "2026-06-01 00:00:00", "endTime": "2026-06-30 23:59:59" }
  ]
}'
# 确认后实发(--yes)
openydt ticket add-online-month-ticket --yes --body '{
  "carNo": "粤EJW962",
  "billCode": "<全局唯一订单号,如 your-app-20260601-0001>",
  "parkCodes": "1ZS7H5PQH9,PTD2YBBZ",
  "originPrice": 10,
  "favorPrice": 5,
  "payMode": 4,
  "payModeRemark": "微信支付",
  "payOrigin": 7,
  "payOriginRemark": "智慧停车",
  "userName": "王五",
  "userPhone": "18000000000",
  "thirdpartyIdentify": "<第三方唯一标识,预约开通必填>",
  "monthTicketConfigId": "<取自上一步响应的 data.monthTicketConfigId>",
  "timePeriodList": [
    { "startTime": "2026-06-01 00:00:00", "endTime": "2026-06-30 23:59:59" }
  ]
}'
  1. Query the online monthly ticket by license plate (read, no need for --yes):
openydt ticket get-online-month-ticket-by-car-card --body '{
  "carCode": "粤EJW962",
  "buyMethod": 2,
  "ticketType": 1,
  "validStatus": 0,
  "startTime": "20260601000000",
  "endTime": "20261231235959",
  "pageNum": 1,
  "pageSize": 10
}'