Bluesky Ozone Team API

Ozone team member management operations.

OpenAPI Specification

bluesky-ozone-team-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bluesky Social Actor Profiles Ozone Team 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 Team
  description: Ozone team member management operations.
paths:
  /xrpc/tools.ozone.team.addMember:
    post:
      operationId: ozoneTeamAddMember
      summary: Bluesky Add a member to the ozone team.
      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.*


        Add a member to the ozone team. Requires admin role.'
      tags:
      - Ozone Team
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - did
              - role
              properties:
                did:
                  type: string
                  format: did
                role:
                  type: string
                  enum:
                  - tools.ozone.team.defs#roleAdmin
                  - tools.ozone.team.defs#roleModerator
                  - tools.ozone.team.defs#roleTriage
            examples:
              OzoneTeamAddMemberRequestExample:
                $ref: '#/components/examples/OzoneTeamAddMemberRequestExample'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsOzoneTeamDefsMember'
              examples:
                OzoneTeamAddMemberResponse200Example:
                  $ref: '#/components/examples/OzoneTeamAddMemberResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - MemberAlreadyExists
                  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.team.deleteMember:
    post:
      operationId: ozoneTeamDeleteMember
      summary: Bluesky Delete a member from ozone team.
      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 member from ozone team. Requires admin role.'
      tags:
      - Ozone Team
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - did
              properties:
                did:
                  type: string
                  format: did
            examples:
              OzoneTeamDeleteMemberRequestExample:
                $ref: '#/components/examples/OzoneTeamDeleteMemberRequestExample'
      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
                    - MemberNotFound
                    - CannotDeleteSelf
                  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.team.listMembers:
    get:
      operationId: ozoneTeamListMembers
      summary: Bluesky List all members with access to the ozone service.
      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.*


        List all members with access to the ozone service.'
      tags:
      - Ozone Team
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        example: 50
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        example: eyJsYXN0SWQiOiIxMjM0NTYifQ
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - members
                properties:
                  cursor:
                    type: string
                  members:
                    type: array
                    items:
                      $ref: '#/components/schemas/ToolsOzoneTeamDefsMember'
              examples:
                OzoneTeamListMembersResponse200Example:
                  $ref: '#/components/examples/OzoneTeamListMembersResponse200Example'
        '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.team.updateMember:
    post:
      operationId: ozoneTeamUpdateMember
      summary: Bluesky Update a member in the ozone service.
      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.*


        Update a member in the ozone service. Requires admin role.'
      tags:
      - Ozone Team
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - did
              properties:
                did:
                  type: string
                  format: did
                disabled:
                  type: boolean
                role:
                  type: string
                  enum:
                  - tools.ozone.team.defs#roleAdmin
                  - tools.ozone.team.defs#roleModerator
                  - tools.ozone.team.defs#roleTriage
            examples:
              OzoneTeamUpdateMemberRequestExample:
                $ref: '#/components/examples/OzoneTeamUpdateMemberRequestExample'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsOzoneTeamDefsMember'
              examples:
                OzoneTeamUpdateMemberResponse200Example:
                  $ref: '#/components/examples/OzoneTeamUpdateMemberResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                    - MemberNotFound
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
components:
  examples:
    OzoneTeamUpdateMemberResponse200Example:
      summary: Successful response for ozoneTeamUpdateMember
      value:
        did: did:plc:example123abc
        role: '#roleAdmin'
        disabled: true
        profile:
          did: did:plc:example123abc
          handle: user.bsky.social
          displayName: Example Name
          description: This is an example description.
          avatar: https://example.com/resource
          banner: https://example.com/resource
          followersCount: 50
          followsCount: 50
        createdAt: '2024-01-15T12:00:00.000Z'
        updatedAt: '2024-01-15T12:00:00.000Z'
        lastUpdatedBy: example-lastUpdatedBy
    OzoneTeamAddMemberResponse200Example:
      summary: Successful response for ozoneTeamAddMember
      value:
        did: did:plc:example123abc
        role: '#roleAdmin'
        disabled: true
        profile:
          did: did:plc:example123abc
          handle: user.bsky.social
          displayName: Example Name
          description: This is an example description.
          avatar: https://example.com/resource
          banner: https://example.com/resource
          followersCount: 50
          followsCount: 50
        createdAt: '2024-01-15T12:00:00.000Z'
        updatedAt: '2024-01-15T12:00:00.000Z'
        lastUpdatedBy: example-lastUpdatedBy
    OzoneTeamListMembersResponse200Example:
      summary: Successful response for ozoneTeamListMembers
      value:
        members:
        - did: did:plc:example123abc
          role: '#roleAdmin'
          disabled: true
          profile:
            did: did:plc:example123abc
            handle: user.bsky.social
            displayName: Example Name
            description: This is an example description.
            avatar: https://example.com/resource
            banner: https://example.com/resource
            followersCount: 50
            followsCount: 50
          createdAt: '2024-01-15T12:00:00.000Z'
          updatedAt: '2024-01-15T12:00:00.000Z'
          lastUpdatedBy: example-lastUpdatedBy
        cursor: eyJsYXN0SWQiOiIxMjM0NTYifQ
    OzoneTeamDeleteMemberRequestExample:
      summary: Example request for ozoneTeamDeleteMember
      value:
        did: did:plc:example123abc
    OzoneTeamUpdateMemberRequestExample:
      summary: Example request for ozoneTeamUpdateMember
      value:
        did: did:plc:example123abc
        disabled: true
        role: tools.ozone.team.defs#roleAdmin
    OzoneTeamAddMemberRequestExample:
      summary: Example request for ozoneTeamAddMember
      value:
        did: did:plc:example123abc
        role: tools.ozone.team.defs#roleAdmin
  schemas:
    AppBskyGraphDefsListViewBasic:
      type: object
      required:
      - uri
      - cid
      - name
      - purpose
      properties:
        uri:
          type: string
          format: at-uri
        cid:
          type: string
          format: cid
        name:
          type: string
          minLength: 1
          maxLength: 64
        purpose:
          $ref: '#/components/schemas/AppBskyGraphDefsListPurpose'
        avatar:
          type: string
          format: uri
        listItemCount:
          type: integer
          minimum: 0
        labels:
          type: array
          items:
            $ref: '#/components/schemas/ComAtprotoLabelDefsLabel'
        viewer:
          $ref: '#/components/schemas/AppBskyGraphDefsListViewerState'
        indexedAt:
          type: string
          format: date-time
    ComAtprotoLabelDefsLabel:
      type: object
      description: Metadata tag on an atproto resource (eg, repo or record).
      required:
      - src
      - uri
      - val
      - cts
      properties:
        ver:
          type: integer
        src:
          type: string
          description: DID of the actor who created this label.
          format: did
        uri:
          type: string
          description: AT URI of the record, repository (account), or other resource that this label applies to.
          format: uri
        cid:
          type: string
          description: Optionally, CID specifying the specific version of 'uri' resource this label applies to.
          format: cid
        val:
          type: string
          description: The short string name of the value or type of this label.
          maxLength: 128
        neg:
          type: boolean
          description: If true, this is a negation label, overwriting a previous label.
        cts:
          type: string
          description: Timestamp when this label was created.
          format: date-time
        exp:
          type: string
          description: Timestamp at which this label expires (no longer applies).
          format: date-time
        sig:
          type: string
          format: byte
          description: Signature of dag-cbor encoded label.
    AppBskyActorDefsProfileAssociatedChat:
      type: object
      required:
      - allowIncoming
      properties:
        allowIncoming:
          type: string
          enum:
          - all
          - none
          - following
    AppBskyActorDefsProfileViewDetailed:
      type: object
      required:
      - did
      - handle
      properties:
        did:
          type: string
          format: did
        handle:
          type: string
          format: handle
        displayName:
          type: string
          maxLength: 640
        description:
          type: string
          maxLength: 2560
        avatar:
          type: string
          format: uri
        banner:
          type: string
          format: uri
        followersCount:
          type: integer
        followsCount:
          type: integer
        postsCount:
          type: integer
        associated:
          $ref: '#/components/schemas/AppBskyActorDefsProfileAssociated'
        joinedViaStarterPack:
          $ref: '#/components/schemas/AppBskyGraphDefsStarterPackViewBasic'
        indexedAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        viewer:
          $ref: '#/components/schemas/AppBskyActorDefsViewerState'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/ComAtprotoLabelDefsLabel'
        pinnedPost:
          $ref: '#/components/schemas/ComAtprotoRepoStrongRef'
    AppBskyActorDefsViewerState:
      type: object
      description: Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.
      properties:
        muted:
          type: boolean
        mutedByList:
          $ref: '#/components/schemas/AppBskyGraphDefsListViewBasic'
        blockedBy:
          type: boolean
        blocking:
          type: string
          format: at-uri
        blockingByList:
          $ref: '#/components/schemas/AppBskyGraphDefsListViewBasic'
        following:
          type: string
          format: at-uri
        followedBy:
          type: string
          format: at-uri
        knownFollowers:
          $ref: '#/components/schemas/AppBskyActorDefsKnownFollowers'
    ComAtprotoRepoStrongRef:
      type: object
      required:
      - uri
      - cid
      properties:
        uri:
          type: string
          format: at-uri
        cid:
          type: string
          format: cid
    AppBskyActorDefsProfileAssociated:
      type: object
      properties:
        lists:
          type: integer
        feedgens:
          type: integer
        starterPacks:
          type: integer
        labeler:
          type: boolean
        chat:
          $ref: '#/components/schemas/AppBskyActorDefsProfileAssociatedChat'
    AppBskyActorDefsKnownFollowers:
      type: object
      description: The subject's followers whom you also follow
      required:
      - count
      - followers
      properties:
        count:
          type: integer
        followers:
          type: array
          items:
            $ref: '#/components/schemas/AppBskyActorDefsProfileViewBasic'
          maxItems: 5
    AppBskyActorDefsProfileViewBasic:
      type: object
      required:
      - did
      - handle
      properties:
        did:
          type: string
          format: did
        handle:
          type: string
          format: handle
        displayName:
          type: string
          maxLength: 640
        avatar:
          type: string
          format: uri
        associated:
          $ref: '#/components/schemas/AppBskyActorDefsProfileAssociated'
        viewer:
          $ref: '#/components/schemas/AppBskyActorDefsViewerState'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/ComAtprotoLabelDefsLabel'
        createdAt:
          type: string
          format: date-time
    AppBskyGraphDefsListPurpose:
      oneOf:
      - $ref: '#/components/schemas/AppBskyGraphDefsModlist'
      - $ref: '#/components/schemas/AppBskyGraphDefsCuratelist'
      - $ref: '#/components/schemas/AppBskyGraphDefsReferencelist'
    ToolsOzoneTeamDefsMember:
      type: object
      required:
      - did
      - role
      properties:
        did:
          type: string
          format: did
        disabled:
          type: boolean
        profile:
          $ref: '#/components/schemas/AppBskyActorDefsProfileViewDetailed'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        lastUpdatedBy:
          type: string
        role:
          type: string
          enum:
          - '#roleAdmin'
          - '#roleModerator'
          - '#roleTriage'
    AppBskyGraphDefsCuratelist:
      type: string
      format: token
      description: A list of actors used for curation purposes such as list feeds or interaction gating.
    AppBskyGraphDefsReferencelist:
      type: string
      format: token
      description: A list of actors used for only for reference purposes such as within a starter pack.
    AppBskyGraphDefsModlist:
      type: string
      format: token
      description: A list of actors to apply an aggregate moderation action (mute/block) on.
    AppBskyGraphDefsListViewerState:
      type: object
      properties:
        muted:
          type: boolean
        blocked:
          type: string
          format: at-uri
    AppBskyGraphDefsStarterPackViewBasic:
      type: object
      required:
      - uri
      - cid
      - record
      - creator
      - indexedAt
      properties:
        uri:
          type: string
          format: at-uri
        cid:
          type: string
          format: cid
        record: {}
        creator:
          $ref: '#/components/schemas/AppBskyActorDefsProfileViewBasic'
        listItemCount:
          type: integer
          minimum: 0
        joinedWeekCount:
          type: integer
          minimum: 0
        joinedAllTimeCount:
          type: integer
          minimum: 0
        labels:
          type: array
          items:
            $ref: '#/components/schemas/ComAtprotoLabelDefsLabel'
        indexedAt:
          type: string
          format: date-time
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer