{
"id": "app.chronosky.plan.getUsage",
"defs": {
"main": {
"type": "query",
"output": {
"schema": {
"type": "object",
"required": [
"currentPlan",
"limits",
"usage"
],
"properties": {
"usage": {
"type": "object",
"required": [
"pendingPostsCount",
"monthlyPostsCount",
"monthlyPeriodStart",
"monthlyPeriodEnd",
"lastUpdated"
],
"properties": {
"lastUpdated": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Last time usage was updated (ISO 8601)"
},
"storageUsedMb": {
"type": "integer",
"description": "Storage used (MB)"
},
"monthlyPeriodEnd": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "End of current monthly period (ISO 8601)"
},
"monthlyPostsCount": {
"type": "integer",
"description": "Number of posts this month"
},
"pendingPostsCount": {
"type": "integer",
"description": "Current number of pending posts"
},
"monthlyPeriodStart": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Start of current monthly period (ISO 8601)"
},
"apiRequestsThisHour": {
"type": "integer",
"description": "API requests in current hour"
}
}
},
"limits": {
"type": "object",
"required": [
"monthlyPostsLimit",
"pendingPostsLimit",
"maxScheduleDays",
"scheduleIntervalMinutes",
"maxImagesPerPost",
"threadPostsLimit"
],
"properties": {
"threadPosts": {
"type": "boolean",
"description": "Whether thread posts are enabled"
},
"videoUpload": {
"type": "boolean",
"description": "Whether video uploads are enabled"
},
"maxImageSizeMb": {
"type": "integer",
"description": "Maximum image size (MB)"
},
"maxVideoSizeMb": {
"type": "integer",
"description": "Maximum video size (MB)"
},
"markdownSupport": {
"type": "boolean",
"description": "Whether markdown formatting is supported"
},
"maxScheduleDays": {
"type": "integer",
"description": "Maximum days in advance to schedule"
},
"maxImagesPerPost": {
"type": "integer",
"description": "Maximum images per post"
},
"threadPostsLimit": {
"type": "integer",
"description": "Maximum posts per thread"
},
"monthlyPostsLimit": {
"type": "integer",
"description": "Maximum posts per month"
},
"pendingPostsLimit": {
"type": "integer",
"description": "Maximum concurrent pending posts"
},
"scheduleIntervalMinutes": {
"type": "integer",
"description": "Minimum interval between scheduled posts (minutes)"
},
"videoProcessingMinutesMonthly": {
"type": "integer",
"description": "Monthly video processing minutes"
}
}
},
"currentPlan": {
"type": "object",
"required": [
"id",
"tier",
"name",
"displayName",
"isActive"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100,
"description": "Plan ID"
},
"name": {
"type": "string",
"maxLength": 200,
"description": "Internal plan name"
},
"tier": {
"type": "string",
"maxLength": 50,
"description": "Plan tier (FREE, BASIC, STANDARD, PREMIUM)"
},
"isActive": {
"type": "boolean",
"description": "Whether the plan is currently active"
},
"validUntil": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Plan expiration date (ISO 8601)"
},
"displayName": {
"type": "object",
"description": "Localized plan display names"
}
}
}
}
},
"encoding": "application/json"
},
"description": "Get the authenticated user's plan information and usage statistics"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}