generated: '2026-09-28' method: derived generator: derive-data-model.py source: - openapi/_original/huddlekit-api-openapi.json notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 33 entities_in_spec: 33 relationships: 14 entities: - name: ApiKeyInfo fields: 5 description: The workspace and permissions of the API key that made the request. - name: Change fields: 2 description: Before and after values of a changed field. - name: CommentCreatedEvent fields: 0 description: Payload of a comment.created delivery. `changed` is null. - name: CommentScreenshotReadyEvent fields: 0 description: Payload of a comment.screenshot_ready delivery. Sent the first time a website or web app comment gets a screenshot. - name: CommentStatusChangedEvent fields: 0 description: Payload of a comment.status_changed delivery. - name: CommentTextChangedEvent fields: 0 description: Payload of a comment.text_changed delivery. - name: CreateCommentRequest fields: 10 description: 'A new comment. Which location fields are allowed depends on `surface`: `path` for website; `url`, `page_title` and `path` for webapp; `page_number` and `video_timestamp` for document. Sending a locati' - name: CreateCommentResponse fields: 2 - name: CreateWebhookSubscriptionRequest fields: 5 description: The URL to deliver events to and, optionally, which events. `target_url` and `url` are accepted as alternative spellings of `targetUrl`, and `events` as an alternative spelling of `event_types`. - name: CreatedComment fields: 5 description: The comment that was created. - name: DeleteWebhookSubscriptionResponse fields: 2 - name: DocumentComment fields: 11 description: 'A comment on a document (`surface: document`). Document comments have no path, URL or screenshot.' - name: DocumentPage fields: 2 description: Location of a document comment. - name: Error fields: 2 description: Error body returned by every failed call. - name: ListCommentsResponse fields: 2 - name: ListProjectsResponse fields: 1 - name: ListRecentEventsResponse fields: 2 - name: ListWebhookSubscriptionsResponse fields: 1 - name: PlanRequiredError fields: 2 description: Returned with 403 when the key's workspace is not on a plan that includes API access. - name: Project fields: 5 description: 'Something comments can be attached to: a website project, a web app or a document.' - name: UpdateCommentStatusRequest fields: 2 description: The new status. `status` is the only writable field; sending `text` is refused with a 400. Other fields are ignored. - name: UpdateCommentStatusResponse fields: 2 - name: UpdatedComment fields: 5 description: The comment after the update. - name: WebappComment fields: 13 description: 'A comment on a web app (`surface: webapp`).' - name: WebappPage fields: 3 description: Location of a web app comment. - name: WebhookAuthor fields: 2 description: Who wrote the comment. - name: WebhookComment fields: 11 description: The comment as it is when the event is sent. - name: WebhookPayload fields: 9 description: Body of every webhook delivery, and of each item returned by `GET /events/recent`. - name: WebhookSubscription fields: 7 description: A webhook subscription created with this API key. - name: WebhookSubscriptionCreated fields: 6 description: A new subscription. This is the only time the signing secret is returned. - name: WebhookSubscriptionResubscribed fields: 3 description: This key already had a subscription for the same URL. It was reactivated and its event types replaced. The existing signing secret is kept and is not returned. - name: WebsiteComment fields: 11 description: 'A comment on a website project (`surface: website`).' - name: WebsitePage fields: 1 description: Location of a website comment. relationships: - from: ListProjectsResponse to: Project type: has_many via: projects - from: ListCommentsResponse to: WebsiteComment type: has_many via: comments - from: ListCommentsResponse to: WebappComment type: has_many via: comments - from: ListCommentsResponse to: DocumentComment type: has_many via: comments - from: CreateCommentRequest to: Project type: belongs_to via: project_id - from: CreateCommentResponse to: CreatedComment type: has_one via: comment - from: UpdateCommentStatusResponse to: UpdatedComment type: has_one via: comment - from: ListWebhookSubscriptionsResponse to: WebhookSubscription type: has_many via: hooks - from: WebhookComment to: WebsitePage type: has_one via: page - from: WebhookComment to: WebappPage type: has_one via: page - from: WebhookComment to: DocumentPage type: has_one via: page - from: WebhookComment to: WebhookAuthor type: has_one via: author - from: WebhookPayload to: WebhookComment type: has_one via: comment - from: ListRecentEventsResponse to: WebhookPayload type: has_many via: events