Package-level declarations

Types

Link copied to clipboard
@Serializable
data class AgendaItem(val time: String, val title: String, val description: String? = null)

议程项。

Link copied to clipboard
@Serializable
data class AndroidVersionCheckData(val needUpdate: Boolean, val forceUpdate: Boolean, val currentVersion: VersionInfo, val latestVersion: AndroidVersionData)

Android 版本检查结果数据。

Link copied to clipboard
@Serializable
data class AndroidVersionCheckRequest(val currentVersion: String, val currentVersionCode: Int)

Android 版本检查请求体。

Link copied to clipboard
@Serializable
data class AndroidVersionCheckResponse(val success: Boolean, val data: AndroidVersionCheckData, val requestId: String)

Android 版本检查响应包装。

Link copied to clipboard
@Serializable
data class AndroidVersionData(val version: String, val versionCode: Int, val description: String, val forceUpdate: Boolean, val downloadUrl: String, val updateTime: String, val minSupportedVersion: String, val changelog: List<String>)

Android 应用版本数据。

Link copied to clipboard
@Serializable
data class AndroidVersionResponse(val success: Boolean, val data: AndroidVersionData, val requestId: String)

Android 版本信息响应包装。

Link copied to clipboard
@Serializable
data class ApiResponse<T>(val success: Boolean, val data: T, val requestId: String)

通用 API 响应包装(顶层 success/data/requestId)。

Link copied to clipboard
object BooleanAsIntSerializer : KSerializer<Boolean>

vds-docs 服务端在多个端点用 0/1 整数或 true/false 布尔表示布尔值。 解码时两者都接受:0=false,1=true,true=true,false=false。 序列化时统一输出整数(true=1,false=0)。

Link copied to clipboard
@Serializable
data class CharacterInfo(val id: String, val name: String, val species: String? = null, val gender: String? = null, val worldview: String? = null, val images: List<String>? = null, val birthday: String? = null, val createdAt: String? = null, val updatedAt: String? = null)

角色信息。

Link copied to clipboard
@Serializable
data class CityInfo(val province: String, val city: String, val count: Int)

城市信息。

Link copied to clipboard
@Serializable
data class ContactRequestState(val buttonState: String? = null, val canRequest: Boolean? = null, val reasonCode: String? = null, val message: String? = null, val requiresAuth: Boolean? = null, val buttonText: String? = null)

用户扩列按钮状态(contact_request 嵌套对象)。

Link copied to clipboard
@Serializable
data class CoOrganizer(val userId: Int? = null, val username: String? = null, val nickname: String? = null, val avatar: String? = null)

协办者。

Link copied to clipboard
@Serializable
data class CustomLink(val url: String, val name: String)

自定义链接(socialLinks/contactInfo 中 custom 数组元素)。

Link copied to clipboard
@Serializable
data class DataSource(val sourceCode: String? = null, val sourceUrl: String? = null, val name: String? = null, val logoUrl: String? = null)

数据来源。

Link copied to clipboard
@Serializable
data class GatheringBadge(val code: String? = null, val title: String? = null)

聚会徽章。

Link copied to clipboard
@Serializable
data class GatheringDetailData(val id: Int, val title: String, val description: String? = null, val eventDate: String? = null, val endDate: String? = null, val eventTime: String? = null, val endTime: String? = null, val type: String? = null, val typeClass: String? = null, val typeDisplay: String? = null, val status: String? = null, val locationPublic: String? = null, val locationCity: String? = null, val locationLat: Double? = null, val locationLng: Double? = null, val logoUrl: String? = null, val bannerUrl: String? = null, val organizerId: Int? = null, val organizerUsername: String? = null, val organizerNickname: String? = null, val organizerAvatar: String? = null, val coOrganizers: List<CoOrganizer>? = null, val agenda: List<AgendaItem>? = null, val tags: List<String>? = null, val sourceCount: Int? = null, val dataSources: List<DataSource>? = null, val badges: List<GatheringBadge>? = null, val isFurtvCoopDriven: Boolean? = null, val interestedCount: Int? = null, val isInterested: Boolean? = null, val goingFriendsCount: Int? = null, val registrationStats: GatheringRegistrationStats? = null, val viewCount: Int? = null, val locationDistrict: String? = null, val locationDetail: String? = null, val feeType: String? = null, val feeAmount: String? = null, val feeDescription: String? = null, val registrationDeadline: String? = null, val registrationOpenDays: Int? = null, val requiresApproval: Boolean? = null, val autoApproveLimit: Int? = null, val groupChatLink: String? = null, val groupChatType: String? = null, val cancellationReason: String? = null, val requirements: String? = null, val notes: String? = null, val isRecurring: Boolean? = null, val seriesId: Int? = null, val parentGatheringId: Int? = null, val recurrenceRule: String? = null, val recurrenceConfig: String? = null, val destinationCount: Int? = null, val interestedFriends: List<String>? = null, val goingFriends: List<String>? = null, val organizerSpecies: String? = null, val maxParticipants: Int? = null, val currentParticipants: Int? = null, val minParticipants: Int? = null, val contentSource: String? = null, val externalSource: String? = null, val externalId: String? = null, val sourceUrl: String? = null, val rawPayload: JsonObject? = null, val syncSkipSourceUpdates: Int? = null, val syncSkipReason: String? = null, val syncSkipUpdatedAt: String? = null, val syncSkipUpdatedBy: String? = null, val organizerType: String? = null, val registrationStatus: String? = null, val createdAt: String? = null, val updatedAt: String? = null, val isFurtvCoopBadgeEnabled: Boolean? = null)

聚会详情数据。

Link copied to clipboard
@Serializable
data class GatheringDetailResponse(val success: Boolean, val gathering: GatheringDetailData, val requestId: String)

聚会详情响应。

Link copied to clipboard
@Serializable
data class GatheringMonthlyData(val year: Int, val month: Int, val gatherings: List<GatheringMonthlyItem>, val total: Int)

聚会月历数据。

Link copied to clipboard
@Serializable
data class GatheringMonthlyDistanceData(val year: Int, val month: Int, val distances: List<GatheringMonthlyDistanceItem>)

聚会月历距离数据。

Link copied to clipboard
@Serializable
data class GatheringMonthlyDistanceItem(val id: Int, val distanceMeters: Double? = null)

聚会月历距离项。

Link copied to clipboard
@Serializable
data class GatheringMonthlyDistanceResponse(val success: Boolean, val data: GatheringMonthlyDistanceData, val requestId: String)

聚会月历距离响应。

Link copied to clipboard
@Serializable
data class GatheringMonthlyItem(val id: Int, val title: String, val description: String? = null, val type: String? = null, val typeClass: String? = null, val contentSource: String? = null, val day: String? = null, val weekday: String? = null, val time: String? = null, val endTime: String? = null, val location: String? = null, val locationPublic: String? = null, val participants: String? = null, val logo: String? = null, val status: String? = null, val badges: List<GatheringBadge>? = null, val isFurtvCoopDriven: Boolean? = null, val sourceCount: Int? = null, val initialSource: String? = null, val dataSources: List<DataSource>? = null, val organizer: String? = null, val organizerAvatar: String? = null, val feeType: String? = null, val feeAmount: String? = null, val registrationStatus: String? = null, val requiresApproval: Boolean? = null)

聚会月历项。

Link copied to clipboard
@Serializable
data class GatheringMonthlyParams(val year: Int, val month: Int)

聚会月历参数。

Link copied to clipboard
@Serializable
data class GatheringMonthlyResponse(val success: Boolean, val data: GatheringMonthlyData, val requestId: String)

聚会月历响应。

Link copied to clipboard
@Serializable
data class GatheringNearbyItem(val id: Int, val title: String, val eventDate: String? = null, val endDate: String? = null, val address: String? = null, val city: String? = null, val lat: Double? = null, val lng: Double? = null, val badges: List<GatheringBadge>? = null, val isFurtvCoopDriven: Boolean? = null, val eventTime: String? = null, val endClockTime: String? = null, val startTime: String? = null, val endTime: String? = null, val timeZone: String? = null)

聚会附近项。

Link copied to clipboard
@Serializable
data class GatheringNearbyModeData(val gatherings: List<GatheringNearbyModeItem>, val intentGatheringIds: List<Int>)

聚会附近模式数据。

Link copied to clipboard
@Serializable
data class GatheringNearbyModeItem(val id: Int, val title: String, val eventDate: String? = null, val endDate: String? = null, val eventTime: String? = null, val endClockTime: String? = null, val startTime: String? = null, val endTime: String? = null, val timeZone: String? = null, val avatarUrl: String? = null, val currentParticipants: Int? = null, val maxParticipants: Int? = null, val address: String? = null, val city: String? = null, val lat: Double? = null, val lng: Double? = null, val badges: List<GatheringBadge>? = null, val isFurtvCoopDriven: Boolean? = null)

聚会附近模式项。

Link copied to clipboard
@Serializable
data class GatheringNearbyModeResponse(val success: Boolean, val data: GatheringNearbyModeData, val requestId: String)

聚会附近模式响应。

Link copied to clipboard
@Serializable
data class GatheringNearbyResponse(val success: Boolean, val data: List<GatheringNearbyItem>, val requestId: String)

聚会附近响应。

Link copied to clipboard
@Serializable
data class GatheringRegistrationsParams(val gatheringId: String)

聚会报名列表参数。

Link copied to clipboard
@Serializable
data class GatheringRegistrationsResponse(val success: Boolean, val registrations: List<List<RegistrationItem>>, val requestId: String)

聚会报名列表响应。

Link copied to clipboard
@Serializable
data class GatheringRegistrationStats(val totalRegistrations: Int? = null, val approvedCount: Int? = null, val pendingCount: Int? = null)

聚会报名统计。

Link copied to clipboard
@Serializable
data class GatheringYearStatsResponse(val success: Boolean, val total: Int, val requestId: String)

聚会年度统计响应。

Link copied to clipboard
@Serializable
data class GeoLocation(val lat: Double, val lng: Double)

地理位置坐标。

Link copied to clipboard
@Serializable
data class HealthResponse(val success: Boolean, val message: String, val timestamp: String, val requestId: String)

健康检查接口响应。

Link copied to clipboard
@Serializable
data class HelloWorldResponse(val success: Boolean, val message: String, val verify: String, val appId: String, val requestId: String)

HelloWorld 接口响应,无 data 包装。

Link copied to clipboard
@Serializable
data class ImageResource(val url: String, val width: Int? = null, val height: Int? = null)

图片资源。

Link copied to clipboard
@Serializable
data class LikeStatusResponse(val success: Boolean, val likeCount: Long? = null, val isLiked: Boolean? = null, val daysUntilCanLike: Int? = null, val requestId: String? = null)

用户点赞状态响应。

Link copied to clipboard
object Models

REFACTORED in v0.5.0 原 1700 行单文件 Models.kt 已按领域子系统拆分为以下独立文件:

Link copied to clipboard

可变的 SDK 配置构建器,作为 fursuitTvSdk { ... } DSL 的内部 builder。

Link copied to clipboard
@Serializable
data class OAuthConfig(val callbackHost: String = DEFAULT_CALLBACK_HOST, val callbackPort: Int = DEFAULT_CALLBACK_PORT, val callbackPath: String = DEFAULT_CALLBACK_PATH, val timeoutSeconds: Int = DEFAULT_TIMEOUT_SECONDS)

OAuth 2.0 授权码流程 + 回调服务器配置。

Link copied to clipboard
@Serializable
data class OAuthTokenData(val accessToken: String, val expiresIn: Int, val tokenType: String, val scope: String? = null, val refreshToken: String? = null, val requestId: String? = null)

OAuth 令牌数据。

Link copied to clipboard
@Serializable
data class PaginatedResponse<T>(val items: List<T>, val nextCursor: String? = null, val hasMore: Boolean = false)

分页响应数据。

Link copied to clipboard
@Serializable
data class PaginationParams(val cursor: String? = null, val limit: Int? = null)

DEAD CODE / DEPRECATED in v0.5.0 分页请求参数。该类在 SDK 全局未被任何 API 端点使用,保留仅作向后兼容,计划于 v0.6.0 移除。

Link copied to clipboard
@Serializable
data class PopularLocationsResponse(val success: Boolean, val popularProvinces: List<ProvinceInfo>, val popularCities: List<CityInfo>, val requestId: String)

热门地点响应。

Link copied to clipboard
@Serializable
data class PopularResponse(val success: Boolean, val users: List<PopularUser>, val requestId: String)

热门用户响应。

Link copied to clipboard
@Serializable
data class PopularUser(val id: Int, val username: String, val nickname: String? = null, val avatarUrl: String? = null, val fursuitSpecies: String? = null, val fursuitMaker: String? = null, val showcasePortrait: String? = null, val introduction: String? = null, val viewCount: Int? = null, val isVerified: Boolean? = null, val likeCount: Int? = null, val createdAt: String? = null, val destination: String? = null, val destinationExpiresAt: String? = null, val popularityScore: String? = null)

热门用户。

Link copied to clipboard
@Serializable
data class ProvinceInfo(val province: String, val count: Int)

省份信息。

Link copied to clipboard
@Serializable
data class RandomDebugInfo(val isPersonalized: Boolean? = null, val cacheHitCount: Int? = null, val responseMs: Int? = null)

随机推荐调试信息。

Link copied to clipboard
@Serializable
data class RandomFursuit(val id: Int, val username: String, val nickname: String? = null, val avatarUrl: String? = null, val fursuitSpecies: String? = null, val fursuitMaker: String? = null, val destination: String? = null, val introduction: String? = null, val viewCount: Int? = null, val isVerified: Boolean? = null, val fursuitBirthday: String? = null, val showcasePortrait: String? = null, val showcaseLandscape: String? = null, val showcaseOther: String? = null, val destinations: List<String>? = null, val destinationExpiresAt: String? = null, val privacySettings: UserProfilePrivacySettings? = null, val hasAllImages: Boolean? = null, val contactInfo: UserProfileContactInfo? = null, val contactRequest: ContactRequestState? = null, val hasCompletedContact: Boolean? = null, val todayStatus: TodayStatus? = null)

单个随机推荐 fursuit。

Link copied to clipboard
@Serializable
data class RandomFursuitParams(val count: Int? = null)

随机推荐参数。

Link copied to clipboard
@Serializable
data class RandomFursuitResponse(val success: Boolean, val fursuit: RandomFursuit? = null, val fursuits: List<RandomFursuit>? = null, val count: Int? = null, val requestedCount: Int? = null, val debugInfo: RandomDebugInfo? = null, val requestId: String)

随机推荐响应。

Link copied to clipboard
@Serializable
data class RegistrationItem(val id: Int, val status: String? = null, val registrationTime: String? = null, val checkedIn: Int? = null, val userId: Int, val username: String, val nickname: String? = null, val avatarUrl: String? = null, val fursuitSpecies: String? = null)

报名项。

Link copied to clipboard
@Serializable
data class RelationshipInfo(val id: Int, val relationshipType: String, val createdAt: String? = null, val partnerId: Int, val partnerUsername: String, val partnerNickname: String? = null, val partnerAvatar: String? = null, val partnerSpecies: String? = null)

关系信息。

Link copied to clipboard
@Serializable
data class RequestLogDetailResponse(val success: Boolean = true, val log: RequestLogItem? = null, val requestId: String? = null)

平台请求日志详情响应(官方《RequestID查询.md》)。

Link copied to clipboard
@Serializable
data class RequestLogItem(val requestId: String? = null, val method: String? = null, val path: String? = null, val statusCode: Int? = null, val ip: String? = null, val userAgent: String? = null, val createdAt: String? = null, val responseTimeMs: Long? = null)

平台请求日志项。

Link copied to clipboard
@Serializable
data class RequestLogsSearchResponse(val success: Boolean = true, val logs: List<RequestLogItem> = emptyList(), val requestId: String? = null)

平台请求日志搜索响应(官方《RequestID查询.md》)。

Link copied to clipboard
@Serializable
data class SchoolDetail(val id: Int, val name: String, val shortName: String? = null, val location: String? = null, val type: String? = null, val logoUrl: String? = null, val studentCount: Int? = null)

学校详情。

Link copied to clipboard
@Serializable
data class SchoolDetailResponse(val school: SchoolDetail, val requestId: String)

学校详情响应。

Link copied to clipboard
@Serializable
data class SchoolInfo(val id: Int, val name: String, val shortName: String? = null, val location: String? = null, val type: String? = null, val logoUrl: String? = null, val studentCount: Int? = null)

学校基本信息。

Link copied to clipboard
@Serializable
data class SchoolSearchParams(val query: String)

学校搜索参数。

Link copied to clipboard
@Serializable
data class SchoolSearchResponse(val schools: List<SchoolInfo>, val requestId: String)

学校搜索响应。

Link copied to clipboard
class SdkConfig(val baseUrl: String = DEFAULT_BASE_URL, val clientId: String? = null, val clientSecret: String? = null, val requestTimeout: Long = DEFAULT_REQUEST_TIMEOUT, val connectTimeout: Long = DEFAULT_CONNECT_TIMEOUT, val socketTimeout: Long = DEFAULT_SOCKET_TIMEOUT, val logLevel: SdkLogLevel = SdkLogLevel.INFO, val enableRetry: Boolean = true, val maxRetries: Int = DEFAULT_MAX_RETRIES, val retryInterval: Long = DEFAULT_RETRY_INTERVAL)

Fursuit.TV SDK 不可变配置。

Link copied to clipboard

SDK 日志级别枚举,控制 HTTP 请求日志输出详细程度。

Link copied to clipboard
@Serializable
data class SearchPagination(val page: Int? = null, val limit: Int? = null, val total: Int? = null, val totalPages: Int? = null, val nextCursor: String? = null, val totalIsEstimate: Boolean? = null)

搜索分页信息。

Link copied to clipboard
@Serializable
data class SearchParams(val query: String, val type: String? = null, val cursor: String? = null, val limit: Int? = null, val page: Int? = null)

搜索参数。

Link copied to clipboard
@Serializable
data class SearchResponse(val success: Boolean, val users: List<SearchUser>, val searchType: String? = null, val searchKeywords: List<String>? = null, val pagination: SearchPagination? = null, val hasMore: Boolean = false, val total: Int? = null, val nextCursor: String? = null, val totalIsEstimate: Boolean? = null, val requestId: String)

搜索响应。

Link copied to clipboard
@Serializable
data class SearchSuggestionsResponse(val success: Boolean, val suggestions: List<String>, val requestId: String)

搜索建议响应。

Link copied to clipboard
@Serializable
data class SearchUser(val id: Int? = null, val username: String? = null, val nickname: String? = null, val avatarUrl: String? = null, val showcasePortrait: String? = null, val fursuitSpecies: String? = null, val fursuitMaker: String? = null, val location: String? = null, val destinations: List<String>? = null, val destination: String? = null, val destinationExpiresAt: String? = null, val introduction: String? = null, val viewCount: Int? = null, val isVerified: Boolean? = null, val createdAt: String? = null, val likeCount: Int? = null, val isLiked: Boolean? = null)

搜索结果中的用户。

Link copied to clipboard
@Serializable
data class SocialBadge(val userBadgeId: Int, val badgeId: Int, val title: String, val glbUrl: String? = null, val awardedAt: String, val expiresAt: String? = null, val detailText: String? = null)

社交徽章。

Link copied to clipboard
@Serializable
data class SocialBadgeDetail(val userBadgeId: Int, val badgeId: Int, val title: String, val glbUrl: String? = null, val awardedAt: String, val expiresAt: String? = null, val detailText: String? = null)

社交徽章详情。

Link copied to clipboard
@Serializable
data class SocialBadgeDetailResponse(val success: Boolean, val user: SocialBadgeUser? = null, val isOwner: Boolean? = null, val badge: SocialBadgeDetail, val requestId: String)

社交徽章详情响应。

Link copied to clipboard
@Serializable
data class SocialBadgesResponse(val success: Boolean, val user: SocialBadgeUser? = null, val isOwner: Boolean? = null, val totalCount: Int? = null, val badges: List<SocialBadge>, val requestId: String)

用户社交徽章列表响应。

Link copied to clipboard
@Serializable
data class SocialBadgeUser(val id: Int, val username: String, val nickname: String? = null)

社交徽章用户摘要。

Link copied to clipboard
@Serializable
data class SpeciesInfo(val species: String, val count: Int)

物种信息。

Link copied to clipboard
@Serializable
data class SpeciesListResponse(val success: Boolean, val species: List<SpeciesInfo>, val total: Int, val requestId: String)

物种列表响应。

Link copied to clipboard
@Serializable
data class SpeciesSearchResponse(val success: Boolean, val species: String, val users: List<SpeciesSearchUser>, val pagination: SearchPagination? = null, val hasMore: Boolean = false, val total: Int? = null, val nextCursor: String? = null, val totalIsEstimate: Boolean? = null, val requestId: String)

物种搜索响应。

Link copied to clipboard
@Serializable
data class SpeciesSearchUser(val id: Int? = null, val username: String? = null, val nickname: String? = null, val avatarUrl: String? = null, val showcasePortrait: String? = null, val fursuitSpecies: String? = null, val fursuitMaker: String? = null, val introduction: String? = null, val viewCount: Int? = null, val isVerified: Boolean? = null, val createdAt: String? = null, val likeCount: Int? = null, val isLiked: Boolean? = null)

物种搜索用户。

Link copied to clipboard
@Serializable
data class StoreProduct(val id: Int, val name: String, val price: String? = null, val imageUrl: String? = null, val externalUrl: String? = null, val sortOrder: Int? = null, val createdAt: String? = null, val updatedAt: String? = null)

商店商品。

Link copied to clipboard
@Serializable
data class StoreProductsResponse(val success: Boolean, val user: StoreUser? = null, val isOwner: Boolean? = null, val isMerchantVerified: Boolean? = null, val products: List<StoreProduct>, val requestId: String)

商店商品响应。

Link copied to clipboard
@Serializable
data class StoreUser(val id: Int, val username: String, val nickname: String? = null)

商店用户摘要。

Link copied to clipboard
@Serializable
data class ThemePack(val id: String, val zipUrl: String, val metadata: ThemePackMetadata? = null)

主题包信息。

Link copied to clipboard
@Serializable
data class ThemePackAuthor(val username: String? = null)

主题包作者。

Link copied to clipboard
@Serializable
data class ThemePackHomeBackground(val opacity: Double? = null, val blur: Int? = null)

主题包首页背景设置。

Link copied to clipboard
@Serializable
data class ThemePackMetadata(val name: String? = null, val author: ThemePackAuthor? = null, val intro: String? = null, val version: String? = null, val themeCss: String? = null, val homeBackground: ThemePackHomeBackground? = null, val preview: ThemePackPreview? = null)

主题包元信息。

Link copied to clipboard
@Serializable
data class ThemePackPreview(val surface0: String? = null, val surface1: String? = null, val accent: String? = null, val accentRgb: String? = null, val contrastRgb: String? = null)

主题包预览色板。

Link copied to clipboard
@Serializable
data class ThemePacksManifestData(val updatedAt: String, val themes: List<ThemePack>)

主题包清单数据。

Link copied to clipboard
@Serializable
data class ThemePacksManifestResponse(val success: Boolean, val data: ThemePacksManifestData, val requestId: String)

主题包清单响应包装。

Link copied to clipboard
@Serializable
data class TimeRange(val start: String, val end: String)

时间范围(ISO 8601 格式)。

Link copied to clipboard
@Serializable
data class TodayStatus(val hasToday: Boolean? = null)

随机推荐用户今日状态。

Link copied to clipboard
@Serializable
data class TokenData(val accessToken: String, val apiKey: String, val expiresIn: Int, val tokenType: String, val appId: String? = null, val grants: List<String>? = null, val refresh: TokenRefreshInfo? = null, val requestId: String? = null)

令牌数据,包含访问令牌信息(签名交换接口返回)。

Link copied to clipboard
@Serializable
data class TokenExchangeRequest(val clientId: String, val clientSecret: String)

签名交换请求,用于获取 apiKey/accessToken。

Link copied to clipboard
@Serializable
sealed class TokenInfo

令牌信息,SDK 内部使用的令牌存储结构(sealed class)。

Link copied to clipboard
@Serializable
data class TokenRefreshInfo(val mode: String, val refreshWindowSeconds: Int, val previousTokenSecondsRemaining: Int)

令牌刷新信息。

Link copied to clipboard
@Serializable
data class UserCharactersResponse(val success: Boolean, val characters: List<CharacterInfo>, val requestId: String)

用户角色列表响应。

Link copied to clipboard
@Serializable
data class UserDestination(val id: Int, val name: String, val startDate: String? = null, val endDate: String? = null, val gatheringId: Int? = null)

用户目的地信息。

Link copied to clipboard
@Serializable
data class UserIdData(val id: Int, val username: String, val nickname: String? = null, val avatarUrl: String? = null, val fursuitSpecies: String? = null, val location: String? = null)

用户 ID 数据。

Link copied to clipboard
@Serializable
data class UserIdResponse(val success: Boolean, val user: UserIdData, val requestId: String)

用户 ID 查询响应。

Link copied to clipboard
@Serializable
data class UserInfoData(val sub: String, val nickname: String? = null, val avatarUrl: String? = null, val email: String? = null, val name: String? = null, val username: String? = null, val updatedAt: Long? = null, val phoneNumber: String? = null, val iss: String? = null, val aud: Long? = null, val requestId: String? = null)

用户信息数据。

Link copied to clipboard
@Serializable
data class UserProfile(val id: Int, val username: String, val nickname: String? = null, val avatarUrl: String? = null, val fursuitSpecies: String? = null, val fursuitBirthday: String? = null, val fursuitMaker: String? = null, val showcasePortrait: String? = null, val showcaseLandscape: String? = null, val showcaseOther: String? = null, val introduction: String? = null, val interests: List<String>? = null, val location: String? = null, val socialLinks: UserProfileSocialLinks? = null, val contactInfo: UserProfileContactInfo? = null, val privacySettings: UserProfilePrivacySettings? = null, val characters: List<UserProfileCharacter>? = null, val otherVerifiedTypes: List<String>? = null, val viewCount: Int? = null, val isVerified: Boolean? = null, val createdAt: String? = null, val destinations: List<UserDestination>? = null, val destination: String? = null, val destinationExpiresAt: String? = null, val fursuitImages: List<String>? = null, val pageBanner: String? = null, val platformLevel: Int? = null, val likeCount: Int? = null, val contactRequest: ContactRequestState? = null, val hasCompletedContact: Boolean? = null, val profileFlags: List<String>? = null, val contactReputationLevel: Int? = null)

用户资料公开信息。

Link copied to clipboard
@Serializable
data class UserProfileCharacter(val id: String, val name: String, val species: String? = null, val gender: String? = null, val worldview: String? = null)

用户角色信息。

Link copied to clipboard
data class UserProfileContactInfo(val entries: Map<String, String> = emptyMap(), val custom: List<CustomLink> = emptyList())

用户联系方式。同 UserProfileSocialLinks 模式。

Link copied to clipboard

UserProfileContactInfo 的 KSerializer。

Link copied to clipboard
@Serializable
data class UserProfilePrivacySettings(val showEmail: Boolean? = null, val allowContact: Boolean? = null, val showLocation: Boolean? = null, val allowMessages: Boolean? = null, val allowReturnImages: Boolean? = null, val profilePublic: Boolean? = null, val showVisitorDetails: Boolean? = null, val allowMapShareInvites: Boolean? = null, val contactRequestPolicy: String? = null, val contactRequestMinLevel: Int? = null, val contactRequestBlockFlaggedUsers: Boolean? = null)

用户资料隐私设置。

Link copied to clipboard

UserProfilePrivacySettings 的 KSerializer:兼容 camelCase 与 snake_case。

Link copied to clipboard
@Serializable
data class UserProfileResponse(val success: Boolean, val user: UserProfile, val requestId: String)

用户资料公开信息响应。

Link copied to clipboard
data class UserProfileSocialLinks(val entries: Map<String, String> = emptyMap(), val custom: List<CustomLink> = emptyList())

用户社交链接。带自定义 KSerializer:反序列化时把 server JSON 拆为 entries (string-valued) + custom (CustomLink 列表)。

Link copied to clipboard

UserProfileSocialLinks 的 KSerializer。

Link copied to clipboard
@Serializable
data class UserRelationshipsResponse(val relationships: List<RelationshipInfo>, val requestId: String)

用户关系公开列表响应。

Link copied to clipboard
@Serializable
data class UserSchoolInfo(val userSchoolId: Int? = null, val className: String? = null, val enrollmentYear: Int? = null, val graduationYear: Int? = null, val isCurrent: Int? = null, val isPublic: Int? = null, val schoolId: Int, val schoolName: String, val shortName: String? = null, val location: String? = null, val type: String? = null, val logoUrl: String? = null, val studentCount: Int? = null)

用户学校关联信息。

Link copied to clipboard
@Serializable
data class UserSchoolsResponse(val schools: List<UserSchoolInfo>, val requestId: String)

用户学校信息响应。

Link copied to clipboard
@Serializable
data class UserVisitorsResponse(val success: Boolean, val visitors: List<VisitorInfo>? = null, val isOwner: Boolean? = null, val message: String? = null, val totalViews: Long? = null, val totalLoginVisits: Long? = null, val totalLoginVisitors: Long? = null, val hasMore: Boolean? = null, val requestId: String? = null)

用户访客记录响应。

Link copied to clipboard
@Serializable
data class VersionInfo(val version: String, val versionCode: Int)

版本基本信息。

Link copied to clipboard
@Serializable
data class VisitorInfo(val visitId: Int, val visitorId: Int, val visitorUsername: String, val visitorNickname: String? = null, val visitorAvatar: String? = null, val createdAt: String)

访客信息。

Functions

Link copied to clipboard

将签名交换令牌数据转换为 TokenInfo.Platform。

将 OAuth 令牌数据转换为 TokenInfo.OAuth。