Bluesky Ozone Communication API

Ozone moderation tool communication operations.

Operations 4

POST /xrpc/tools.ozone.communication.createTemplate Bluesky Administrative action to create a new, re-usable communication (email for now) template. #
POST /xrpc/tools.ozone.communication.deleteTemplate Bluesky Delete a communication template. #
GET /xrpc/tools.ozone.communication.listTemplates Bluesky Get list of all communication templates. #
POST /xrpc/tools.ozone.communication.updateTemplate Bluesky Administrative action to update an existing communication template. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bluesky-ozone-communication-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bluesky-ozone-communication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bluesky Social Actor Profiles Ozone Communication API
  description: "The Bluesky Social API provides programmatic access to the Bluesky social network built on the AT Protocol. \n\nThis API enables developers to:\n- Manage user profiles and preferences\n- Create, read, and interact with posts and feeds\n- Handle social graph operations (follows, blocks, mutes)\n- Process notifications and conversations\n- Moderate content and manage labels\n- Synchronize repository data\n\nAuthentication is handled via Bearer tokens. Public endpoints can be accessed directly at https://public.api.bsky.app, while authenticated requests should be made to the user's Personal Data Server (PDS).\n\nFor more information, visit the [Bluesky API Documentation](https://docs.bsky.app)."
  version: 1.0.0
  contact:
    name: Bluesky Support
    url: https://bsky.app
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://bsky.social/xrpc
  description: Bluesky Social PDS
- url: https://public.api.bsky.app/xrpc
  description: Public Bluesky AppView API (unauthenticated endpoints)
tags:
- name: Ozone Communication
  description: Ozone moderation tool communication operations.
paths:
  /xrpc/tools.ozone.communication.createTemplate:
    post:
      operationId: ozoneCommunicationCreateTemplate
      summary: Bluesky Administrative action to create a new, re-usable communication (email for now) template.
      description: '*This endpoint is part of the [Ozone moderation service](https://ozone.tools/) APIs. Requests usually require authentication, are directed to the user''s PDS intance, and proxied to the Ozone instance indicated by the DID in the service proxying header. Admin authenentication may also be possible, with request sent directly to the Ozone instance.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Administrative action to create a new, re-usable communication (email for now) template.'
      tags:
      - Ozone Communication
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - subject
              - contentMarkdown
              - name
              properties:
                name:
                  type: string
                  description: Name of the template.
                contentMarkdown:
                  type: string
                  description: Content of the template, markdown supported, can contain variable placeholders.
                subject:
                  type: string
                  description: Subject of the message, used in emails.
                lang:
                  type: string
                  description: Message language.
                  format: language
                createdBy:
                  type: string
                  description: DID of the user who is creating the template.
                  format: did
            examples:
              OzoneCommunicationCreateTemplateRequestExample:
                $ref: '#/components/examples/OzoneCommunicationCreateTemplateRequestExample'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsOzoneCommunicationDefsTemplateView'
              examples:
                OzoneCommunicationCreateTemplateResponse200Example:
                  $ref: '#/components/examples/OzoneCommunicationCreateTemplateResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - DuplicateTemplateName
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/tools.ozone.communication.deleteTemplate:
    post:
      operationId: ozoneCommunicationDeleteTemplate
      summary: Bluesky Delete a communication template.
      description: '*This endpoint is part of the [Ozone moderation service](https://ozone.tools/) APIs. Requests usually require authentication, are directed to the user''s PDS intance, and proxied to the Ozone instance indicated by the DID in the service proxying header. Admin authenentication may also be possible, with request sent directly to the Ozone instance.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Delete a communication template.'
      tags:
      - Ozone Communication
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: string
            examples:
              OzoneCommunicationDeleteTemplateRequestExample:
                $ref: '#/components/examples/OzoneCommunicationDeleteTemplateRequestExample'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/tools.ozone.communication.listTemplates:
    get:
      operationId: ozoneCommunicationListTemplates
      summary: Bluesky Get list of all communication templates.
      description: '*This endpoint is part of the [Ozone moderation service](https://ozone.tools/) APIs. Requests usually require authentication, are directed to the user''s PDS intance, and proxied to the Ozone instance indicated by the DID in the service proxying header. Admin authenentication may also be possible, with request sent directly to the Ozone instance.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Get list of all communication templates.'
      tags:
      - Ozone Communication
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - communicationTemplates
                properties:
                  communicationTemplates:
                    type: array
                    items:
                      $ref: '#/components/schemas/ToolsOzoneCommunicationDefsTemplateView'
              examples:
                OzoneCommunicationListTemplatesResponse200Example:
                  $ref: '#/components/examples/OzoneCommunicationListTemplatesResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
  /xrpc/tools.ozone.communication.updateTemplate:
    post:
      operationId: ozoneCommunicationUpdateTemplate
      summary: Bluesky Administrative action to update an existing communication template.
      description: '*This endpoint is part of the [Ozone moderation service](https://ozone.tools/) APIs. Requests usually require authentication, are directed to the user''s PDS intance, and proxied to the Ozone instance indicated by the DID in the service proxying header. Admin authenentication may also be possible, with request sent directly to the Ozone instance.*


        *To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Administrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.'
      tags:
      - Ozone Communication
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              properties:
                id:
                  type: string
                  description: ID of the template to be updated.
                name:
                  type: string
                  description: Name of the template.
                lang:
                  type: string
                  description: Message language.
                  format: language
                contentMarkdown:
                  type: string
                  description: Content of the template, markdown supported, can contain variable placeholders.
                subject:
                  type: string
                  description: Subject of the message, used in emails.
                updatedBy:
                  type: string
                  description: DID of the user who is updating the template.
                  format: did
                disabled:
                  type: boolean
            examples:
              OzoneCommunicationUpdateTemplateRequestExample:
                $ref: '#/components/examples/OzoneCommunicationUpdateTemplateRequestExample'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsOzoneCommunicationDefsTemplateView'
              examples:
                OzoneCommunicationUpdateTemplateResponse200Example:
                  $ref: '#/components/examples/OzoneCommunicationUpdateTemplateResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - DuplicateTemplateName
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
components:
  schemas:
    ToolsOzoneCommunicationDefsTemplateView:
      type: object
      required:
      - id
      - name
      - contentMarkdown
      - disabled
      - lastUpdatedBy
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
        name:
          type: string
          description: Name of the template.
        subject:
          type: string
          description: Content of the template, can contain markdown and variable placeholders.
        contentMarkdown:
          type: string
          description: Subject of the message, used in emails.
        disabled:
          type: boolean
        lang:
          type: string
          description: Message language.
          format: language
        lastUpdatedBy:
          type: string
          description: DID of the user who last updated the template.
          format: did
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
  examples:
    OzoneCommunicationListTemplatesResponse200Example:
      summary: Successful response for ozoneCommunicationListTemplates
      value:
        communicationTemplates:
        - id: example-id
          name: Example Name
          contentMarkdown: example-contentMarkdown
          disabled: true
          lastUpdatedBy: did:plc:example123abc
          createdAt: '2024-01-15T12:00:00.000Z'
          updatedAt: '2024-01-15T12:00:00.000Z'
          subject: at://did:plc:example123/app.bsky.feed.post/abc123
    OzoneCommunicationUpdateTemplateRequestExample:
      summary: Example request for ozoneCommunicationUpdateTemplate
      value:
        id: example-id
        name: Example Name
        lang: en
        contentMarkdown: example-contentMarkdown
        subject: at://did:plc:example123/app.bsky.feed.post/abc123
        updatedBy: did:plc:example123abc
        disabled: true
    OzoneCommunicationCreateTemplateRequestExample:
      summary: Example request for ozoneCommunicationCreateTemplate
      value:
        subject: at://did:plc:example123/app.bsky.feed.post/abc123
        contentMarkdown: example-contentMarkdown
        name: Example Name
        lang: en
        createdBy: did:plc:example123abc
    OzoneCommunicationDeleteTemplateRequestExample:
      summary: Example request for ozoneCommunicationDeleteTemplate
      value:
        id: example-id
    OzoneCommunicationUpdateTemplateResponse200Example:
      summary: Successful response for ozoneCommunicationUpdateTemplate
      value:
        id: example-id
        name: Example Name
        contentMarkdown: example-contentMarkdown
        disabled: true
        lastUpdatedBy: did:plc:example123abc
        createdAt: '2024-01-15T12:00:00.000Z'
        updatedAt: '2024-01-15T12:00:00.000Z'
        subject: at://did:plc:example123/app.bsky.feed.post/abc123
    OzoneCommunicationCreateTemplateResponse200Example:
      summary: Successful response for ozoneCommunicationCreateTemplate
      value:
        id: example-id
        name: Example Name
        contentMarkdown: example-contentMarkdown
        disabled: true
        lastUpdatedBy: did:plc:example123abc
        createdAt: '2024-01-15T12:00:00.000Z'
        updatedAt: '2024-01-15T12:00:00.000Z'
        subject: at://did:plc:example123/app.bsky.feed.post/abc123
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer