XRPC API Reference
This document describes the ATProtoFans XRPC query endpoints.
com.atprotofans.validateSupporter
Validate if a DID is a supporter of another identity with attestations from a specific signer.
Query Parameters
| Parameter |
Type |
Required |
Description |
supporter |
string (DID) |
Yes |
DID of the supporter to validate |
subject |
string (DID) |
Yes |
DID of the subject (creator) being supported |
signer |
string (DID) |
Yes |
DID of the signer whose attestation must be valid |
Response
{
"valid": true,
"profile": {
"did": "did:plc:abc123",
"handle": "supporter.bsky.social",
"displayName": "Jane Supporter",
"supporterCount": 5
}
}
Fields
| Field |
Type |
Description |
valid |
boolean |
Whether the supporter relationship exists and the required attestation is valid |
profile |
HydratedProfile |
Hydrated profile of the supporter (optional, included when valid) |
Errors
| Error |
Description |
InvalidRequest |
Invalid DID format or missing required parameters |
ServiceUnavailable |
Validation service temporarily unavailable |
com.atprotofans.getSupporters
Get a paginated list of supporters for a subject.
Query Parameters
| Parameter |
Type |
Required |
Description |
subject |
string (DID) |
Yes |
DID of the creator |
limit |
integer |
No |
Maximum number of results (default: 50, max: 100) |
cursor |
string |
No |
Pagination cursor for fetching additional results |
Response
{
"supporters": [
{
"did": "did:plc:abc123",
"handle": "fan1.bsky.social",
"displayName": "Fan One",
"supporterCount": 3
},
{
"did": "did:plc:def456",
"handle": "fan2.bsky.social",
"displayName": "Fan Two",
"supporterCount": 0
}
],
"cursor": "50"
}
Fields
| Field |
Type |
Description |
supporters |
array |
List of supporter profiles (HydratedProfile) |
cursor |
string |
Pagination cursor for fetching the next page (optional, omitted on last page) |
Errors
| Error |
Description |
InvalidRequest |
Invalid DID format |
com.atprotofans.getProfile
Get profile information for a subject.
Query Parameters
| Parameter |
Type |
Required |
Description |
subject |
string (DID) |
Yes |
DID of the profile to fetch |
Response
Returns a com.atprotofans.hydratedProfile object.
{
"did": "did:plc:abc123",
"handle": "creator.bsky.social",
"displayName": "Jane Creator",
"description": "Making cool things!",
"acceptingSupporters": true,
"supporterCount": 42
}
Fields
| Field |
Type |
Description |
did |
string (DID) |
DID of the profile owner |
handle |
string |
Handle of the profile owner |
displayName |
string |
Display name |
description |
string |
Profile bio/description |
facets |
array |
Rich text facets for description annotations |
avatar |
blob |
Avatar image blob reference |
banner |
blob |
Banner image blob reference |
acceptingSupporters |
boolean |
Whether accepting new supporters |
supporterCount |
integer |
Number of supporters for this profile |
Errors
| Error |
Description |
InvalidRequest |
Invalid DID format |
ProfileNotFound |
No profile found for the given DID |