generated: '2026-10-07' method: derived generator: derive-data-model.py source: - openapi/cloro-dev-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 61 entities_in_spec: 61 relationships: 19 entities: - name: AiModeMonitorRequest fields: 8 - name: AiModeMonitorResponse fields: 2 - name: AsyncStatusResponse fields: 4 - name: AsyncTaskCreateResponse fields: 3 - name: AsyncTaskCredits fields: 2 description: Credit information for an async task. - name: AsyncTaskSummary fields: 7 description: Common task summary fields shared across async task responses. - name: AuthenticationError fields: 2 - name: BatchTaskFailureResult fields: 3 - name: BatchTaskRequest fields: 5 - name: BatchTaskResponse fields: 3 - name: BatchTaskSuccessResult fields: 4 - name: CanceledError fields: 2 - name: ChatGPTMonitorRequest fields: 6 - name: ChatGPTMonitorResponse fields: 2 - name: ClearQueueResponse fields: 2 - name: ConcurrentLimitError fields: 2 - name: CopilotMonitorRequest fields: 4 - name: CopilotMonitorResponse fields: 2 - name: CreditsResponse fields: 3 - name: Error fields: 2 - name: ExternalServiceError fields: 2 - name: ForbiddenError fields: 2 - name: GeminiMonitorRequest fields: 4 - name: GeminiMonitorResponse fields: 2 - name: GoogleGotoRequest fields: 1 - name: GoogleGotoResponse fields: 1 - name: GoogleMapPlace fields: 0 description: Place card from a Google AI answer that Google geo-tagged - name: GoogleMonitorRequest fields: 10 - name: GoogleMonitorResponse fields: 2 - name: GoogleNewsMonitorRequest fields: 7 - name: GoogleNewsMonitorResponse fields: 2 - name: GooglePlace fields: 0 description: Place card from a Google AI answer - name: GooglePlaceBase fields: 11 description: Fields shared by the place and map entries of a Google AI answer - name: GrokMonitorRequest fields: 4 - name: GrokMonitorResponse fields: 2 - name: HotelItem fields: 13 description: Hotel listing with detailed information - name: IdempotencyConflictError fields: 2 - name: ImagePosition fields: 2 description: Pixel offset for image positioning within a slot - name: InlineProduct fields: 2 description: Inline product reference that appeared in the response text, including pricing and offers - name: InternalError fields: 2 - name: MediaItem fields: 9 description: Media content (video or image) found in response - name: NotFoundError fields: 2 - name: OfferTag fields: 2 description: Promotional tag on an offer - name: PerplexityMonitorRequest fields: 4 - name: PerplexityMonitorResponse fields: 2 - name: PlaceItem fields: 9 description: General place or location information - name: PriceDetails fields: 5 description: Detailed price breakdown for an offer - name: ProductResult fields: 10 description: One product cluster and its merchant offers. Only `title` is guaranteed; anything Google's panel lacks is omitted, never sent as `null`. - name: QueueLimitError fields: 2 - name: RateLimitError fields: 2 - name: RatingGroupedCitation fields: 3 description: Rating source information with supporting websites - name: ShoppingCard fields: 2 description: Shopping product card with detailed product information - name: ShoppingOffer fields: 19 description: Shopping offer with pricing details from a specific merchant - name: ShoppingProduct fields: 23 description: Individual product information - name: ShowcaseBackground fields: 3 description: Background styling for a product showcase - name: ShowcaseImage fields: 3 description: Image rendered as the hero of a product showcase - name: ShowcaseMetadata fields: 4 description: Visual showcase metadata attached to a shopping product (image, background, and per-slot placement). - name: ShowcaseSlot fields: 5 description: Single visual slot inside a product showcase - name: SlotPlacement fields: 4 description: Percent-based placement of a showcase slot within its container - name: TaskStatusResponse fields: 4 - name: ValidationError fields: 2 relationships: - from: AsyncTaskCreateResponse to: AsyncTaskSummary type: has_one via: task - from: AsyncTaskCreateResponse to: AsyncTaskCredits type: has_one via: credits - from: TaskStatusResponse to: AsyncTaskSummary type: has_one via: task - from: TaskStatusResponse to: AsyncTaskCredits type: has_one via: credits - from: BatchTaskResponse to: BatchTaskSuccessResult type: has_many via: results - from: BatchTaskResponse to: BatchTaskFailureResult type: has_many via: results - from: BatchTaskSuccessResult to: AsyncTaskSummary type: has_one via: task - from: BatchTaskSuccessResult to: AsyncTaskCredits type: has_one via: credits - from: ShoppingCard to: ShoppingProduct type: has_many via: products - from: ShowcaseSlot to: ImagePosition type: has_one via: position - from: ShowcaseSlot to: SlotPlacement type: has_one via: placement - from: ShowcaseMetadata to: ShowcaseImage type: has_one via: image - from: ShowcaseMetadata to: ShowcaseBackground type: has_one via: background - from: ShoppingProduct to: ShoppingOffer type: has_many via: offers - from: ShoppingProduct to: RatingGroupedCitation type: has_one via: rating_grouped_citation - from: ShoppingProduct to: ShowcaseMetadata type: has_one via: showcase_metadata - from: ShoppingOffer to: PriceDetails type: has_one via: price_details - from: ShoppingOffer to: OfferTag type: has_one via: tag - from: InlineProduct to: ShoppingProduct type: has_one via: product