The protobuf package voplica.types.creator: 0 services, 6 messages and 5 enums, defined in voplica/types/creator/creator_program.proto.
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| user_id |
2 |
string |
|
|
| requested_bytes |
3 |
uint64 |
|
What the creator is asking for, in bytes. Advisory: the admin sets the number that lands. |
| reason |
4 |
string |
|
|
| status |
5 |
CreatorAllowanceRequestStatus |
|
|
| created_at |
6 |
uint64 |
|
|
| decided_at |
7 |
uint64 |
optional |
|
| decision_note |
8 |
string |
optional |
|
| granted_bytes |
9 |
uint64 |
optional |
The allowance actually set when GRANTED, in bytes (-1 is never used here: unlimited public hosting is not a thing an admin grants through this queue). |
The answer to “may this model earn?”, recorded on the variant so the owner and an admin both see
WHICH check passed and when.
One row of a pulled profile snapshot. Stored per link; returned only to the owner and to admins.
| Field |
Number |
Type |
Label |
Description |
| provider |
1 |
voplica.types.vault.ThirdPartyProvider |
|
|
| external_ref |
2 |
string |
|
The provider’s canonical reference: “author/repo” for Hugging Face, “civitai:<modelId>” for Civitai. One spelling, so a declared ref can be compared without a per-provider parser. |
| display_name |
3 |
string |
|
|
| external_updated_at |
4 |
uint64 |
|
epoch millis, 0 when the provider announces none |
| file_sha256 |
5 |
string |
repeated |
Lowercase hex SHA-256 of the model’s weight files, as the PROVIDER announces them. Empty when it announces none - which is most of Hugging Face, and is why FILE_HASH is not the only method. |
| downloads |
6 |
uint64 |
|
|
| likes |
7 |
uint64 |
|
Hugging Face likes; Civitai thumbsUpCount |
| favourites |
8 |
uint64 |
|
Civitai favoriteCount; 0 on Hugging Face |
| rating_count |
9 |
uint32 |
|
Civitai ratingCount; 0 on Hugging Face |
| rating |
10 |
float |
|
Civitai rating (0-5); 0 on Hugging Face |
The popularity snapshot of one linked profile, summed over the public listing the platform pulled
(Hugging Face likes/downloads per model; Civitai thumbsUpCount/downloadCount/
favoriteCount/ratingCount/rating per model). Zero means “the provider announces none”.
| Field |
Number |
Type |
Label |
Description |
| downloads_total |
1 |
uint64 |
|
|
| likes_total |
2 |
uint64 |
|
|
| favourites_total |
3 |
uint64 |
|
|
| max_model_likes |
4 |
uint64 |
|
|
| followers |
5 |
uint64 |
|
Hugging Face numFollowers from the public user overview; 0 for Civitai. |
| fetched_at |
6 |
uint64 |
|
epoch millis |
| ratings_total |
7 |
uint64 |
|
|
| rating_average |
8 |
float |
|
|
The applicant’s own record.
| Field |
Number |
Type |
Label |
Description |
| user_id |
1 |
string |
|
|
| status |
2 |
CreatorProgramStatus |
|
|
| applied_at |
3 |
uint64 |
|
epoch millis |
| decided_at |
4 |
uint64 |
optional |
|
| decision_reason |
5 |
string |
optional |
shown to the applicant on REJECTED / REVOKED |
| links |
6 |
CreatorProviderLink |
repeated |
|
| applicant_note |
7 |
string |
optional |
|
| terms_version_accepted |
8 |
uint32 |
|
|
| updated_at |
9 |
uint64 |
|
|
| submitted_without_link |
12 |
bool |
|
|
| provider_link_count |
13 |
uint32 |
|
links.size() on the same read - repeated so a client has one place to read the facts. |
| hosts_models |
14 |
CreatorHostsModels |
|
Probed on the applicant’s own DRAFT read and on the admin DETAIL; UNKNOWN everywhere else (the mutator echoes, the admin LIST) by design - re-read the detail after a decision. |
One linked provider profile, as the platform pulled it.
| Field |
Number |
Type |
Label |
Description |
| provider |
1 |
voplica.types.vault.ThirdPartyProvider |
|
|
| external_profile_id |
2 |
string |
|
The provider’s own stable id for the profile (Civitai username, HuggingFace user/org name). |
| external_display_name |
3 |
string |
|
|
| profile_url |
4 |
string |
|
|
| namespaces |
5 |
string |
repeated |
|
| snapshot_model_count |
6 |
uint32 |
|
How many models the last pull saw. The list itself is not returned here - it can be thousands of rows and no caller of this message needs it. |
| snapshot_taken_at |
7 |
uint64 |
|
epoch millis |
| link_method |
8 |
CreatorLinkMethod |
|
|
| token_retained |
9 |
bool |
|
|
| linked_at |
10 |
uint64 |
|
epoch millis |
| stats |
11 |
CreatorProfileStats |
optional |
|
| provider_verified |
12 |
bool |
|
The PROVIDER’s own verification/badge status, where its public profile exposes one: Hugging Face PRO (hf:pro) and enterprise-organisation membership (hf:enterprise-org:<name>); Civitai exposes none through its public API today, so a Civitai link reads false/empty and that is not a finding about the creator. provider_verified = any badge that the platform treats as verification (today: hf:pro or an enterprise org). |
| provider_badges |
13 |
string |
repeated |
|
| identity_verified_by |
14 |
CreatorLinkMethod |
optional |
|
| identity_verified_at |
15 |
uint64 |
optional |
|
| external_account_id |
16 |
string |
|
|
| identity_check_failed_at |
17 |
uint64 |
optional |
|
| provider_badges_fetched_at |
18 |
uint64 |
optional |
|
| Name |
Number |
Description |
| CREATOR_ALLOWANCE_REQUEST_STATUS_UNSPECIFIED |
0 |
|
| CREATOR_ALLOWANCE_REQUEST_PENDING |
1 |
|
| CREATOR_ALLOWANCE_REQUEST_GRANTED |
2 |
|
| CREATOR_ALLOWANCE_REQUEST_REFUSED |
3 |
|
Tri-state “does this applicant already host models on Voplica” (public, published, verified variants). UNKNOWN
= not asked or unreachable; a client renders it exactly like NO. The zero value is spelled UNKNOWN on purpose:
it is an answer (“asked, could not tell”), not an unset field.
buf:lint:ignore ENUM_ZERO_VALUE_SUFFIX
| Name |
Number |
Description |
| CREATOR_HOSTS_MODELS_UNKNOWN |
0 |
|
| CREATOR_HOSTS_MODELS_NO |
1 |
|
| CREATOR_HOSTS_MODELS_YES |
2 |
|
How the platform came to hold this link.
| Name |
Number |
Description |
| CREATOR_LINK_METHOD_UNSPECIFIED |
0 |
|
| CREATOR_LINK_OAUTH |
1 |
|
| CREATOR_LINK_API_KEY |
2 |
|
The application ladder, mirroring the affiliate payout ACCEPT ladder: a state an ADMIN moved is
never moved back by the applicant.
| Name |
Number |
Description |
| CREATOR_PROGRAM_STATUS_UNSPECIFIED |
0 |
No application row exists. The answer for every user who has never applied. |
| CREATOR_PROGRAM_DRAFT |
1 |
|
| CREATOR_PROGRAM_SUBMITTED |
2 |
In the admin queue. The applicant may withdraw (back to DRAFT) until an admin claims it. |
| CREATOR_PROGRAM_UNDER_REVIEW |
3 |
An admin claimed it (the ACCEPT rung): the applicant can no longer withdraw or edit the links, exactly as an ACCEPTED payout locks the affiliate’s cancel. |
| CREATOR_PROGRAM_APPROVED |
4 |
Approved. The ONLY state in which revenue share may be enabled or a creator allowance applies. |
| CREATOR_PROGRAM_REJECTED |
5 |
Rejected with a reason. Re-appliable (the reason is shown to the applicant). |
| CREATOR_PROGRAM_REVOKED |
6 |
|
WHICH of the three checks tied a model to a linked profile. Strongest first; see the RPC.
| Name |
Number |
Description |
| CREATOR_PROVENANCE_METHOD_UNSPECIFIED |
0 |
|
| CREATOR_PROVENANCE_IMPORT_SOURCE |
1 |
The variant was IMPORTED and its source ref sits under a namespace of the linked profile. Server-derived from the import row - the caller cannot influence it. |
| CREATOR_PROVENANCE_FILE_HASH |
2 |
An import item’s announced SHA-256 matches a file hash in the pulled snapshot. |
| CREATOR_PROVENANCE_DECLARED_REF |
3 |
The owner declared an external ref and it was FOUND in the pulled snapshot. The weakest of the three - it proves the CLAIM matches the profile, not that the bytes do - and it is still accepted because a creator may legitimately upload their own weights from disk. The cross-owner digest check (REVENUE_SHARE_DUPLICATE_CONTENT) is what stops it being a loophole. |