voplica.types.content
The protobuf package voplica.types.content: 0 services, 7 messages and 2 enums, defined in voplica/types/content/content.proto, voplica/types/content/content_origin_type.proto, voplica/types/content/provenance_display_level.proto.
Messages
Section titled “Messages”Content
Section titled “Content”A single piece of content (image, video, audio, 3D model, etc.) that can be shared on the social feed.
Content can be created in two ways:
- From a workflow execution — automatically registered when a step with content_registration config completes, or manually created from step outputs via CreateContent.
- From a direct upload — user uploads content that was created externally (e.g., with Midjourney, ComfyUI, or other tools).
Each content item owns its files independently (via its own Asset). The provenance data is snapshotted at creation time so it persists even if the workflow execution data is later cleaned up.
| Field | Number | Type | Label | Description |
|---|---|---|---|---|
| id | 1 | string |
Unique ID of the generated content | |
| owner_id | 2 | string |
Owner of the content (the user who created or uploaded it) | |
| status | 3 | voplica.types.base.PublishStatus | Publication status | |
| visibility | 4 | voplica.types.base.VisibilityType | Visibility (PUBLIC, PRIVATE). PUBLIC content is visible to anyone (subject to MPA rating filters). PRIVATE content is visible only to the owner. | |
| mpa_rating | 5 | voplica.types.base.MPARating | Content rating using the MPA film rating system. Used for content filtering in the social feed based on user preferences. | |
| asset | 6 | voplica.types.file.AssetFileVariantGroups | The actual content files (image variants, video streams, etc.) Note: file_variant_groups are returned only if explicitly requested via file retriever options. | |
| created_at | 7 | uint64 |
When the content record was created (seconds from UTC epoch) | |
| origin_type | 8 | ContentOriginType | How the content was originally created (WORKFLOW or UPLOAD). Denormalized from provenance.origin for efficient filtering without inspecting the oneof. | |
| source_files | 9 | voplica.types.file.FileInfo | repeated | |
| searchable | 10 | bool |
||
| analyzed_mpa_rating | 11 | voplica.types.base.MPARating | The rating the platform’s MPA analysis determined. Never user-writable. UNSPECIFIED means analysis has not (yet) produced a rating for this content. Invariant: when set, mpa_rating >= analyzed_mpa_rating (never-lower rule). |
|
| mpa_rating_estimated | 12 | bool |
True iff mpa_rating was set by a platform ESTIMATE - the quick estimate at publication or through ContentService.EstimateMpaRating, an asset-preparation detector, or the un-analysable placeholder - not by the user and not by analysis. Cleared when analysis applies or when the user (or an admin) sets a rating. |
|
| moderation_status | 13 | voplica.types.base.ContentModerationStatus | Moderation state. FLAGGED / REJECTED block (re)publishing. | |
| publication_pending | 15 | bool |
||
| publication_refused | 16 | bool |
||
| uploaded_song_lineage | 17 | bool |
||
| likes_count | 20 | uint64 |
Engagement metrics (read-only, updated by the platform). Renamed from views_count/checks_count – see the checks->views/views->engagement terminology rename. | |
| engagement_count | 21 | uint64 |
||
| views_count | 22 | uint64 |
ContentAssetPreparationMetadata
Section titled “ContentAssetPreparationMetadata”| Field | Number | Type | Label | Description |
|---|---|---|---|---|
| status | 1 | voplica.types.base.JobStatus | ||
| message | 2 | string |
optional | Optional error message |
| preparation_workflow_id | 3 | string |
optional | Id of the workflow that is preparing the Asset |
| auto_publish_enabled | 4 | bool |
||
| expected_mpa_rating | 5 | voplica.types.base.MPARating | optional | MPA rating for auto-created content. If the content is detected to be produced with higher-level mpa_rating this content will not be auto-published. If not set - allow any mpa_rating publishing. |
| auto_detected_mpa_rating | 6 | voplica.types.base.MPARating | optional | Auto-detected mpa_rating. If provided - then user’s provided mpa_rating must not be lower than this level. |
ContentMetadata
Section titled “ContentMetadata”| Field | Number | Type | Label | Description |
|---|---|---|---|---|
| provenance | 1 | ContentProvenance | optional | How this content was generated (workflow origin or upload origin, models, prompt, etc.) Snapshotted at creation time for permanence and search. Returned if the user is owner or ProvenanceDisplayLevel is either FULL or BASIC. |
| description | 2 | string |
optional | User-editable metadata (can be set at publish time or updated later) |
| provenance_display_level | 3 | ProvenanceDisplayLevel | Controls how much provenance metadata is visible to non-owners. The owner always sees full provenance regardless of this setting. | |
| tags | 4 | string |
repeated | User-editable tags (can be set at publish time or updated later) |
| mpa_analysis | 5 | voplica.types.file.FileMpaAnalysis | optional | Analysis snapshot of the source file this content was analyzed from, taken at apply time (provenance for admin review + reason surfacing). Owner/admin visibility only - same redaction rules as the asset-preparation metadata. |
| mpa_check_job_status | 6 | voplica.types.base.JobStatus | Status of the MPA verification job for this content (PENDING/RUNNING/COMPLETED/FAILED). Owner/admin visibility only. |
ContentProvenance
Section titled “ContentProvenance”Provenance data describing how a piece of content was generated.
This data is snapshotted at content creation time for two purposes:
- Display: show “how this was made” (generation card) on the content detail page
- Search: enable filtering by model, character, prompt, workflow, etc.
The provenance is split into:
- origin: where the content came from (workflow execution or user upload)
- params: generation parameters (models, prompt, seed — shared across both origins)
For workflow content, the full step input/output parameters can be fetched via the Workflow Execution API (GetWorkflowStepOutputs) as long as the execution data hasn’t been cleaned up.
| Field | Number | Type | Label | Description |
|---|---|---|---|---|
| workflow | 1 | WorkflowOrigin | oneof origin |
Content produced by a workflow execution |
| upload | 2 | UploadOrigin | oneof origin |
Content uploaded directly by the user |
| params | 3 | GenerationParams | optional | Generation parameters (models, prompt, characters, seed). For workflow content, these are resolved from the step’s content_provenance_generation_params (defined on WorkflowStep or WorkflowVariant). For uploaded content, these are optionally provided by the user. Returned only if user has access (either owner or FULL Provenance Display Level is set). |
GenerationParams
Section titled “GenerationParams”Generation parameters shared across all content origins.
For workflow content, these are resolved from the step’s content_provenance_generation_params (defined on WorkflowStep or as a default on WorkflowVariant). The workflow author wires these fields from step inputs/outputs using the standard data-linking system (WorkflowResolvableParamValue). For uploaded content, the user can optionally provide these manually.
All fields are optional — provenance captures what the author/user provides. Unknown or unavailable fields are left empty.
| Field | Number | Type | Label | Description |
|---|---|---|---|---|
| base_model_ids | 1 | string |
repeated | Base model variant IDs used for generation |
| lora_model_ids | 2 | string |
repeated | LoRA model variant IDs applied during generation |
| character_ids | 3 | string |
repeated | Character IDs depicted in or used for the content |
| prompt | 4 | string |
optional | The prompt used for generation |
| negative_prompt | 5 | string |
optional | The negative prompt used for generation |
| seed | 6 | string |
optional | The seed used for generation. String to support arbitrary precision. |
| origin_file_ids | 7 | string |
repeated | This helps enriching generation_params when some values are not provided. In that case, it will search for those values in the origin files (if specified) and populate unspecified params from the Content of that file - if any exists. It also helps tracking origin content. It will try to find Content for origin files. If a single Content is found it will take all necessary missing metadata from that Content. If multiple Content files are found it will take all information from all of them, but for prompt, negative_prompt, it will prefer taking single value from the first non-blank prompt. seed is never taken from original content. |
| look_ids | 8 | string |
repeated |
UploadOrigin
Section titled “UploadOrigin”Origin data for content uploaded directly by the user (not from a workflow).
No fields.
WorkflowOrigin
Section titled “WorkflowOrigin”Workflow execution lineage for content produced by the Workflow Engine.
Contains all the information needed to trace this content back to the specific workflow execution, step, and iteration that produced it.
The source_step_id and source_iteration_number reference the step that actually produced the content (e.g., BaseImageGeneration, ImageRefine). Content is created via the step’s content_registration configuration in WorkflowStepExecConfig, not via a separate publishing step.
| Field | Number | Type | Label | Description |
|---|---|---|---|---|
| workflow_execution_id | 1 | string |
optional | Workflow execution that produced this content. Execution id is returned to owner only because only owner of the execution can view the execution itself. |
| workflow_id | 2 | string |
Workflow that the variant belongs to | |
| workflow_variant_id | 3 | string |
Workflow variant that was executed | |
| source_step_id | 4 | uint32 |
Step within the workflow variant that produced this content (the generation step, e.g., BaseImageGeneration, ImageRefine). This references the step whose output files are used as the content’s asset. | |
| source_iteration_number | 5 | uint32 |
Iteration number of the source step that produced this content. |
ContentOriginType
Section titled “ContentOriginType”How the content was originally created.
WORKFLOW content was produced by a workflow execution (auto-created or manually created from step outputs). UPLOAD content was uploaded directly by the user (e.g., content generated externally with Midjourney, ComfyUI, etc.).
Denormalized on ContentPost for efficient filtering — avoids needing to inspect the provenance.origin oneof for every query.
| Name | Number | Description |
|---|---|---|
| CONTENT_ORIGIN_TYPE_UNSPECIFIED | 0 | |
| WORKFLOW | 1 | Content produced by the Voplica Workflow Engine |
| UPLOAD | 2 | Content uploaded by the user (generated externally or otherwise) |
ProvenanceDisplayLevel
Section titled “ProvenanceDisplayLevel”Controls how much provenance metadata is visible to non-owners when viewing content.
The content owner always sees the full provenance regardless of this setting. This only affects what other users see when viewing published content.
Three tiers cover the common use cases:
- FULL: transparent “how was this made” generation card (default)
- BASIC: show models/characters/workflow but hide the prompt and seed
- NONE: hide all provenance (just show the content itself)
| Name | Number | Description |
|---|---|---|
| PROVENANCE_DISPLAY_LEVEL_UNSPECIFIED | 0 | |
| FULL | 1 | Show all provenance fields to everyone. This is the default for auto-created workflow content. |
| BASIC | 2 | Show models, characters, workflow info, and content stage to everyone. Hide prompt, negative_prompt, and seed from non-owners. Use this when you want to share what tools/models you used but keep your prompt private. |
| NONE | 3 | Hide all provenance from non-owners. Non-owners see only the content itself with no generation details. |