generated: '2026-09-28' method: derived generator: derive-data-model.py source: - openapi/_original/posteahora-api-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 23 entities_in_spec: 23 relationships: 16 entities: - name: Account fields: 8 - name: AccountMapping fields: 2 - name: AnalyticsResult fields: 3 - name: BlueskyOptions fields: 1 - name: CreatePostRequest fields: 13 - name: CreatePostResult fields: 3 - name: DiscordOptions fields: 1 - name: Error fields: 1 - name: Idea fields: 0 - name: IdeaInput fields: 6 - name: InstagramOptions fields: 11 description: Set postType "reel" (top level) for a Reel, "story" for a Story. - name: MastodonOptions fields: 4 - name: PinterestBoard fields: 4 - name: PinterestOptions fields: 7 description: boardId is REQUIRED and validated on create (400 without it). A Pin needs at least one image; 2–5 images make a carousel. - name: PlatformOptions fields: 9 description: Per-network settings, keyed by platform id. - name: PlatformResult fields: 6 - name: Post fields: 12 - name: TelegramOptions fields: 2 - name: ThreadsOptions fields: 8 - name: TikTokOptions fields: 12 - name: UpdatePostRequest fields: 11 description: Edit a draft or scheduled post. Only sent fields are touched. - name: Workspace fields: 5 - name: YouTubeOptions fields: 11 description: 'The video description is the post caption (platformCaptions.youtube, ≤5000 chars). The video title is the required `title` field. There is no "Shorts" flag — a vertical clip ≤3 min is auto-classified ' relationships: - from: AccountMapping to: Account type: belongs_to via: accountId - from: CreatePostRequest to: AccountMapping type: has_many via: accountMappings - from: CreatePostRequest to: Account type: belongs_to via: accountId - from: CreatePostRequest to: PlatformOptions type: has_one via: platformOptions - from: UpdatePostRequest to: PlatformOptions type: has_one via: platformOptions - from: CreatePostResult to: Post type: belongs_to via: postIds - from: Post to: PlatformResult type: has_many via: platform_results - from: PlatformOptions to: YouTubeOptions type: has_one via: youtube - from: PlatformOptions to: TikTokOptions type: has_one via: tiktok - from: PlatformOptions to: InstagramOptions type: has_one via: instagram - from: PlatformOptions to: ThreadsOptions type: has_one via: threads - from: PlatformOptions to: BlueskyOptions type: has_one via: bluesky - from: PlatformOptions to: MastodonOptions type: has_one via: mastodon - from: PlatformOptions to: TelegramOptions type: has_one via: telegram - from: PlatformOptions to: DiscordOptions type: has_one via: discord - from: PlatformOptions to: PinterestOptions type: has_one via: pinterest