openapi: 3.1.0 info: title: Bluesky Social Actor Profiles Ozone Signatures 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 Signatures description: Ozone signature and threat analysis operations. paths: /xrpc/tools.ozone.signature.findCorrelation: get: operationId: ozoneSignatureFindCorrelation summary: Bluesky Find all correlated threat signatures between 2 or more accounts. 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.* Find all correlated threat signatures between 2 or more accounts.' tags: - Ozone Signatures x-microcks-operation: delay: 100 dispatcher: FALLBACK dispatcherRules: '' security: - Bearer: [] parameters: - name: dids in: query required: true schema: type: array items: type: string format: did example: - did:plc:example123abc responses: '200': description: OK content: application/json: schema: type: object required: - details properties: details: type: array items: $ref: '#/components/schemas/ToolsOzoneSignatureDefsSigDetail' examples: OzoneSignatureFindCorrelationResponse200Example: $ref: '#/components/examples/OzoneSignatureFindCorrelationResponse200Example' '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.signature.findRelatedAccounts: get: operationId: ozoneSignatureFindRelatedAccounts summary: Bluesky Get accounts that share some matching threat signatures with the root account. 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 accounts that share some matching threat signatures with the root account.' tags: - Ozone Signatures x-microcks-operation: delay: 100 dispatcher: FALLBACK dispatcherRules: '' security: - Bearer: [] parameters: - name: did in: query required: true schema: type: string format: did example: did:plc:example123abc - name: cursor in: query required: false schema: type: string example: eyJsYXN0SWQiOiIxMjM0NTYifQ - name: limit in: query required: false schema: type: integer minimum: 1 maximum: 100 default: 50 example: 50 responses: '200': description: OK content: application/json: schema: type: object required: - accounts properties: cursor: type: string accounts: type: array items: $ref: '#/components/schemas/ToolsOzoneSignatureFindRelatedAccountsRelatedAccount' examples: OzoneSignatureFindRelatedAccountsResponse200Example: $ref: '#/components/examples/OzoneSignatureFindRelatedAccountsResponse200Example' '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.signature.searchAccounts: get: operationId: ozoneSignatureSearchAccounts summary: Bluesky Search for accounts that match one or more threat signature values. 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.* Search for accounts that match one or more threat signature values.' tags: - Ozone Signatures x-microcks-operation: delay: 100 dispatcher: FALLBACK dispatcherRules: '' security: - Bearer: [] parameters: - name: values in: query required: true schema: type: array items: type: string example: - example-values - name: cursor in: query required: false schema: type: string example: eyJsYXN0SWQiOiIxMjM0NTYifQ - name: limit in: query required: false schema: type: integer minimum: 1 maximum: 100 default: 50 example: 50 responses: '200': description: OK content: application/json: schema: type: object required: - accounts properties: cursor: type: string accounts: type: array items: $ref: '#/components/schemas/ComAtprotoAdminDefsAccountView' examples: OzoneSignatureSearchAccountsResponse200Example: $ref: '#/components/examples/OzoneSignatureSearchAccountsResponse200Example' '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 components: examples: OzoneSignatureFindCorrelationResponse200Example: summary: Successful response for ozoneSignatureFindCorrelation value: details: - property: example-property value: example-value OzoneSignatureFindRelatedAccountsResponse200Example: summary: Successful response for ozoneSignatureFindRelatedAccounts value: accounts: - account: did: did:plc:example123abc handle: user.bsky.social indexedAt: '2024-01-15T12:00:00.000Z' email: user@example.com relatedRecords: [] invitedBy: {} invites: [] invitesDisabled: true similarities: - property: {} value: {} cursor: eyJsYXN0SWQiOiIxMjM0NTYifQ OzoneSignatureSearchAccountsResponse200Example: summary: Successful response for ozoneSignatureSearchAccounts value: accounts: - did: did:plc:example123abc handle: user.bsky.social indexedAt: '2024-01-15T12:00:00.000Z' email: user@example.com relatedRecords: [] invitedBy: code: example-code available: 50 disabled: true forAccount: example-forAccount createdBy: example-createdBy createdAt: '2024-01-15T12:00:00.000Z' uses: [] invites: - code: {} available: {} disabled: {} forAccount: {} createdBy: {} createdAt: {} uses: {} invitesDisabled: true cursor: eyJsYXN0SWQiOiIxMjM0NTYifQ schemas: ComAtprotoAdminDefsAccountView: type: object required: - did - handle - indexedAt properties: did: type: string format: did handle: type: string format: handle email: type: string relatedRecords: type: array items: {} indexedAt: type: string format: date-time invitedBy: $ref: '#/components/schemas/ComAtprotoServerDefsInviteCode' invites: type: array items: $ref: '#/components/schemas/ComAtprotoServerDefsInviteCode' invitesDisabled: type: boolean emailConfirmedAt: type: string format: date-time inviteNote: type: string deactivatedAt: type: string format: date-time threatSignatures: type: array items: $ref: '#/components/schemas/ComAtprotoAdminDefsThreatSignature' ComAtprotoAdminDefsThreatSignature: type: object required: - property - value properties: property: type: string value: type: string ToolsOzoneSignatureDefsSigDetail: type: object required: - property - value properties: property: type: string value: type: string ToolsOzoneSignatureFindRelatedAccountsRelatedAccount: type: object required: - account properties: account: $ref: '#/components/schemas/ComAtprotoAdminDefsAccountView' similarities: type: array items: $ref: '#/components/schemas/ToolsOzoneSignatureDefsSigDetail' ComAtprotoServerDefsInviteCodeUse: type: object required: - usedBy - usedAt properties: usedBy: type: string format: did usedAt: type: string format: date-time ComAtprotoServerDefsInviteCode: type: object required: - code - available - disabled - forAccount - createdBy - createdAt - uses properties: code: type: string available: type: integer disabled: type: boolean forAccount: type: string createdBy: type: string createdAt: type: string format: date-time uses: type: array items: $ref: '#/components/schemas/ComAtprotoServerDefsInviteCodeUse' securitySchemes: Bearer: type: http scheme: bearer