Summary
Two full Ozone namespaces are missing: tools.ozone.queue.* (queue lifecycle + moderator assignment + report routing) and tools.ozone.report.* (moderation activity, stats, report querying, queue reassignment). Both are stable production lexicons used by Bluesky's moderation tooling, and ATProtoKit currently exposes the rest of tools.ozone.* but not these two.
Pain points
The entire tools.ozone.queue.* and tools.ozone.report.* surface is only reachable through hand-written raw XRPC calls; no typed wrappers exist.
Considered Alternatives
Raw XRPC for the entire Ozone admin surface — viable but loses parity with the rest of the typed tools.ozone namespace ATProtoKit already exposes.
Is this a breaking change?
No
Library Examples
N/A
Additional Context
Missing lexicons — tools.ozone.queue
| Lexicon |
Suggested wrapper |
tools.ozone.queue.assignModerator |
assignModeratorToQueue(_:queueID:) |
tools.ozone.queue.createQueue |
createModerationQueue(name:description:) |
tools.ozone.queue.defs |
types only |
tools.ozone.queue.deleteQueue |
deleteModerationQueue(by:) |
tools.ozone.queue.getAssignments |
getQueueAssignments(for:) |
tools.ozone.queue.listQueues |
listModerationQueues(limit:cursor:) |
tools.ozone.queue.routeReports |
routeReportsToQueue(_:reportIDs:) |
tools.ozone.queue.unassignModerator |
unassignModeratorFromQueue(_:queueID:) |
tools.ozone.queue.updateQueue |
updateModerationQueue(by:name:description:) |
Missing lexicons — tools.ozone.report
| Lexicon |
Suggested wrapper |
tools.ozone.report.assignModerator |
assignModeratorToReport(_:reportID:) |
tools.ozone.report.createActivity |
createReportActivity(_:) |
tools.ozone.report.defs |
types only |
tools.ozone.report.getAssignments |
getReportAssignments(for:) |
tools.ozone.report.getHistoricalStats |
getHistoricalReportStats(...) |
tools.ozone.report.getLatestReport |
getLatestReport(for:) |
tools.ozone.report.getLiveStats |
getLiveReportStats() |
tools.ozone.report.getReport |
getReport(by:) |
tools.ozone.report.listActivities |
listReportActivities(limit:cursor:) |
tools.ozone.report.queryActivities |
queryReportActivities(...) |
tools.ozone.report.queryReports |
queryReports(...) |
tools.ozone.report.reassignQueue |
reassignReportQueue(reportID:queueID:) |
tools.ozone.report.refreshStats |
refreshReportStats() |
tools.ozone.report.unassignModerator |
unassignModeratorFromReport(_:reportID:) |
References
Summary
Two full Ozone namespaces are missing:
tools.ozone.queue.*(queue lifecycle + moderator assignment + report routing) andtools.ozone.report.*(moderation activity, stats, report querying, queue reassignment). Both are stable production lexicons used by Bluesky's moderation tooling, and ATProtoKit currently exposes the rest oftools.ozone.*but not these two.Pain points
The entire
tools.ozone.queue.*andtools.ozone.report.*surface is only reachable through hand-written raw XRPC calls; no typed wrappers exist.Considered Alternatives
Raw XRPC for the entire Ozone admin surface — viable but loses parity with the rest of the typed
tools.ozonenamespace ATProtoKit already exposes.Is this a breaking change?
No
Library Examples
N/A
Additional Context
Missing lexicons —
tools.ozone.queuetools.ozone.queue.assignModeratorassignModeratorToQueue(_:queueID:)tools.ozone.queue.createQueuecreateModerationQueue(name:description:)tools.ozone.queue.defstools.ozone.queue.deleteQueuedeleteModerationQueue(by:)tools.ozone.queue.getAssignmentsgetQueueAssignments(for:)tools.ozone.queue.listQueueslistModerationQueues(limit:cursor:)tools.ozone.queue.routeReportsrouteReportsToQueue(_:reportIDs:)tools.ozone.queue.unassignModeratorunassignModeratorFromQueue(_:queueID:)tools.ozone.queue.updateQueueupdateModerationQueue(by:name:description:)Missing lexicons —
tools.ozone.reporttools.ozone.report.assignModeratorassignModeratorToReport(_:reportID:)tools.ozone.report.createActivitycreateReportActivity(_:)tools.ozone.report.defstools.ozone.report.getAssignmentsgetReportAssignments(for:)tools.ozone.report.getHistoricalStatsgetHistoricalReportStats(...)tools.ozone.report.getLatestReportgetLatestReport(for:)tools.ozone.report.getLiveStatsgetLiveReportStats()tools.ozone.report.getReportgetReport(by:)tools.ozone.report.listActivitieslistReportActivities(limit:cursor:)tools.ozone.report.queryActivitiesqueryReportActivities(...)tools.ozone.report.queryReportsqueryReports(...)tools.ozone.report.reassignQueuereassignReportQueue(reportID:queueID:)tools.ozone.report.refreshStatsrefreshReportStats()tools.ozone.report.unassignModeratorunassignModeratorFromReport(_:reportID:)References
Sources/ATProtoKit/Models/Lexicons/tools.ozone/Queue/andReport/(both new),Sources/ATProtoKit/APIReference/AdminAndModeratorAPI/(new method files)