Skip to content

How to change your labeller's service record for the new subcategory definitions

H
Jul 28, 20264 min read1 read
3
1

ate last year, the Ozone team put out new definitions for reporting categories, allowing labeller operators to further narrow the scope of the types of reports they accept and making the types of reports received more specific for moderators.

This changes the legacy set of 5 reporting options into 39 possible reporting options. However, depending on the specifics of your labeller, you may not want all those options.

This is a document that details how to modify a labeller's service record such that it uses the new tools.ozone.report.defs lexicon instead of the legacy com.atproto.moderation.defs lexicon, with an example taken directly from @laelaps.fyi's previous and current service records.*1

You can view the new definitions on Lexicon Garden here: https://lexicon.garden/lexicon/did:plc:6msi3pj7krzih5qxqtryxlzw/com.atproto.moderation.defs#reasonType.*2
Keep this open in a separate tab, you'll need it later.

I'll go over how to update your service record's definitions in Ozone and PDSls.

Ozone instructions

  1. Log into your labeller, and visit the Configure page on the left-hand sidebar.
  2. Under the corresponding Configure tab, the first subheading is Service Record. Swap to the JSON editor*3 using the button on the upper right-hand side.
  3. Scroll down until you see a section called "reasonTypes."
    You should see multiple entries starting with "com.atproto.moderation.defs".
    Notice how these entries are indented with two spaces, start and end with quotation marks, and end in a comma barring the last line. This is vital for the JSON to parse correctly; otherwise, you'll get an error.
  4. Change the definitions out from the com.atproto.moderation.defs lexicons to your desired tools.ozone.report.defs subcategories from the Lexicon Garden entry mentioned earlier.
  5. At the bottom, select Save to save your changes. If you don't get any errors, check your work in the client of your choice by attempting to report a post or account under categories your labeller should and shouldn't support. If your changes don't populate correctly, try force-clearing the tab's cache with a Ctrl-F5 on Windows, or a Cmd-R on Mac.

Laelaps's previous reasonTypes looked like this:

"reasonTypes": [
    "com.atproto.moderation.defs#reasonViolation",
    "com.atproto.moderation.defs#reasonOther",
    "com.atproto.moderation.defs#reasonAppeal",
    "com.atproto.moderation.defs#reasonSexual"
  ],

With the aforementioned changes, they now look like this:

"reasonTypes": [
    "tools.ozone.report.defs#reasonAppeal",
    "tools.ozone.report.defs#reasonOther",
    "tools.ozone.report.defs#reasonSexualNCII",
    "tools.ozone.report.defs#reasonSexualAnimal",
    "tools.ozone.report.defs#reasonSexualOther",
    "tools.ozone.report.defs#reasonRuleProhibitedSales",
    "tools.ozone.report.defs#reasonRuleBanEvasion",
    "tools.ozone.report.defs#reasonRuleOther"
  ]

PDSls instructions

  1. Log in to pdsls.dev using your labeller account, and select the button with your profile picture reading "View your repository".
  2. Select app.bsky.labeler.service, and then click self. This is your labeller's service record.
  3. To edit your record, select the pencil icon on the upper right-hand side.
  4. Scroll down until you see a section called "reasonTypes." You should see multiple entries starting with "com.atproto.moderation.defs".
    Notice how these entries are indented with two spaces, start and end with quotation marks, and end in a comma barring the last line. This is vital for the JSON to parse correctly; otherwise, you'll get an error.
  5. Change the definitions out from the com.atproto.moderation.defs lexicons to your desired tools.ozone.report.defs subcategories from the Lexicon Garden entry mentioned earlier.
  6. At the bottom, select Edit to save your changes. If you don't get any errors, check your work in the client of your choice by attempting to report a post or account under categories your labeller should and shouldn't support. If your changes don't populate correctly, try force-clearing the tab's cache with a Ctrl-F5, or a Cmd-R on Mac.

Laelaps's previous reasonTypes looked like this:

"reasonTypes": [
    "com.atproto.moderation.defs#reasonViolation",
    "com.atproto.moderation.defs#reasonOther",
    "com.atproto.moderation.defs#reasonAppeal",
    "com.atproto.moderation.defs#reasonSexual"
  ],

With the aforementioned changes, they now look like this:

"reasonTypes": [
    "tools.ozone.report.defs#reasonAppeal",
    "tools.ozone.report.defs#reasonOther",
    "tools.ozone.report.defs#reasonSexualNCII",
    "tools.ozone.report.defs#reasonSexualAnimal",
    "tools.ozone.report.defs#reasonSexualOther",
    "tools.ozone.report.defs#reasonRuleProhibitedSales",
    "tools.ozone.report.defs#reasonRuleBanEvasion",
    "tools.ozone.report.defs#reasonRuleOther"
  ]

Some additional notes

  1. I'd recommend for any subcategory you end up choosing, you also include the Other category for the corresponding subcategory, and the more general Other option for reports that may not neatly fit into those categories.
  2. If you leave reasonTypes in your labeller's service record but empty, your labeller will be unable to receive reports and won't show up in the reporting menu. This is useful if you run a vanity labeller and don't have the infrastructure implemented to receive reports anyway.
  3. If you remove reasonTypes entirely from your labeller's service record, your labeller will default to receiving every new report subcategory from the next new report you receive.

Thank you's:

Feel free to send this around or steal my words from me—all I ask is that you credit me!


If you'd like technical writing for your own Atmospheric work, DM me on your favorite Bluesky client or email me via at@heika.dog!


  1. Despite the new name, the new definitions do not solely apply to Ozone. If you're not using Ozone, use the PDSls instructions later in this document. ↩
  2. You might notice that this says reasonType and not reasonTypes, as the rest of this document says. Your labeller service record should use the plural reasonTypes. ↩
  3. At the time of writing, you're unable to perform these steps solely in Ozone's UI editor. I've filed a GitHub issue in the Ozone repo about this. ↩

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions