generated: '2026-10-18' method: derived generator: derive-data-model.py source: - openapi/_original/hookbridge-api-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 100 entities_in_spec: 100 relationships: 104 entities: - name: APIKeyInfo fields: 5 - name: AckPullEventsRequest fields: 1 - name: AckPullEventsResponse fields: 2 - name: ActorLookupResponse fields: 2 - name: AttemptRecord fields: 20 description: A single delivery attempt for a webhook message - name: CreateAPIKeyRequest fields: 1 - name: CreateAPIKeyResponse fields: 2 - name: CreateCheckoutRequest fields: 2 - name: CreateCheckoutResponse fields: 2 - name: CreateEndpointRequest fields: 7 - name: CreateEndpointResponse fields: 2 - name: CreateExportRequest fields: 6 - name: CreateExportResponse fields: 2 - name: CreateInboundEndpointRequest fields: 20 - name: CreateInboundEndpointResponse fields: 2 - name: CreatePortalRequest fields: 1 - name: CreatePortalResponse fields: 2 - name: CreateProjectRequest fields: 2 - name: CreatePullEndpointRequest fields: 18 - name: CreatePullEndpointResponse fields: 2 - name: CreateSigningKeyResponse fields: 2 - name: DeleteAllResponse fields: 3 - name: DeleteBatchRequest fields: 1 - name: DeleteBatchResponse fields: 2 - name: DeleteEventBatchResponse fields: 2 - name: DeleteEventResponse fields: 2 - name: DeleteMessageResponse fields: 2 - name: Endpoint fields: 11 description: Full endpoint details (returned by GET /endpoints/:id) - name: EndpointSummary fields: 7 description: Summary endpoint info for list responses (omits headers for performance) - name: ErrorResponse fields: 2 - name: ExportRecord fields: 16 - name: GetEndpointResponse fields: 2 - name: GetExportResponse fields: 2 - name: GetInboundEndpointResponse fields: 2 - name: GetInboundLogsResponse fields: 2 - name: GetInboundMessageAttemptsResponse fields: 2 - name: GetInboundMessageResponse fields: 2 - name: GetInboundMetricsResponse fields: 2 - name: GetInboundTimeSeriesMetricsResponse fields: 2 - name: GetInvoicesResponse fields: 2 - name: GetLogsResponse fields: 2 - name: GetMessageAttemptsResponse fields: 2 - name: GetMessageResponse fields: 2 - name: GetMetricsResponse fields: 2 - name: GetProjectResponse fields: 2 - name: GetPullEndpointResponse fields: 2 - name: GetPullEventResponse fields: 2 - name: GetPullLogsResponse fields: 2 - name: GetPullMetricsResponse fields: 2 - name: GetPullTimeSeriesMetricsResponse fields: 2 - name: GetSubscriptionResponse fields: 2 - name: GetTimeSeriesMetricsResponse fields: 2 - name: GetUsageHistoryResponse fields: 2 - name: InboundEndpoint fields: 18 description: Full inbound endpoint details (returned by GET /inbound-endpoints/:id) - name: InboundEndpointSummary fields: 9 description: Summary inbound endpoint info for list responses - name: InboundLogEntry fields: 12 - name: InboundMessage fields: 24 description: Full inbound message details - name: InboundRejection fields: 7 - name: Invoice fields: 11 - name: InvoiceLine fields: 3 - name: ListAPIKeysResponse fields: 2 - name: ListEndpointsResponse fields: 2 description: Paginated list of endpoints. Uses EndpointSummary (omits headers, rate limits) - name: ListExportsResponse fields: 2 - name: ListInboundEndpointsResponse fields: 2 - name: ListInboundRejectionsResponse fields: 2 - name: ListProjectsResponse fields: 2 - name: ListPullEndpointsResponse fields: 2 - name: ListPullEventsResponse fields: 2 - name: ListSigningKeysResponse fields: 2 - name: ListenInboundEndpointResponse fields: 2 description: Response from the CLI polling endpoint. Contains an array of inbound - name: Message fields: 25 - name: MessageSummary fields: 14 - name: Metrics fields: 9 - name: Project fields: 6 - name: PullDeleteAllResponse fields: 3 - name: PullEndpoint fields: 24 - name: PullEventDetail fields: 14 description: Full event including payload and original headers. - name: PullEventSummary fields: 8 description: Event metadata returned in list responses (no payload). - name: PullLogEntry fields: 11 - name: PullTimeSeriesBucket fields: 5 - name: PullTimingBreakdown fields: 4 description: Timing breakdown for a pull event lifecycle. - name: ReplayAllInboundMessagesResponse fields: 3 - name: ReplayAllMessagesResponse fields: 3 - name: ReplayBatchInboundMessagesResponse fields: 3 - name: ReplayBatchMessagesResponse fields: 3 - name: ReplayBatchRequest fields: 1 - name: ReplayInboundMessageResponse fields: 3 - name: ReplayMessageResponse fields: 3 - name: ResponseMeta fields: 1 - name: SendWebhookRequest fields: 5 - name: SendWebhookResponse fields: 2 - name: SigningKey fields: 3 - name: TimeSeriesBucket fields: 6 - name: UpdateEndpointRequest fields: 5 - name: UpdateEndpointResponse fields: 2 - name: UpdateInboundEndpointRequest fields: 18 - name: UpdateInboundEndpointResponse fields: 2 - name: UpdateProjectRequest fields: 2 - name: UpdatePullEndpointRequest fields: 18 description: Partial update — only provided fields are changed. - name: UsageHistoryRow fields: 5 relationships: - from: SendWebhookRequest to: Endpoint type: belongs_to via: endpoint_id - from: SendWebhookResponse to: ResponseMeta type: has_one via: meta - from: GetMessageResponse to: Message type: has_one via: data - from: GetMessageResponse to: ResponseMeta type: has_one via: meta - from: DeleteMessageResponse to: ResponseMeta type: has_one via: meta - from: DeleteEventResponse to: ResponseMeta type: has_one via: meta - from: DeleteBatchRequest to: Message type: belongs_to via: message_ids - from: DeleteBatchResponse to: ResponseMeta type: has_one via: meta - from: DeleteEventBatchResponse to: ResponseMeta type: has_one via: meta - from: DeleteAllResponse to: ResponseMeta type: has_one via: meta - from: PullDeleteAllResponse to: ResponseMeta type: has_one via: meta - from: ActorLookupResponse to: ResponseMeta type: has_one via: meta - from: ReplayMessageResponse to: ResponseMeta type: has_one via: meta - from: GetLogsResponse to: MessageSummary type: has_many via: data - from: GetLogsResponse to: ResponseMeta type: has_one via: meta - from: GetMetricsResponse to: Metrics type: has_one via: data - from: GetMetricsResponse to: ResponseMeta type: has_one via: meta - from: CreateEndpointResponse to: ResponseMeta type: has_one via: meta - from: GetEndpointResponse to: Endpoint type: has_one via: data - from: GetEndpointResponse to: ResponseMeta type: has_one via: meta - from: ListEndpointsResponse to: EndpointSummary type: has_many via: data - from: ListEndpointsResponse to: ResponseMeta type: has_one via: meta - from: UpdateEndpointResponse to: ResponseMeta type: has_one via: meta - from: CreateSigningKeyResponse to: ResponseMeta type: has_one via: meta - from: ListSigningKeysResponse to: SigningKey type: has_many via: data - from: ListSigningKeysResponse to: ResponseMeta type: has_one via: meta - from: ListAPIKeysResponse to: APIKeyInfo type: has_many via: data - from: ListAPIKeysResponse to: ResponseMeta type: has_one via: meta - from: CreateAPIKeyResponse to: ResponseMeta type: has_one via: meta - from: Message to: Project type: belongs_to via: project_id - from: Message to: Endpoint type: belongs_to via: endpoint_id - from: MessageSummary to: Message type: belongs_to via: message_id - from: CreateCheckoutResponse to: ResponseMeta type: has_one via: meta - from: CreatePortalResponse to: ResponseMeta type: has_one via: meta - from: GetSubscriptionResponse to: ResponseMeta type: has_one via: meta - from: GetUsageHistoryResponse to: UsageHistoryRow type: has_many via: data - from: GetUsageHistoryResponse to: ResponseMeta type: has_one via: meta - from: Invoice to: InvoiceLine type: has_many via: lines - from: GetInvoicesResponse to: Invoice type: has_many via: data - from: GetInvoicesResponse to: ResponseMeta type: has_one via: meta - from: GetTimeSeriesMetricsResponse to: ResponseMeta type: has_one via: meta - from: CreateInboundEndpointResponse to: ResponseMeta type: has_one via: meta - from: GetInboundEndpointResponse to: InboundEndpoint type: has_one via: data - from: GetInboundEndpointResponse to: ResponseMeta type: has_one via: meta - from: ListInboundEndpointsResponse to: InboundEndpointSummary type: has_many via: data - from: ListInboundEndpointsResponse to: ResponseMeta type: has_one via: meta - from: UpdateInboundEndpointResponse to: ResponseMeta type: has_one via: meta - from: ListenInboundEndpointResponse to: ResponseMeta type: has_one via: meta - from: ReplayInboundMessageResponse to: ResponseMeta type: has_one via: meta - from: ReplayAllInboundMessagesResponse to: ResponseMeta type: has_one via: meta - from: InboundLogEntry to: Message type: belongs_to via: message_id - from: InboundLogEntry to: InboundEndpoint type: belongs_to via: inbound_endpoint_id - from: GetInboundLogsResponse to: InboundLogEntry type: has_many via: data - from: GetInboundLogsResponse to: ResponseMeta type: has_one via: meta - from: GetInboundMetricsResponse to: ResponseMeta type: has_one via: meta - from: GetInboundTimeSeriesMetricsResponse to: ResponseMeta type: has_one via: meta - from: InboundRejection to: InboundEndpoint type: belongs_to via: inbound_endpoint_id - from: ListInboundRejectionsResponse to: InboundRejection type: has_many via: data - from: ListInboundRejectionsResponse to: ResponseMeta type: has_one via: meta - from: CreateExportRequest to: Endpoint type: belongs_to via: endpoint_id - from: CreateExportRequest to: InboundEndpoint type: belongs_to via: inbound_endpoint_id - from: ExportRecord to: Project type: belongs_to via: project_id - from: CreateExportResponse to: ExportRecord type: has_one via: data - from: CreateExportResponse to: ResponseMeta type: has_one via: meta - from: ListExportsResponse to: ExportRecord type: has_many via: data - from: ListExportsResponse to: ResponseMeta type: has_one via: meta - from: GetExportResponse to: ExportRecord type: has_one via: data - from: GetExportResponse to: ResponseMeta type: has_one via: meta - from: ListProjectsResponse to: Project type: has_many via: data - from: ListProjectsResponse to: ResponseMeta type: has_one via: meta - from: GetProjectResponse to: Project type: has_one via: data - from: GetProjectResponse to: ResponseMeta type: has_one via: meta - from: ReplayAllMessagesResponse to: ResponseMeta type: has_one via: meta - from: ReplayBatchMessagesResponse to: ResponseMeta type: has_one via: meta - from: ReplayBatchInboundMessagesResponse to: ResponseMeta type: has_one via: meta - from: ReplayBatchRequest to: Message type: belongs_to via: message_ids - from: GetMessageAttemptsResponse to: AttemptRecord type: has_many via: data - from: GetMessageAttemptsResponse to: ResponseMeta type: has_one via: meta - from: InboundMessage to: Project type: belongs_to via: project_id - from: InboundMessage to: InboundEndpoint type: belongs_to via: inbound_endpoint_id - from: GetInboundMessageResponse to: InboundMessage type: has_one via: data - from: GetInboundMessageResponse to: ResponseMeta type: has_one via: meta - from: GetInboundMessageAttemptsResponse to: AttemptRecord type: has_many via: data - from: GetInboundMessageAttemptsResponse to: ResponseMeta type: has_one via: meta - from: CreatePullEndpointResponse to: PullEndpoint type: has_one via: data - from: CreatePullEndpointResponse to: ResponseMeta type: has_one via: meta - from: GetPullEndpointResponse to: PullEndpoint type: has_one via: data - from: GetPullEndpointResponse to: ResponseMeta type: has_one via: meta - from: ListPullEndpointsResponse to: ResponseMeta type: has_one via: meta - from: PullEventSummary to: PullTimingBreakdown type: has_one via: timing - from: PullEventDetail to: PullTimingBreakdown type: has_one via: timing - from: ListPullEventsResponse to: PullEventSummary type: has_many via: data - from: ListPullEventsResponse to: ResponseMeta type: has_one via: meta - from: GetPullEventResponse to: PullEventDetail type: has_one via: data - from: GetPullEventResponse to: ResponseMeta type: has_one via: meta - from: AckPullEventsResponse to: ResponseMeta type: has_one via: meta - from: PullLogEntry to: PullEndpoint type: belongs_to via: pull_endpoint_id - from: PullLogEntry to: PullTimingBreakdown type: has_one via: timing - from: GetPullLogsResponse to: PullLogEntry type: has_many via: data - from: GetPullLogsResponse to: ResponseMeta type: has_one via: meta - from: GetPullMetricsResponse to: Metrics type: has_one via: data - from: GetPullMetricsResponse to: ResponseMeta type: has_one via: meta - from: GetPullTimeSeriesMetricsResponse to: ResponseMeta type: has_one via: meta - from: ErrorResponse to: ResponseMeta type: has_one via: meta