feat: operators read print jobs; retire the Remove actions; plain refusal messages #41

Merged
james.maes merged 2 commits from feat/operators-read-jobs-and-plain-messages into main 2026-11-13 15:12:47 +00:00
2 Commits
Author SHA1 Message Date
james.maesandClaude Fable 5.2 1d23c985fd test: the selection-process count follows the two retired Remove processes
maven / build (push) Successful in 3m44s
build / maven (push) Successful in 3m44s
PrintingExtractTest counts the streamed-selection processes that use the
enforced extract step: 18 before, 16 without printingRemoveDevices and
printingRemoveSelectedPrinters.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-13 08:18:10 -06:00
james.maesandClaude Fable 5.2 1bf13be26e feat: operators read print jobs; retire the Remove actions; plain refusal messages
Operators read print jobs, read only. PrintingReadPermission accepted
printing_operator for print stations and printers and required
printing_admin for print jobs, so a person who prints could not see what
was printed. A holder of printing_operator now has every read shape on
printing_job that an administrator has (query, get, count, aggregate,
export) and sees every job of the tenant, with the same fields; the table
has no field for the document, its storage reference or the retained
binding. Control history and deletion history stay administrator-only and
nobody gains a write.

Retire the Remove actions. Delete (RC.3) keeps job history and records
who deleted what, so the older archive actions duplicated it on the
screens. Removed: the processes printingRemoveDevices and
printingRemoveSelectedPrinters and the control action Action.REMOVE. No
HTTP or agent route called them; the REVOKE control still resolves to
printingRevokeDevices. PrintingService.removePrinter and removeDevice
stay as service methods, and records archived earlier behave as before.

Refusals say what happened and what to do, and name no framework. The
permission checks, the 403 text of the native and legacy routes, the
control-action sign-in text and the OpenAPI descriptions are reworded;
statuses, error codes and JSON field names are unchanged. A host may give
its application's display name with PrintingQBitConfig.withProductName;
the default is "this application".

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-13 08:15:30 -06:00