{
"id": "app.chronosky.schedule.listPosts",
"defs": {
"main": {
"type": "query",
"output": {
"schema": {
"type": "object",
"required": [
"posts",
"pagination"
],
"properties": {
"posts": {
"type": "array",
"items": {
"ref": "#scheduledPost",
"type": "ref"
}
},
"pagination": {
"ref": "#pagination",
"type": "ref"
}
}
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number (1-indexed)."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Number of parent posts per page. Thread posts always include all children regardless of limit (e.g., limit=100 returns up to 100 parent posts plus all their children)."
},
"status": {
"enum": [
"PENDING",
"EXECUTING",
"COMPLETED",
"FAILED",
"CANCELLED"
],
"type": "string",
"maxLength": 20,
"description": "Filter by post status."
}
}
},
"description": "List scheduled posts for the authenticated user with pagination and filtering."
},
"pagination": {
"type": "object",
"required": [
"page",
"limit",
"total",
"totalPages"
],
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Current page number."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Posts per page."
},
"total": {
"type": "integer",
"minimum": 0,
"description": "Total number of posts."
},
"totalPages": {
"type": "integer",
"minimum": 0,
"description": "Total number of pages."
}
},
"description": "Pagination information."
},
"scheduledPost": {
"type": "object",
"required": [
"id",
"userId",
"text",
"scheduledAt",
"status",
"createdAt",
"updatedAt",
"retryCount",
"langs"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100,
"description": "Post ID."
},
"text": {
"type": "string",
"maxLength": 3000,
"description": "Post content text (app.bsky.feed.post#text). May be empty if embeds are present.",
"maxGraphemes": 300
},
"atUri": {
"type": "string",
"maxLength": 500,
"description": "AT Protocol post URI (at://did:plc:.../app.bsky.feed.post/...). Present after successful execution."
},
"embed": {
"refs": [
"app.bsky.embed.images",
"app.bsky.embed.external",
"app.bsky.embed.record",
"app.bsky.embed.video",
"app.bsky.embed.recordWithMedia"
],
"type": "union",
"description": "Embedded content such as images, external links, or quoted posts (app.bsky.embed.*)."
},
"langs": {
"type": "array",
"items": {
"type": "string",
"format": "language"
},
"maxLength": 3,
"description": "Language codes for post content (app.bsky.feed.post#langs). ISO 639-1 or 639-3 codes."
},
"atRkey": {
"type": "string",
"maxLength": 100,
"description": "AT Protocol record key. Present after successful execution."
},
"facets": {
"type": "array",
"items": {
"ref": "app.bsky.richtext.facet",
"type": "ref"
},
"description": "Rich text facets for mentions, links, and hashtags (app.bsky.richtext.facet)."
},
"labels": {
"ref": "com.atproto.label.defs#selfLabels",
"type": "ref",
"description": "Self-applied content labels for content warnings (AT Protocol standard)."
},
"status": {
"enum": [
"PENDING",
"EXECUTING",
"COMPLETED",
"FAILED",
"CANCELLED"
],
"type": "string",
"maxLength": 20,
"description": "Post status."
},
"userId": {
"type": "string",
"maxLength": 200,
"description": "User ID who created this post."
},
"children": {
"type": "array",
"items": {
"ref": "#scheduledPost",
"type": "ref"
},
"description": "Child posts in thread. Only present for parent posts with children."
},
"errorMsg": {
"type": "string",
"maxLength": 2000,
"description": "Error message if execution failed. Present only when status is FAILED."
},
"createdAt": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Post creation datetime (ISO 8601)."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Post last update datetime (ISO 8601)."
},
"executedAt": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Execution completion datetime (ISO 8601). Present only when status is COMPLETED or FAILED."
},
"retryCount": {
"type": "integer",
"minimum": 0,
"description": "Number of execution retry attempts."
},
"postgateCid": {
"type": "string",
"maxLength": 100,
"description": "CID for postgate record. Present after successful execution with postgate settings."
},
"postgateUri": {
"type": "string",
"maxLength": 500,
"description": "AT Protocol URI for postgate record. Present after successful execution with postgate settings."
},
"scheduledAt": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Scheduled publication datetime (ISO 8601)."
},
"threadDepth": {
"type": "integer",
"minimum": 0,
"description": "Thread depth level (0 for root post, 1 for direct reply, etc.)."
},
"parentPostId": {
"type": "string",
"maxLength": 100,
"description": "Parent post ID for thread posts. Null for root posts."
},
"threadgateCid": {
"type": "string",
"maxLength": 100,
"description": "CID for threadgate record. Present after successful execution with threadgate rules."
},
"threadgateUri": {
"type": "string",
"maxLength": 500,
"description": "AT Protocol URI for threadgate record. Present after successful execution with threadgate rules."
},
"threadPosition": {
"type": "integer",
"minimum": 0,
"description": "Position in thread (0-indexed). 0 for parent post, 1+ for children."
},
"threadgateRules": {
"type": "array",
"items": {
"refs": [
"app.bsky.feed.threadgate#mentionRule",
"app.bsky.feed.threadgate#followerRule",
"app.bsky.feed.threadgate#followingRule",
"app.bsky.feed.threadgate#listRule"
],
"type": "union"
},
"maxLength": 5,
"description": "Reply restriction rules (app.bsky.feed.threadgate). Defines who can reply to this post."
},
"postgateDisableEmbedding": {
"type": "boolean",
"description": "Whether to disable quote posts and embeds for this post (app.bsky.feed.postgate)."
}
},
"description": "Scheduled post object with AT Protocol standard fields."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}