Skip to content

feat(tck): implement deleteSchedule JSON-RPC method #2595

Description

@exploreriii

Problem

The TCK server does not implement deleteSchedule, so the TCK driver's ScheduleDeleteTransaction suite cannot run against the Python SDK. The SDK transaction already exists: src/hiero_sdk_python/schedule/schedule_delete_transaction.py (ScheduleDeleteTransaction).

createSchedule is already implemented in tck/handlers/schedule.py, so the schedule TCK modules exist — this handler slots in alongside it. Related: #2585 (signSchedule).

Before you start — required reading

TCK handlers are contract work: the TCK driver validates exact parameter names, optionality, defaults, and error semantics against the published spec. Please do not code from this issue title alone (or paste it into an AI tool and ship the first thing that runs) — read these first:

  1. The spec page linked below, in full — especially the parameter table, the expected response shape, and the error/edge-case tests. If your handler's behavior differs from the spec table, the TCK suite will fail even if the happy path works.
  2. tck/README.md — how the JSON-RPC server, param dataclasses, handler registry, and responses fit together, and how to run the TCK driver locally against your handler. Run the actual TCK suite before opening a PR; unit tests alone are not enough.
  3. An existing handler as your pattern — pick the closest one in tck/handlers/ with its matching tck/param/ dataclass and follow its structure, naming, and error handling exactly. Do not invent a new style, and do not re-implement SDK logic in the handler — handlers only wire validated params onto the existing SDK transaction/query.
  4. The SDK class you are wrapping (path in the Problem section) — read its setters and defaults so you know what the SDK already handles for you.
  5. CONTRIBUTING.md — test and PR conventions.

Solution

  • Add a DeleteScheduleParams dataclass to tck/param/schedule.py (scheduleId, commonTransactionParams — check the spec table for exact names and optionality).
  • Add a deleteSchedule handler to tck/handlers/schedule.py, registered with @rpc_method("deleteSchedule"), wrapping ScheduleDeleteTransaction. Return status via the existing status-only response pattern.
  • Add unit tests under tests/tck/, then run the TCK driver's ScheduleDeleteTransaction suite locally.

Acceptance criteria

  • deleteSchedule registered and dispatchable
  • Deleting a schedule created via createSchedule (with an admin key, signed by it) succeeds
  • Spec error cases behave as specified (missing/invalid/non-existent scheduleId, missing admin-key signature, already-deleted/already-executed schedule)
  • Unit tests added and the TCK ScheduleDeleteTransaction suite passes

Spec: https://github.com/hiero-ledger/hiero-sdk-tck/blob/main/docs/test-specifications/schedule-service/ScheduleDeleteTransaction.md
JS reference: https://github.com/hiero-ledger/hiero-sdk-js/blob/main/tck/methods/schedule.ts (deleteSchedule)

Metadata

Metadata

Assignees

Labels

approvedIssue has been approved by team memberlang: pythonUses Python programming languagescope: TCKinvolves engineering for the implementation of TCK method and moduleskill: intermediaterequires some knowledge of the codebase with some defined steps to implement or examples

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions