packetdial: add gated call-queue + time-frame edit wrappers (live-verified)
Added write wrappers, each tested create→update→delete on the arizonacomputerguru test domain (sanctioned, non-production): - call queues: create-callqueue, update-callqueue, delete-callqueue + add-agent / update-agent / remove-agent - time frames: create-timeframe, update-timeframe, delete-timeframe (body-discriminated — same path, server selects the op from the body; wrappers pass --body verbatim) All behind --confirm (gate verified: DRY RUN refuses without it). SKILL.md documents the bodies + the days-of-week-needs-array gotcha + names ACG as the test bed; capability map + api.md history updated. No production objects touched; no test leftovers. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -116,6 +116,19 @@ def main(argv=None) -> int:
|
||||
sp = sub.add_parser("create-phone"); sp.add_argument("domain"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("create-did"); sp.add_argument("domain"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
|
||||
# call queue edits (gated)
|
||||
sp = sub.add_parser("create-callqueue"); sp.add_argument("domain"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("update-callqueue"); sp.add_argument("domain"); sp.add_argument("callqueue"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("delete-callqueue"); sp.add_argument("domain"); sp.add_argument("callqueue"); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("add-agent"); sp.add_argument("domain"); sp.add_argument("callqueue"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("update-agent"); sp.add_argument("domain"); sp.add_argument("callqueue"); sp.add_argument("agent_id"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("remove-agent"); sp.add_argument("domain"); sp.add_argument("callqueue"); sp.add_argument("agent_id"); sp.add_argument("--confirm", action="store_true")
|
||||
|
||||
# timeframe edits (gated) — body-discriminated variants, pass --body verbatim
|
||||
sp = sub.add_parser("create-timeframe"); sp.add_argument("domain"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("update-timeframe"); sp.add_argument("domain"); sp.add_argument("tf_id"); sp.add_argument("--body", required=True); sp.add_argument("--confirm", action="store_true")
|
||||
sp = sub.add_parser("delete-timeframe"); sp.add_argument("domain"); sp.add_argument("tf_id"); sp.add_argument("--body"); sp.add_argument("--confirm", action="store_true")
|
||||
|
||||
# --- raw escape hatch ---
|
||||
sp = sub.add_parser("raw", help="raw request against any v2 path")
|
||||
sp.add_argument("method", choices=["GET", "POST", "PUT", "PATCH", "DELETE"])
|
||||
@@ -190,6 +203,42 @@ def main(argv=None) -> int:
|
||||
_require_confirm(args, "create phone number", f"{args.domain}: {json.dumps(body)}")
|
||||
_emit(client.create_phonenumber(args.domain, body))
|
||||
|
||||
elif args.cmd == "create-callqueue":
|
||||
body = _parse_body(args.body)
|
||||
_require_confirm(args, "create call queue", f"{args.domain}: {json.dumps(body)}")
|
||||
_emit(client.create_callqueue(args.domain, body))
|
||||
elif args.cmd == "update-callqueue":
|
||||
body = _parse_body(args.body)
|
||||
_require_confirm(args, "update call queue", f"{args.domain}/{args.callqueue}: {json.dumps(body)}")
|
||||
_emit(client.update_callqueue(args.domain, args.callqueue, body))
|
||||
elif args.cmd == "delete-callqueue":
|
||||
_require_confirm(args, "DELETE call queue", f"{args.domain}/{args.callqueue}")
|
||||
_emit(client.delete_callqueue(args.domain, args.callqueue))
|
||||
elif args.cmd == "add-agent":
|
||||
body = _parse_body(args.body)
|
||||
_require_confirm(args, "add queue agent", f"{args.domain}/{args.callqueue}: {json.dumps(body)}")
|
||||
_emit(client.add_callqueue_agent(args.domain, args.callqueue, body))
|
||||
elif args.cmd == "update-agent":
|
||||
body = _parse_body(args.body)
|
||||
_require_confirm(args, "update queue agent", f"{args.domain}/{args.callqueue}/{args.agent_id}: {json.dumps(body)}")
|
||||
_emit(client.update_callqueue_agent(args.domain, args.callqueue, args.agent_id, body))
|
||||
elif args.cmd == "remove-agent":
|
||||
_require_confirm(args, "remove queue agent", f"{args.domain}/{args.callqueue}/{args.agent_id}")
|
||||
_emit(client.remove_callqueue_agent(args.domain, args.callqueue, args.agent_id))
|
||||
|
||||
elif args.cmd == "create-timeframe":
|
||||
body = _parse_body(args.body)
|
||||
_require_confirm(args, "create timeframe", f"{args.domain}: {json.dumps(body)}")
|
||||
_emit(client.create_timeframe(args.domain, body))
|
||||
elif args.cmd == "update-timeframe":
|
||||
body = _parse_body(args.body)
|
||||
_require_confirm(args, "update timeframe", f"{args.domain}/{args.tf_id}: {json.dumps(body)}")
|
||||
_emit(client.update_timeframe(args.domain, args.tf_id, body))
|
||||
elif args.cmd == "delete-timeframe":
|
||||
body = _parse_body(args.body) if args.body else None
|
||||
_require_confirm(args, "DELETE timeframe", f"{args.domain}/{args.tf_id}" + (f" {json.dumps(body)}" if body else ""))
|
||||
_emit(client.delete_timeframe(args.domain, args.tf_id, body))
|
||||
|
||||
elif args.cmd == "raw":
|
||||
body = _parse_body(args.body)
|
||||
if args.method != "GET":
|
||||
|
||||
Reference in New Issue
Block a user