Contribution is an audit and progress-tracking record for a user-initiated blueprint contribution run — typically triggered when a workspace user submits or publishes a new provider blueprint (e.g. building a connector for “amazon” or “qonto”). It captures the run lifecycle (status, started/ended timestamps, progress payload), the provider being built (provider_slug), the originating page (source_url), and the structured input data (addresses, country, flow_json). Each contribution is workspace-scoped via a nullable FK to Workspace that is stamped at creation time to prevent cross-tenant drift. The entity is written exclusively by the blueprint contribution pipeline (POST /v1/contribution) and updated by dedicated PATCH handlers for appending steps and transitioning status; no fields are user-editable via the records-table PATCH surface.
Internal object. Not currently exposed on the public REST API. The operations below describe the intended contract.
API operations
Data model
Attributes
Relationships
System-computed
- contribution_id: generated by gen_random_uuid() on INSERT — never supplied by the client
- created_at: set once on INSERT by MikroORM onCreate hook (new Date())
- updated_at: refreshed on every flush by MikroORM onUpdate hook (new Date())
- deleted_at: soft-delete sentinel — NULL on active rows; set by a soft-delete operation, never by the client directly
- status default: ‘initial’ set by the entity class initializer and the DB column default — no application code needs to supply it on creation
- workspace_pk: stamped at creation by ContributionService/route handler from req.workspace (JWT-resolved) so in-flight runs are always correctly tenant-scoped; nullable on pre-migration legacy rows
Example
/Users/maximechampoux/platform/apps/api/src/database/entities/Contribution.ts · domain: intelligence · tier: Activity