common

package
v0.0.0-...-08a8310 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2026 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

Package common provides primitives to interact with the openapi HTTP API.

Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.8.0 DO NOT EDIT.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetSpec

func GetSpec() (swagger *openapi3.T, err error)

GetSpec returns the OpenAPI specification corresponding to the generated code in this file. External references in the spec are resolved through PathToRawSpec; externally-referenced files must be embedded in their corresponding Go packages (via the import-mapping feature). URL-based external refs are not supported.

func GetSpecJSON

func GetSpecJSON() ([]byte, error)

GetSpecJSON returns the raw JSON bytes of the embedded OpenAPI specification: decompressed but not unmarshaled. External references are not resolved here; the bytes are the spec exactly as embedded by codegen. The result is cached at package init time, so repeated calls are cheap.

func GetSwagger deprecated

func GetSwagger() (*openapi3.T, error)

GetSwagger returns the OpenAPI specification corresponding to the generated code in this file.

Deprecated: GetSwagger predates kin-openapi renaming openapi3.Swagger to openapi3.T. Use GetSpec instead. This wrapper is retained for backwards compatibility.

func PathToRawSpec

func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error)

Constructs a synthetic filesystem for resolving external references when loading openapi specifications.

Types

type AcceptedStatus

type AcceptedStatus string

AcceptedStatus defines model for AcceptedStatus.

const (
	Started AcceptedStatus = "started"
)

Defines values for AcceptedStatus.

func (AcceptedStatus) Valid

func (e AcceptedStatus) Valid() bool

Valid indicates whether the value is a known member of the AcceptedStatus enum.

type ActivityVerb

type ActivityVerb string

ActivityVerb defines model for ActivityVerb.

const (
	CommentedShelf ActivityVerb = "commented_shelf"
	FollowedUser   ActivityVerb = "followed_user"
	LikedShelf     ActivityVerb = "liked_shelf"
	PublishedShelf ActivityVerb = "published_shelf"
)

Defines values for ActivityVerb.

func (ActivityVerb) Valid

func (e ActivityVerb) Valid() bool

Valid indicates whether the value is a known member of the ActivityVerb enum.

type AdminSubmission

type AdminSubmission struct {
	// CoverUrl The entry's cover URL, live from the proposal join; prefills the curation cover field.
	CoverUrl  *string   `json:"cover_url,omitempty"`
	CreatedAt time.Time `json:"created_at"`

	// Developers The entry's developer credit facts, live from the proposal join; prefill the curation form.
	Developers       *[]string           `json:"developers,omitempty"`
	DisplayName      string              `json:"display_name"`
	Edition          *string             `json:"edition,omitempty"`
	EntryId          openapi_types.UUID  `json:"entry_id"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	Id               openapi_types.UUID  `json:"id"`
	ItemType         ItemType            `json:"item_type"`
	PlatformName     *string             `json:"platform_name,omitempty"`

	// Publishers The entry's publisher credit facts, live from the proposal join; prefill the curation form.
	Publishers *[]string          `json:"publishers,omitempty"`
	Region     string             `json:"region"`
	Status     SubmissionStatus   `json:"status"`
	UpdatedAt  time.Time          `json:"updated_at"`
	UserId     openapi_types.UUID `json:"user_id"`
}

AdminSubmission One queue row: the submission plus the live proposal from the entry join (display_name, item_type, platform_name, region, edition, first_release_date pre-fill the curation form; entries carry no variant - the single edition field is the idiom).

type AdminSubmissionsPage

type AdminSubmissionsPage struct {
	Submissions []AdminSubmission `json:"submissions"`

	// TotalCount Full pending count, beyond this page.
	TotalCount int64 `json:"total_count"`
}

AdminSubmissionsPage defines model for AdminSubmissionsPage.

type BulkUpdateRequest

type BulkUpdateRequest struct {
	AddTagIds    *[]openapi_types.UUID `json:"add_tag_ids,omitempty"`
	EntryIds     []openapi_types.UUID  `json:"entry_ids"`
	RemoveTagIds *[]openapi_types.UUID `json:"remove_tag_ids,omitempty"`
	Status       *EntryStatus          `json:"status,omitempty"`

	// StorageLocation Empty string clears the field; an absent field leaves it untouched (see the operation description).
	StorageLocation *string `json:"storage_location,omitempty"`
}

BulkUpdateRequest Delta applied across the caller's own entries among entry_ids (foreign or unknown ids are silently not counted, same ownership-filtering posture as tag attachment). At least one of add_tag_ids / remove_tag_ids / status / storage_location must be present, else 400. storage_location's clearing rule is the OPPOSITE of the full-replacement update's: here an ABSENT storage_location leaves the field untouched, and an explicit empty string clears it.

type BulkUpdateResult

type BulkUpdateResult struct {
	// UpdatedCount Count of the caller's own entries among entry_ids, whether or not any targeted field actually changed.
	UpdatedCount int `json:"updated_count"`
}

BulkUpdateResult defines model for BulkUpdateResult.

type CatalogPlatform

type CatalogPlatform struct {
	// Aliases Alternate spellings and abbreviations (compare case-insensitively).
	Aliases []string `json:"aliases"`
	IgdbId  int64    `json:"igdb_id"`
	Name    string   `json:"name"`
}

CatalogPlatform One platform-catalog row with its known aliases.

type CatalogProvider

type CatalogProvider string

CatalogProvider defines model for CatalogProvider.

const (
	Igdb          CatalogProvider = "igdb"
	Pricecharting CatalogProvider = "pricecharting"
)

Defines values for CatalogProvider.

func (CatalogProvider) Valid

func (e CatalogProvider) Valid() bool

Valid indicates whether the value is a known member of the CatalogProvider enum.

type CatalogQ

type CatalogQ = string

CatalogQ defines model for catalogQ.

type CommunityMeta

type CommunityMeta struct {
	// CoverUrl User-supplied cover image URL (https, never fetched server-side; the client renders it with a broken-image fallback). Served as the product cover when no provider cover is present; retained after promotion as gap-fill.
	CoverUrl *string `json:"cover_url,omitempty"`

	// Developers Curated developer company names, one per element; served into entry credit snapshots when the provider block carries no developer credits (per-field gap-fill).
	Developers       *[]string           `json:"developers,omitempty"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	PlatformName     *string             `json:"platform_name,omitempty"`

	// Publishers Curated publisher company names; same gap-fill posture as developers.
	Publishers *[]string `json:"publishers,omitempty"`

	// Region Curated entry-vocabulary region fact (open-world; known values ntsc_u, ntsc_j, pal, region_free, korea, brazil, china).
	Region *string `json:"region,omitempty"`
}

CommunityMeta Facts curated at community mint time; retained after promotion as gap-fill (provider blocks win per-field where present).

type CommunityProductSpec

type CommunityProductSpec struct {
	// CoverUrl Optional https cover image URL (validated by shape only, never fetched).
	CoverUrl *string `json:"cover_url,omitempty"`

	// Developers Curated developer company names, one per element.
	Developers *[]string `json:"developers,omitempty"`

	// Edition The entry idiom's single "Edition or variant" note.
	Edition          *string             `json:"edition,omitempty"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	Name             string              `json:"name"`
	PlatformName     *string             `json:"platform_name,omitempty"`

	// Publishers Curated publisher company names, one per element.
	Publishers *[]string `json:"publishers,omitempty"`

	// Region Curated entry-vocabulary region fact; stored under the community facts block (community.region), not the product's top-level region field.
	Region *string  `json:"region,omitempty"`
	Type   ItemType `json:"type"`
}

CommunityProductSpec The curated fields for approve_new; mirrors the enrichment mint request (single edition field, no variant).

type CommunityProductsPage

type CommunityProductsPage struct {
	Products []Product `json:"products"`

	// TotalCount Full count of community products, beyond this page.
	TotalCount int64 `json:"total_count"`
}

CommunityProductsPage defines model for CommunityProductsPage.

type CompanyCredit

type CompanyCredit struct {
	Developer bool   `json:"developer"`
	Name      string `json:"name"`
	Publisher bool   `json:"publisher"`
}

CompanyCredit defines model for CompanyCredit.

type CurrencyCode

type CurrencyCode = string

CurrencyCode defines model for CurrencyCode.

type CurrencySpend

type CurrencySpend struct {
	Currency   string `json:"currency"`
	TotalCents int64  `json:"total_cents"`
}

CurrencySpend defines model for CurrencySpend.

type Cursor

type Cursor = string

Cursor defines model for cursor.

type Dashboard

type Dashboard struct {
	ByItemType map[string]int   `json:"by_item_type"`
	ByPlatform []PlatformCount  `json:"by_platform"`
	ByStatus   map[string]int   `json:"by_status"`
	Pricing    DashboardPricing `json:"pricing"`

	// Spend Sum of price_paid_cents per currency, over entries that record a price.
	Spend        []CurrencySpend `json:"spend"`
	TotalEntries int             `json:"total_entries"`
}

Dashboard defines model for Dashboard.

type DashboardPricing

type DashboardPricing struct {
	// Available False when enrichment was unreachable; total_value_cents is then absent.
	Available bool `json:"available"`

	// ExcludedEntries Entries with pricing_mode disabled.
	ExcludedEntries int    `json:"excluded_entries"`
	PricedEntries   int    `json:"priced_entries"`
	TotalValueCents *int64 `json:"total_value_cents,omitempty"`

	// UnpricedEntries Entries whose effective product is unmatched or lacks a price for their packaging.
	UnpricedEntries int `json:"unpriced_entries"`
}

DashboardPricing defines model for DashboardPricing.

type DismissCandidateRequest

type DismissCandidateRequest struct {
	Provider   CatalogProvider `json:"provider"`
	ProviderId int64           `json:"provider_id"`
}

DismissCandidateRequest defines model for DismissCandidateRequest.

type EntriesDeveloper

type EntriesDeveloper = []string

EntriesDeveloper defines model for entriesDeveloper.

type EntriesItemCondition

type EntriesItemCondition = []ItemCondition

EntriesItemCondition defines model for entriesItemCondition.

type EntriesItemType

type EntriesItemType = []ItemType

EntriesItemType defines model for entriesItemType.

type EntriesPackaging

type EntriesPackaging = []Packaging

EntriesPackaging defines model for entriesPackaging.

type EntriesPublisher

type EntriesPublisher = []string

EntriesPublisher defines model for entriesPublisher.

type EntriesRegion

type EntriesRegion = []string

EntriesRegion defines model for entriesRegion.

type EntriesSort

type EntriesSort string

EntriesSort defines model for entriesSort.

const (
	EntriesSortBacklogRank EntriesSort = "backlog_rank"
	EntriesSortCreatedAt   EntriesSort = "created_at"
	EntriesSortName        EntriesSort = "name"
	EntriesSortPaid        EntriesSort = "paid"
	EntriesSortPurchasedAt EntriesSort = "purchased_at"
	EntriesSortRating      EntriesSort = "rating"
	EntriesSortReleaseDate EntriesSort = "release_date"
	EntriesSortValue       EntriesSort = "value"
)

Defines values for EntriesSort.

func (EntriesSort) Valid

func (e EntriesSort) Valid() bool

Valid indicates whether the value is a known member of the EntriesSort enum.

type EntriesTagId

type EntriesTagId = []openapi_types.UUID

EntriesTagId defines model for entriesTagId.

type Entry

type Entry struct {
	// BacklogRank Present exactly while status is backlog; server-generated.
	BacklogRank  *string        `json:"backlog_rank,omitempty"`
	BoxCondition *ItemCondition `json:"box_condition,omitempty"`

	// CoverUrl Cover art URL. For product-backed entries it is snapshotted from the product at creation (and refreshed on adoption). Custom entries may set their own (https, shape-validated). Absent on hardware and products without art (render a placeholder).
	CoverUrl  *string   `json:"cover_url,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	Currency  string    `json:"currency"`

	// CustomValueCents The user-set market value (USD cents). With pricing_mode custom it IS the entry's value; under any other mode it persists as "last custom price" memory.
	CustomValueCents *int64 `json:"custom_value_cents,omitempty"`

	// CustomValueEnteredCents The custom price exactly as the user typed it, in custom_value_entered_currency minor units (major units x 100, including zero-decimal currencies). Display metadata only: no aggregation reads it; custom_value_cents remains the USD value used everywhere.
	CustomValueEnteredCents *int64 `json:"custom_value_entered_cents,omitempty"`

	// CustomValueEnteredCurrency Currency of custom_value_entered_cents.
	CustomValueEnteredCurrency *string `json:"custom_value_entered_currency,omitempty"`

	// CustomValueSetAt Server-managed: stamped when custom_value_cents is first set or changes value, untouched otherwise. Read-only.
	CustomValueSetAt *time.Time `json:"custom_value_set_at,omitempty"`

	// Developers Developer company names snapshotted for the entry: IGDB credits where the product carries them, community curated lists as gap-fill, or the user's own facts on a custom entry. Absent when no credits are known.
	Developers  *[]string `json:"developers,omitempty"`
	DisplayName string    `json:"display_name"`

	// Edition Per-copy variant note ("first print (glitched rev)", "black edition"): the idiom for variants of cataloged items is an entry on the base product with the variant recorded here.
	Edition          *string             `json:"edition,omitempty"`
	ExternalRef      *string             `json:"external_ref,omitempty"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	HasBox           bool                `json:"has_box"`
	HasManual        bool                `json:"has_manual"`
	Id               openapi_types.UUID  `json:"id"`

	// IgdbGameId The recommendation identity: snapshotted from the entry's own product, or from the proxy target on custom game entries (owning a reproduction of X means playing X).
	IgdbGameId    *int64         `json:"igdb_game_id,omitempty"`
	ItemCondition *ItemCondition `json:"item_condition,omitempty"`
	ItemType      ItemType       `json:"item_type"`

	// LocalizedCoverUrl Region-picked box art URL (server-derived).
	LocalizedCoverUrl *string `json:"localized_cover_url,omitempty"`

	// LocalizedName Region-picked native-script title (server-derived from the entry's region; absent when the region has none).
	LocalizedName *string `json:"localized_name,omitempty"`

	// LocalizedNameTranslit Latin transliteration of localized_name's title (server-derived).
	LocalizedNameTranslit *string        `json:"localized_name_translit,omitempty"`
	ManualCondition       *ItemCondition `json:"manual_condition,omitempty"`
	MediaType             MediaType      `json:"media_type"`
	Notes                 *string        `json:"notes,omitempty"`
	Packaging             Packaging      `json:"packaging"`
	Pinned                bool           `json:"pinned"`

	// Platform The entry's platform: a creation-time snapshot of the product's platform (both fields) on product-backed entries, or a user-supplied platform on custom entries - both fields when picked from the catalog or normalized by the admin lever, name-only for escape-hatch free text. Absent when neither exists.
	Platform         *EntryPlatform      `json:"platform,omitempty"`
	PricePaidCents   *int64              `json:"price_paid_cents,omitempty"`
	PricingMode      PricingMode         `json:"pricing_mode"`
	PricingProductId *openapi_types.UUID `json:"pricing_product_id,omitempty"`

	// ProductId Absent on custom entries.
	ProductId *openapi_types.UUID `json:"product_id,omitempty"`

	// Publishers Publisher company names; same sourcing as developers.
	Publishers    *[]string           `json:"publishers,omitempty"`
	PurchasedAt   *openapi_types.Date `json:"purchased_at,omitempty"`
	PurchasedFrom *string             `json:"purchased_from,omitempty"`
	Rating        *int                `json:"rating,omitempty"`
	Region        string              `json:"region"`

	// RegionMismatchAckAt Null until the owner dismisses the region-mismatch banner; cleared whenever region or product changes.
	RegionMismatchAckAt *time.Time  `json:"region_mismatch_ack_at,omitempty"`
	Source              EntrySource `json:"source"`
	Status              EntryStatus `json:"status"`
	StorageLocation     *string     `json:"storage_location,omitempty"`
	Tags                []TagRef    `json:"tags"`
	UpdatedAt           time.Time   `json:"updated_at"`
	ValueCents          *int64      `json:"value_cents,omitempty"`
}

Entry One physical copy. On product-backed entries the catalog fields (item_type, display_name, platform, first_release_date, igdb_game_id) are immutable creation-time snapshots from the enrichment product and product_id remains the live join key for prices. A CUSTOM entry has no product_id: its display fields are user-owned and editable, platform carries the picked or normalized identity - name-only for escape-hatch free text - when supplied, and igdb_game_id is always absent. value_cents is composed at read time from the effective pricing product and the packaging-matched price field; (or, with pricing_mode custom, taken directly from custom_value_cents, packaging-independent); it is null when pricing_mode is disabled, the product is unmatched, no price exists for the packaging, or enrichment is temporarily unreachable.

type EntryCreate

type EntryCreate struct {
	BoxCondition *ItemCondition `json:"box_condition,omitempty"`

	// CoverUrl Custom entries only; an https cover image URL (validated by shape, never fetched).
	CoverUrl                   *string `json:"cover_url,omitempty"`
	Currency                   *string `json:"currency,omitempty"`
	CustomValueCents           *int64  `json:"custom_value_cents,omitempty"`
	CustomValueEnteredCents    *int64  `json:"custom_value_entered_cents,omitempty"`
	CustomValueEnteredCurrency *string `json:"custom_value_entered_currency,omitempty"`

	// Developers Custom entries only: developer company names, one per element. Ignored on product-backed creation, where the snapshot derives credits from the product.
	Developers *[]string `json:"developers,omitempty"`

	// DisplayName Custom entries only (required there).
	DisplayName *string `json:"display_name,omitempty"`

	// Edition Per-copy variant note; the idiom for variants of cataloged items.
	Edition *string `json:"edition,omitempty"`

	// FirstReleaseDate Custom entries only.
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	HasBox           *bool               `json:"has_box,omitempty"`
	HasManual        *bool               `json:"has_manual,omitempty"`
	ItemCondition    *ItemCondition      `json:"item_condition,omitempty"`

	// ItemType Custom entries only (required there).
	ItemType        *ItemType      `json:"item_type,omitempty"`
	ManualCondition *ItemCondition `json:"manual_condition,omitempty"`

	// MatchProvenance Whose choice the matched product is. Send user only when the add flow's manual match picked the price listing; automated repoints (region edits, the entry rematch) never touch user rows. Not accepted on update - the server stamps user when the narrow product_id re-match arm fires.
	MatchProvenance *EntryCreateMatchProvenance `json:"match_provenance,omitempty"`
	MediaType       *EntryCreateMediaType       `json:"media_type,omitempty"`
	Notes           *string                     `json:"notes,omitempty"`
	Packaging       Packaging                   `json:"packaging"`
	Pinned          *bool                       `json:"pinned,omitempty"`

	// PlatformIgdbId Custom entries only; the canonical platform id from the picker (surfaces the entry in the platform filter).
	PlatformIgdbId *int64 `json:"platform_igdb_id,omitempty"`

	// PlatformName Custom entries only.
	PlatformName     *string             `json:"platform_name,omitempty"`
	PricePaidCents   *int64              `json:"price_paid_cents,omitempty"`
	PricingMode      *PricingMode        `json:"pricing_mode,omitempty"`
	PricingProductId *openapi_types.UUID `json:"pricing_product_id,omitempty"`

	// ProductId Omit for a custom (off-catalog) entry.
	ProductId *openapi_types.UUID `json:"product_id,omitempty"`

	// Publishers Custom entries only; publisher company names, one per element.
	Publishers    *[]string           `json:"publishers,omitempty"`
	PurchasedAt   *openapi_types.Date `json:"purchased_at,omitempty"`
	PurchasedFrom *string             `json:"purchased_from,omitempty"`
	Rating        *int                `json:"rating,omitempty"`

	// Region Entry region. Known values ntsc_u, ntsc_j, pal, region_free, korea, brazil and china are first-class: labeled in the UI, filterable, normalize-lever promotion targets, with release-date chains, availability rows, and localized display snapshots per region (ntsc_u and region_free render the canonical presentation by design). korea, brazil and china have no PriceCharting axis, so they price from base listings as their deliberate proxy. Any other non-empty string is stored verbatim as a display fact and prices like ntsc_u until the value graduates to the known set.
	Region          string                `json:"region"`
	Status          *EntryStatus          `json:"status,omitempty"`
	StorageLocation *string               `json:"storage_location,omitempty"`
	TagIds          *[]openapi_types.UUID `json:"tag_ids,omitempty"`
}

EntryCreate Product-backed: product_id comes from a prior enrichment resolve and the catalog fields are snapshotted server-side (display_name/item_type/platform_name/first_release_date must NOT be sent). Custom (no product_id): display_name and item_type are required, platform_name and first_release_date optional; pricing_mode defaults to disabled and must not be auto. media_type accepts only physical (the column already allows digital: the API widens when platform sync arrives). source is server-set manual. pricing_product_id is required when pricing_mode is proxy; box_condition requires has_box and manual_condition requires has_manual. custom_value_cents is required when pricing_mode is custom.

type EntryCreateMatchProvenance

type EntryCreateMatchProvenance string

EntryCreateMatchProvenance Whose choice the matched product is. Send user only when the add flow's manual match picked the price listing; automated repoints (region edits, the entry rematch) never touch user rows. Not accepted on update - the server stamps user when the narrow product_id re-match arm fires.

const (
	EntryCreateMatchProvenanceAuto EntryCreateMatchProvenance = "auto"
	EntryCreateMatchProvenanceUser EntryCreateMatchProvenance = "user"
)

Defines values for EntryCreateMatchProvenance.

func (EntryCreateMatchProvenance) Valid

func (e EntryCreateMatchProvenance) Valid() bool

Valid indicates whether the value is a known member of the EntryCreateMatchProvenance enum.

type EntryCreateMediaType

type EntryCreateMediaType string

EntryCreateMediaType defines model for EntryCreate.MediaType.

const (
	EntryCreateMediaTypePhysical EntryCreateMediaType = "physical"
)

Defines values for EntryCreateMediaType.

func (EntryCreateMediaType) Valid

func (e EntryCreateMediaType) Valid() bool

Valid indicates whether the value is a known member of the EntryCreateMediaType enum.

type EntryGroup

type EntryGroup struct {
	Entries []Entry `json:"entries"`
	Key     string  `json:"key"`
	Label   string  `json:"label"`
}

EntryGroup defines model for EntryGroup.

type EntryList

type EntryList struct {
	Entries *[]Entry      `json:"entries,omitempty"`
	Groups  *[]EntryGroup `json:"groups,omitempty"`

	// PricingAvailable False when enrichment was unreachable; every value_cents is null.
	PricingAvailable bool `json:"pricing_available"`

	// TotalCount Size of the full filtered set, before pagination.
	TotalCount int `json:"total_count"`
}

EntryList One page of the sorted, filtered sequence. Exactly one of entries/groups is present (groups when group_by was requested, partitioning this page only).

type EntryPlatform

type EntryPlatform struct {
	// IgdbPlatformId Absent on name-only custom entries.
	IgdbPlatformId *int64 `json:"igdb_platform_id,omitempty"`
	Name           string `json:"name"`
}

EntryPlatform The entry's platform: a creation-time snapshot of the product's platform (both fields) on product-backed entries, or a user-supplied platform on custom entries - both fields when picked from the catalog or normalized by the admin lever, name-only for escape-hatch free text. Absent when neither exists.

type EntrySource

type EntrySource string

EntrySource defines model for Entry.Source.

const (
	Epic   EntrySource = "epic"
	Manual EntrySource = "manual"
	Psn    EntrySource = "psn"
	Steam  EntrySource = "steam"
)

Defines values for EntrySource.

func (EntrySource) Valid

func (e EntrySource) Valid() bool

Valid indicates whether the value is a known member of the EntrySource enum.

type EntryStatus

type EntryStatus string

EntryStatus defines model for EntryStatus.

const (
	Backlog   EntryStatus = "backlog"
	Beaten    EntryStatus = "beaten"
	Completed EntryStatus = "completed"
	Dropped   EntryStatus = "dropped"
	Playing   EntryStatus = "playing"
	Shelved   EntryStatus = "shelved"
)

Defines values for EntryStatus.

func (EntryStatus) Valid

func (e EntryStatus) Valid() bool

Valid indicates whether the value is a known member of the EntryStatus enum.

type EntryUpdate

type EntryUpdate struct {
	BoxCondition *ItemCondition `json:"box_condition,omitempty"`

	// CoverUrl Custom entries only; an https cover image URL (validated by shape, never fetched).
	CoverUrl                   *string `json:"cover_url,omitempty"`
	Currency                   *string `json:"currency,omitempty"`
	CustomValueCents           *int64  `json:"custom_value_cents,omitempty"`
	CustomValueEnteredCents    *int64  `json:"custom_value_entered_cents,omitempty"`
	CustomValueEnteredCurrency *string `json:"custom_value_entered_currency,omitempty"`

	// Developers Custom entries only; developer company names, one per element (full replacement).
	Developers *[]string `json:"developers,omitempty"`

	// DisplayName Custom entries only (required there).
	DisplayName *string `json:"display_name,omitempty"`

	// Edition Per-copy variant note; the idiom for variants of cataloged items.
	Edition *string `json:"edition,omitempty"`

	// FirstReleaseDate Custom entries only.
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	HasBox           *bool               `json:"has_box,omitempty"`
	HasManual        *bool               `json:"has_manual,omitempty"`
	ItemCondition    *ItemCondition      `json:"item_condition,omitempty"`
	ManualCondition  *ItemCondition      `json:"manual_condition,omitempty"`
	Notes            *string             `json:"notes,omitempty"`
	Packaging        Packaging           `json:"packaging"`
	Pinned           bool                `json:"pinned"`

	// PlatformIgdbId Custom entries only; the canonical platform id from the picker.
	PlatformIgdbId *int64 `json:"platform_igdb_id,omitempty"`

	// PlatformName Custom entries only.
	PlatformName     *string             `json:"platform_name,omitempty"`
	PricePaidCents   *int64              `json:"price_paid_cents,omitempty"`
	PricingMode      PricingMode         `json:"pricing_mode"`
	PricingProductId *openapi_types.UUID `json:"pricing_product_id,omitempty"`

	// ProductId Narrow re-match. Accepted only when the entry is product-backed with pricing_mode auto, its current product is a game with no price mapping, and the new product is a game of the same family (same igdb game and platform); the same id as the entry already has is a no-op. Anything else answers 400 code invalid_product_change; enrichment unreachable answers 502 code enrichment_unavailable and leaves the entry unchanged. Snapshotted display fields stay as they are.
	ProductId *openapi_types.UUID `json:"product_id,omitempty"`

	// Publishers Custom entries only; publisher company names, one per element (full replacement).
	Publishers    *[]string           `json:"publishers,omitempty"`
	PurchasedAt   *openapi_types.Date `json:"purchased_at,omitempty"`
	PurchasedFrom *string             `json:"purchased_from,omitempty"`
	Rating        *int                `json:"rating,omitempty"`

	// Region Entry region. Known values ntsc_u, ntsc_j, pal, region_free, korea, brazil and china are first-class: labeled in the UI, filterable, normalize-lever promotion targets, with release-date chains, availability rows, and localized display snapshots per region (ntsc_u and region_free render the canonical presentation by design). korea, brazil and china have no PriceCharting axis, so they price from base listings as their deliberate proxy. Any other non-empty string is stored verbatim as a display fact and prices like ntsc_u until the value graduates to the known set. On an auto-provenance game entry, a region change repoints the entry to the sibling catalog product whose listing prices that region; snapshotted display fields re-derive from it.
	Region          string                `json:"region"`
	Status          EntryStatus           `json:"status"`
	StorageLocation *string               `json:"storage_location,omitempty"`
	TagIds          *[]openapi_types.UUID `json:"tag_ids,omitempty"`
}

EntryUpdate Full replacement of the mutable state; an absent optional field is cleared (the edit form holds the whole entry). media_type and custom-ness are immutable. product_id accepts one narrow change - re-matching an auto-priced entry off an unmatched game product onto a product of the same game and platform (see the field description); anything else answers 400 code invalid_product_change. That re-match stamps match_provenance=user; automated region repoints only ever run on match_provenance=auto entries. On custom entries display_name is required and platform_name/first_release_date replace like any optional field; on product-backed entries all three are rejected. tag_ids replaces the tag set; absent means no tags. custom_value_cents is required when pricing_mode is custom.

type FXRates

type FXRates struct {
	// Base Always USD.
	Base string `json:"base"`

	// Date Upstream snapshot date (YYYY-MM-DD), not the fetch time.
	Date string `json:"date"`

	// Rates Target-units-per-USD by ISO 4217 code. USD itself is omitted (it is the base; conversion short-circuits).
	Rates map[string]float64 `json:"rates"`
}

FXRates defines model for FXRates.

type GroupBy

type GroupBy string

GroupBy defines model for groupBy.

const (
	GroupByItemType GroupBy = "item_type"
	GroupByLocation GroupBy = "location"
	GroupByPlatform GroupBy = "platform"
	GroupByStatus   GroupBy = "status"
	GroupByTag      GroupBy = "tag"
)

Defines values for GroupBy.

func (GroupBy) Valid

func (e GroupBy) Valid() bool

Valid indicates whether the value is a known member of the GroupBy enum.

type Handle

type Handle = string

Handle defines model for Handle.

type Identities

type Identities struct {
	Identities []Identity `json:"identities"`
}

Identities defines model for Identities.

type Identity

type Identity struct {
	CreatedAt time.Time `json:"created_at"`

	// Email Informational; the email the provider asserted when this identity last signed in.
	Email    *string            `json:"email,omitempty"`
	Id       openapi_types.UUID `json:"id"`
	Provider string             `json:"provider"`
}

Identity defines model for Identity.

type IgdbMeta

type IgdbMeta struct {
	Companies []CompanyCredit `json:"companies"`
	CoverUrl  *string         `json:"cover_url,omitempty"`
	FetchedAt time.Time       `json:"fetched_at"`

	// FirstReleaseDate Earliest date for the product's platform; the game-level first release when IGDB lists no dated rows for the platform.
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	Franchises       []string            `json:"franchises"`
	GameId           int64               `json:"game_id"`
	Genres           []string            `json:"genres"`

	// Localizations Per-region presentations; absent both on projections predating the feature and on games with no localizations at all (an empty slice is omitted rather than sent).
	Localizations *[]Localization `json:"localizations,omitempty"`
	Name          string          `json:"name"`

	// ReleaseDates Per-region release dates for the product's platform, the earliest concrete date per region. Region values are canonical IGDB names (europe, north_america, australia, new_zealand, japan, china, asia, worldwide, korea, brazil). JP twin platforms fold into their sibling (SNES/Super Famicom, NES/Famicom).
	ReleaseDates *[]ReleaseDate `json:"release_dates,omitempty"`
	SimilarGames []int64        `json:"similar_games"`
	Themes       []string       `json:"themes"`
}

IgdbMeta Projection of the raw IGDB payload held in igdb_raw; refreshed on its own cadence.

type ItemCondition

type ItemCondition string

ItemCondition defines model for ItemCondition.

const (
	Acceptable ItemCondition = "acceptable"
	Good       ItemCondition = "good"
	Mint       ItemCondition = "mint"
	NearMint   ItemCondition = "near_mint"
	Poor       ItemCondition = "poor"
	VeryGood   ItemCondition = "very_good"
)

Defines values for ItemCondition.

func (ItemCondition) Valid

func (e ItemCondition) Valid() bool

Valid indicates whether the value is a known member of the ItemCondition enum.

type ItemType

type ItemType string

ItemType defines model for ItemType.

const (
	ItemTypeAccessory ItemType = "accessory"
	ItemTypeConsole   ItemType = "console"
	ItemTypeGame      ItemType = "game"
)

Defines values for ItemType.

func (ItemType) Valid

func (e ItemType) Valid() bool

Valid indicates whether the value is a known member of the ItemType enum.

type LandingPage

type LandingPage string

LandingPage defines model for LandingPage.

const (
	Collection LandingPage = "collection"
	Explore    LandingPage = "explore"
	Feed       LandingPage = "feed"
)

Defines values for LandingPage.

func (LandingPage) Valid

func (e LandingPage) Valid() bool

Valid indicates whether the value is a known member of the LandingPage enum.

type LibraryEntry

type LibraryEntry struct {
	IgdbGameId int64 `json:"igdb_game_id"`
	Rating     *int  `json:"rating,omitempty"`

	// Status The caller's own status vocabulary; scoring only distinguishes "dropped".
	Status *string `json:"status,omitempty"`
}

LibraryEntry defines model for LibraryEntry.

type Localization

type Localization struct {
	CoverUrl *string `json:"cover_url,omitempty"`
	Name     *string `json:"name,omitempty"`
	Region   string  `json:"region"`
	Translit *string `json:"translit,omitempty"`
}

Localization One region's presentation of the game, merged from IGDB game_localizations and tagged alternative names. region is an IGDB region identifier served verbatim (ja-JP, EU, ko-KR, zh-CN, zh-TW, pt-BR; open-world - new identifiers pass through). name is the native-script title, translit its latin transliteration, cover_url the region's own box art; each is independently optional (rows are sparse - readers fall back per field).

type MappingRequest

type MappingRequest struct {
	// PcProductId Null clears the mapping (the product becomes unmatched and held).
	PcProductId *int64 `json:"pc_product_id"`
}

MappingRequest defines model for MappingRequest.

type MediaType

type MediaType string

MediaType defines model for MediaType.

const (
	MediaTypeDigital  MediaType = "digital"
	MediaTypePhysical MediaType = "physical"
)

Defines values for MediaType.

func (MediaType) Valid

func (e MediaType) Valid() bool

Valid indicates whether the value is a known member of the MediaType enum.

type NormalizeResult

type NormalizeResult struct {
	Normalized int `json:"normalized"`
	Scanned    int `json:"scanned"`
	Skipped    int `json:"skipped"`
}

NormalizeResult defines model for NormalizeResult.

type Offset

type Offset = int

Offset defines model for offset.

type Order

type Order string

Order defines model for order.

const (
	Asc  Order = "asc"
	Desc Order = "desc"
)

Defines values for Order.

func (Order) Valid

func (e Order) Valid() bool

Valid indicates whether the value is a known member of the Order enum.

type Packaging

type Packaging string

Packaging defines model for Packaging.

const (
	Cib    Packaging = "cib"
	Loose  Packaging = "loose"
	Sealed Packaging = "sealed"
)

Defines values for Packaging.

func (Packaging) Valid

func (e Packaging) Valid() bool

Valid indicates whether the value is a known member of the Packaging enum.

type PlatformCatalog

type PlatformCatalog struct {
	Platforms []CatalogPlatform `json:"platforms"`
}

PlatformCatalog defines model for PlatformCatalog.

type PlatformCount

type PlatformCount struct {
	Count int    `json:"count"`
	Name  string `json:"name"`
}

PlatformCount defines model for PlatformCount.

type PlatformId

type PlatformId = []int64

PlatformId defines model for platformId.

type PlatformRef

type PlatformRef struct {
	IgdbPlatformId int64 `json:"igdb_platform_id"`

	// LogoUrl IGDB platform logo; the display fallback for products without cover art.
	LogoUrl *string `json:"logo_url,omitempty"`
	Name    string  `json:"name"`

	// ReleaseRegions Distinct canonical IGDB release regions for this game on this platform (japan, north_america, europe, ...), ordered by that region's earliest release date on the platform (dateless rows last, then alphabetical). Platform-exact: JP twin platforms are NOT folded here (a Famicom row stays on Famicom), unlike the product projection's date fold - the physical release is platform-specific. Populated on game search results only; absent on product payloads and hardware results.
	ReleaseRegions *[]ReleaseRegion `json:"release_regions,omitempty"`
}

PlatformRef defines model for PlatformRef.

type PricechartingMeta

type PricechartingMeta struct {
	AsOf            time.Time `json:"as_of"`
	CibCents        *int64    `json:"cib_cents,omitempty"`
	ConsoleName     string    `json:"console_name"`
	LooseCents      *int64    `json:"loose_cents,omitempty"`
	MatchConfidence float64   `json:"match_confidence"`
	NewCents        *int64    `json:"new_cents,omitempty"`
	PcName          string    `json:"pc_name"`
	PcProductId     int64     `json:"pc_product_id"`
	Verified        bool      `json:"verified"`
}

PricechartingMeta The PriceCharting mapping and current prices; refreshed daily. Absent from a product when no candidate cleared the match confidence threshold (no guessing) and the mapping has not been corrected by an admin.

type PricingMode

type PricingMode string

PricingMode defines model for PricingMode.

const (
	PricingModeAuto     PricingMode = "auto"
	PricingModeCustom   PricingMode = "custom"
	PricingModeDisabled PricingMode = "disabled"
	PricingModeProxy    PricingMode = "proxy"
)

Defines values for PricingMode.

func (PricingMode) Valid

func (e PricingMode) Valid() bool

Valid indicates whether the value is a known member of the PricingMode enum.

type Problem

type Problem struct {
	// Code The full house code vocabulary across every service (Problem is shared, and the bff relays upstream codes verbatim).
	Code     *ProblemCode `json:"code,omitempty"`
	Detail   *string      `json:"detail,omitempty"`
	Instance *string      `json:"instance,omitempty"`
	Status   int          `json:"status"`
	Title    string       `json:"title"`
	Type     string       `json:"type"`
}

Problem defines model for Problem.

type ProblemCode

type ProblemCode string

ProblemCode The full house code vocabulary across every service (Problem is shared, and the bff relays upstream codes verbatim).

const (
	CapExceeded               ProblemCode = "cap_exceeded"
	CommentNotFound           ProblemCode = "comment_not_found"
	ConflictingOrder          ProblemCode = "conflicting_order"
	EmailUnverified           ProblemCode = "email_unverified"
	EnrichmentUnavailable     ProblemCode = "enrichment_unavailable"
	EntryNotCustom            ProblemCode = "entry_not_custom"
	EntryNotFound             ProblemCode = "entry_not_found"
	Forbidden                 ProblemCode = "forbidden"
	HandleCooldown            ProblemCode = "handle_cooldown"
	HandleTaken               ProblemCode = "handle_taken"
	IdentityAlreadyLinked     ProblemCode = "identity_already_linked"
	IdentityNotFound          ProblemCode = "identity_not_found"
	IdentityTaken             ProblemCode = "identity_taken"
	Internal                  ProblemCode = "internal"
	InvalidBody               ProblemCode = "invalid_body"
	InvalidCallback           ProblemCode = "invalid_callback"
	InvalidInternalToken      ProblemCode = "invalid_internal_token"
	InvalidParam              ProblemCode = "invalid_param"
	InvalidProductChange      ProblemCode = "invalid_product_change"
	InvalidRefresh            ProblemCode = "invalid_refresh"
	InvalidState              ProblemCode = "invalid_state"
	InvalidToken              ProblemCode = "invalid_token"
	LastIdentity              ProblemCode = "last_identity"
	LinkEmailUnverified       ProblemCode = "link_email_unverified"
	LinkFailed                ProblemCode = "link_failed"
	MissingToken              ProblemCode = "missing_token"
	NotFound                  ProblemCode = "not_found"
	NotInBacklog              ProblemCode = "not_in_backlog"
	NotReady                  ProblemCode = "not_ready"
	OriginForbidden           ProblemCode = "origin_forbidden"
	ProductMatched            ProblemCode = "product_matched"
	ProductNotCommunity       ProblemCode = "product_not_community"
	ProductNotFound           ProblemCode = "product_not_found"
	ProductNotProvider        ProblemCode = "product_not_provider"
	ProductReferenced         ProblemCode = "product_referenced"
	ProfileNotFound           ProblemCode = "profile_not_found"
	ProviderError             ProblemCode = "provider_error"
	RefreshInProgress         ProblemCode = "refresh_in_progress"
	RefreshReused             ProblemCode = "refresh_reused"
	RematchInProgress         ProblemCode = "rematch_in_progress"
	SelfFollow                ProblemCode = "self_follow"
	ShelfNotFound             ProblemCode = "shelf_not_found"
	SubmissionNotFound        ProblemCode = "submission_not_found"
	SubmissionPending         ProblemCode = "submission_pending"
	SubmissionRateLimited     ProblemCode = "submission_rate_limited"
	SubmissionResolved        ProblemCode = "submission_resolved"
	TagCapExceeded            ProblemCode = "tag_cap_exceeded"
	TagExists                 ProblemCode = "tag_exists"
	TagNotFound               ProblemCode = "tag_not_found"
	TooManyPendingSubmissions ProblemCode = "too_many_pending_submissions"
	Unauthenticated           ProblemCode = "unauthenticated"
	UnknownFixture            ProblemCode = "unknown_fixture"
	UnknownGame               ProblemCode = "unknown_game"
	UnknownPcProduct          ProblemCode = "unknown_pc_product"
	UnknownPricingProduct     ProblemCode = "unknown_pricing_product"
	UnknownProduct            ProblemCode = "unknown_product"
	UnknownProvider           ProblemCode = "unknown_provider"
	UpstreamError             ProblemCode = "upstream_error"
	UpstreamUnavailable       ProblemCode = "upstream_unavailable"
	UserNotFound              ProblemCode = "user_not_found"
	UserServiceError          ProblemCode = "user_service_error"
	UserUnavailable           ProblemCode = "user_unavailable"
	ViewExists                ProblemCode = "view_exists"
	ViewNotFound              ProblemCode = "view_not_found"
)

Defines values for ProblemCode.

func (ProblemCode) Valid

func (e ProblemCode) Valid() bool

Valid indicates whether the value is a known member of the ProblemCode enum.

type Product

type Product struct {
	// Community Facts curated at community mint time; retained after promotion as gap-fill (provider blocks win per-field where present).
	Community *CommunityMeta     `json:"community,omitempty"`
	CreatedAt time.Time          `json:"created_at"`
	Edition   *string            `json:"edition,omitempty"`
	Id        openapi_types.UUID `json:"id"`

	// Igdb Projection of the raw IGDB payload held in igdb_raw; refreshed on its own cadence.
	Igdb *IgdbMeta `json:"igdb,omitempty"`

	// MatchHold Present true when an admin clear holds this product's mapping against a future automated match (resolve, or the entry-side re-match).
	MatchHold *bool  `json:"match_hold,omitempty"`
	Name      string `json:"name"`

	// Origin Emitted only for admin-minted community products (absent means provider-identified). Community products live outside the provider identity indexes; their curated name is their identity.
	Origin   *ProductOrigin `json:"origin,omitempty"`
	Platform *PlatformRef   `json:"platform,omitempty"`

	// Pricecharting The PriceCharting mapping and current prices; refreshed daily. Absent from a product when no candidate cleared the match confidence threshold (no guessing) and the mapping has not been corrected by an admin.
	Pricecharting *PricechartingMeta `json:"pricecharting,omitempty"`

	// Region Provider hardware identity fact; community products carry their region under community.region instead.
	Region    *string     `json:"region,omitempty"`
	Type      ProductType `json:"type"`
	UpdatedAt time.Time   `json:"updated_at"`
	Variant   *string     `json:"variant,omitempty"`
}

Product defines model for Product.

type ProductOrigin

type ProductOrigin string

ProductOrigin defines model for ProductOrigin.

const (
	Community ProductOrigin = "community"
)

Defines values for ProductOrigin.

func (ProductOrigin) Valid

func (e ProductOrigin) Valid() bool

Valid indicates whether the value is a known member of the ProductOrigin enum.

type ProductType

type ProductType string

ProductType defines model for ProductType.

const (
	ProductTypeAccessory ProductType = "accessory"
	ProductTypeConsole   ProductType = "console"
	ProductTypeGame      ProductType = "game"
	ProductTypePcListing ProductType = "pc_listing"
)

Defines values for ProductType.

func (ProductType) Valid

func (e ProductType) Valid() bool

Valid indicates whether the value is a known member of the ProductType enum.

type ProfileCard

type ProfileCard struct {
	AvatarUrl         *string            `json:"avatar_url,omitempty"`
	Handle            Handle             `json:"handle"`
	ProfileVisibility Visibility         `json:"profile_visibility"`
	UserId            openapi_types.UUID `json:"user_id"`
}

ProfileCard The cross-user projection of a user. Never email, never roles.

type ProfileSocialSummary

type ProfileSocialSummary struct {
	FollowerCount  int  `json:"follower_count"`
	FollowingCount int  `json:"following_count"`
	ViewerFollows  bool `json:"viewer_follows"`
}

ProfileSocialSummary defines model for ProfileSocialSummary.

type PromoteCandidate

type PromoteCandidate struct {
	FoundAt    time.Time       `json:"found_at"`
	Name       string          `json:"name"`
	Provider   CatalogProvider `json:"provider"`
	ProviderId int64           `json:"provider_id"`
	Score      float64         `json:"score"`
}

PromoteCandidate defines model for PromoteCandidate.

type PromoteCandidateProduct

type PromoteCandidateProduct struct {
	Candidates []PromoteCandidate `json:"candidates"`
	Product    Product            `json:"product"`
}

PromoteCandidateProduct defines model for PromoteCandidateProduct.

type PromoteCandidatesPage

type PromoteCandidatesPage struct {
	Products []PromoteCandidateProduct `json:"products"`

	// TotalCount Full count of flagged community products.
	TotalCount int64 `json:"total_count"`
}

PromoteCandidatesPage defines model for PromoteCandidatesPage.

type PromoteRequest

type PromoteRequest struct {
	IgdbGameId     *int64 `json:"igdb_game_id,omitempty"`
	PcProductId    *int64 `json:"pc_product_id,omitempty"`
	PlatformIgdbId *int64 `json:"platform_igdb_id,omitempty"`
}

PromoteRequest Provider identity for an in-place promotion. type game products require igdb_game_id + platform_igdb_id and accept an optional pc_product_id (the listing can also arrive later via the mapping fix, once provider); console and accessory products require pc_product_id. The identity the product re-enters the index with completes with the doc's stored region/edition/variant.

type Providers

type Providers struct {
	// Providers Subset of: google, twitch, dev
	Providers []string `json:"providers"`
}

Providers defines model for Providers.

type Recommendation

type Recommendation struct {
	CoverUrl         *string             `json:"cover_url,omitempty"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	Genres           []string            `json:"genres"`
	IgdbGameId       int64               `json:"igdb_game_id"`
	Name             string              `json:"name"`
	Score            float64             `json:"score"`
}

Recommendation defines model for Recommendation.

type RefreshAccepted

type RefreshAccepted struct {
	Status AcceptedStatus `json:"status"`
}

RefreshAccepted defines model for RefreshAccepted.

type ReleaseDate

type ReleaseDate struct {
	Date   openapi_types.Date `json:"date"`
	Region ReleaseRegion      `json:"region"`
}

ReleaseDate defines model for ReleaseDate.

type ReleaseRegion

type ReleaseRegion string

ReleaseRegion defines model for ReleaseRegion.

const (
	Asia         ReleaseRegion = "asia"
	Australia    ReleaseRegion = "australia"
	Brazil       ReleaseRegion = "brazil"
	China        ReleaseRegion = "china"
	Europe       ReleaseRegion = "europe"
	Japan        ReleaseRegion = "japan"
	Korea        ReleaseRegion = "korea"
	NewZealand   ReleaseRegion = "new_zealand"
	NorthAmerica ReleaseRegion = "north_america"
	Worldwide    ReleaseRegion = "worldwide"
)

Defines values for ReleaseRegion.

func (ReleaseRegion) Valid

func (e ReleaseRegion) Valid() bool

Valid indicates whether the value is a known member of the ReleaseRegion enum.

type RematchAccepted

type RematchAccepted struct {
	Status AcceptedStatus `json:"status"`
}

RematchAccepted defines model for RematchAccepted.

type ReorderRequest

type ReorderRequest struct {
	AfterId  *openapi_types.UUID `json:"after_id,omitempty"`
	BeforeId *openapi_types.UUID `json:"before_id,omitempty"`
}

ReorderRequest Neighbor entry ids around the drop slot; null marks a list edge. Both null is invalid.

type ResnapshotResult

type ResnapshotResult struct {
	EntriesUpdated int `json:"entries_updated"`
	ProductsFailed int `json:"products_failed"`
	ProductsSeen   int `json:"products_seen"`
}

ResnapshotResult defines model for ResnapshotResult.

type ResolveRequest

type ResolveRequest struct {
	Edition        *string `json:"edition,omitempty"`
	IgdbGameId     *int64  `json:"igdb_game_id,omitempty"`
	MatchHint      *string `json:"match_hint,omitempty"`
	PcProductId    *int64  `json:"pc_product_id,omitempty"`
	PlatformIgdbId *int64  `json:"platform_igdb_id,omitempty"`

	// Region For console/accessory: part of hardware identity, distinguishing physical variants. For game: a matching input only - the entry region (ntsc_u, ntsc_j, pal, region_free, korea, brazil, china) steers which PriceCharting listing auto-match lands on (JP and PAL listings live under region-prefixed or JP-named console axes; korea, brazil and china have no provider axis and match like ntsc_u) and is never stored on the product; ignored when pc_product_id is present; unknown values behave like ntsc_u. Ignored for pc_listing.
	Region  *string     `json:"region,omitempty"`
	Type    ProductType `json:"type"`
	Variant *string     `json:"variant,omitempty"`
}

ResolveRequest type game requires igdb_game_id + platform_igdb_id (the platform must be one the game released on). Game identity is listing-keyed - (game, platform, PriceCharting listing) - so edition/variant on a game resolve are ignored (entry-level facts, like pc_listing); region is a matching input only (see the region property) and never joins identity. Without pc_product_id the resolve auto-matches by the game name (region-steered) through the shared listing-search cache and lands on the winning listing's product; below the confidence threshold, or with the provider down, it lands on the game+platform's single unmatched product instead - never guessed. Optional match_hint (game only, ignored elsewhere) reweights the scoring toward variant text without changing the search query; a hint nothing matches makes the resolve conservative (unmatched). With pc_product_id (a manual match: the exact listing the user chose) auto-match is skipped and the resolve finds or mints the product carrying that listing (match_confidence 1.0, verified false); unknown id answers 404 unknown_pc_product, provider failure 502 upstream_unavailable. Resolves never touch an existing product's mapping; corrections stay on the admin mapping endpoint. console/accessory require pc_product_id; region/edition/variant distinguish physical variants and are part of hardware identity. type pc_listing requires pc_product_id and mints a price-anchor product for that exact listing; region/edition/variant are ignored (the listing IS the exact variant).

type Role

type Role string

Role defines model for Role.

const (
	RoleAdmin Role = "admin"
	RoleUser  Role = "user"
)

Defines values for Role.

func (Role) Valid

func (e Role) Valid() bool

Valid indicates whether the value is a known member of the Role enum.

type SavedView

type SavedView struct {
	CreatedAt time.Time              `json:"created_at"`
	Id        openapi_types.UUID     `json:"id"`
	Name      string                 `json:"name"`
	Params    map[string]interface{} `json:"params"`

	// PublishedAt Stamped on each transition into listed.
	PublishedAt *time.Time `json:"published_at,omitempty"`

	// Slug URL slug derived from the name (underscore transform); unique per user on its folded key.
	Slug       string     `json:"slug"`
	UpdatedAt  time.Time  `json:"updated_at"`
	Visibility Visibility `json:"visibility"`
}

SavedView defines model for SavedView.

type ScoreResponse

type ScoreResponse struct {
	// Degraded True when candidate metadata fetches failed and some candidates were skipped.
	Degraded        bool             `json:"degraded"`
	Recommendations []Recommendation `json:"recommendations"`
}

ScoreResponse defines model for ScoreResponse.

type SearchResult

type SearchResult struct {
	Category    *string `json:"category,omitempty"`
	CibCents    *int64  `json:"cib_cents,omitempty"`
	ConsoleName *string `json:"console_name,omitempty"`
	CoverUrl    *string `json:"cover_url,omitempty"`

	// Developers Community rows only - the curated developer names, for based-add prefill.
	Developers       *[]string           `json:"developers,omitempty"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	IgdbGameId       *int64              `json:"igdb_game_id,omitempty"`
	ItemType         *ItemType           `json:"item_type,omitempty"`

	// Localizations Per-region presentations of a game result (games only).
	Localizations *[]Localization `json:"localizations,omitempty"`
	LooseCents    *int64          `json:"loose_cents,omitempty"`

	// MatchedRegion Set when the query matched a region's localized name or transliteration rather than the canonical name: that bundle's region identifier. Clients may present the region's data and preselect a matching entry region. Absent on canonical-name matches, hardware, pc_listing, and community results.
	MatchedRegion *string `json:"matched_region,omitempty"`
	Name          string  `json:"name"`
	NewCents      *int64  `json:"new_cents,omitempty"`

	// Origin Marks an interleaved community result (admin-minted, anchor-less); absent on provider results. Community results carry product_id + item_type + platform_name for the pick, community.cover_url as cover_url, and community.region as region. They are scored against the query by name similarity and merged into results by descending score (a provider result precedes a community result of equal score), capped at 10, for game and hardware searches only (never pc_listing). The provider cache stores provider results only - community items attach fresh on every search.
	Origin       *ProductOrigin      `json:"origin,omitempty"`
	PcProductId  *int64              `json:"pc_product_id,omitempty"`
	PlatformName *string             `json:"platform_name,omitempty"`
	Platforms    *[]PlatformRef      `json:"platforms,omitempty"`
	ProductId    *openapi_types.UUID `json:"product_id,omitempty"`

	// Publishers Community rows only - the curated publisher names, for based-add prefill.
	Publishers *[]string `json:"publishers,omitempty"`

	// Region Community rows only - the community facts region, entry vocabulary.
	Region *string          `json:"region,omitempty"`
	Type   SearchResultType `json:"type"`
}

SearchResult Flat result with a type discriminator. Game results carry the igdb_* fields; hardware results carry the pc_* fields plus the PriceCharting category (Systems, Controllers, Accessories). pc_listing results carry the pc_* fields, the PriceCharting category (empty when the provider lists none), and the standard per-listing loose/cib/new prices so variant prints are tellable apart.

type SearchResultType

type SearchResultType string

SearchResultType defines model for SearchResultType.

const (
	SearchResultTypeGame      SearchResultType = "game"
	SearchResultTypeHardware  SearchResultType = "hardware"
	SearchResultTypePcListing SearchResultType = "pc_listing"
)

Defines values for SearchResultType.

func (SearchResultType) Valid

func (e SearchResultType) Valid() bool

Valid indicates whether the value is a known member of the SearchResultType enum.

type SearchResults

type SearchResults struct {
	// Degraded True when the provider was unreachable and the local catalog answered instead.
	Degraded bool           `json:"degraded"`
	Results  []SearchResult `json:"results"`
}

SearchResults defines model for SearchResults.

type SharedEntry

type SharedEntry struct {
	BoxCondition     *ItemCondition      `json:"box_condition,omitempty"`
	CoverUrl         *string             `json:"cover_url,omitempty"`
	CreatedAt        time.Time           `json:"created_at"`
	Developers       *[]string           `json:"developers,omitempty"`
	DisplayName      string              `json:"display_name"`
	Edition          *string             `json:"edition,omitempty"`
	FirstReleaseDate *openapi_types.Date `json:"first_release_date,omitempty"`
	HasBox           bool                `json:"has_box"`
	HasManual        bool                `json:"has_manual"`
	Id               openapi_types.UUID  `json:"id"`
	IgdbGameId       *int64              `json:"igdb_game_id,omitempty"`
	ItemCondition    *ItemCondition      `json:"item_condition,omitempty"`
	ItemType         ItemType            `json:"item_type"`

	// LocalizedCoverUrl Region-picked box art URL (server-derived).
	LocalizedCoverUrl *string `json:"localized_cover_url,omitempty"`

	// LocalizedName Region-picked native-script title (server-derived from the entry's region; absent when the region has none).
	LocalizedName *string `json:"localized_name,omitempty"`

	// LocalizedNameTranslit Latin transliteration of localized_name's title (server-derived).
	LocalizedNameTranslit *string        `json:"localized_name_translit,omitempty"`
	ManualCondition       *ItemCondition `json:"manual_condition,omitempty"`
	MediaType             MediaType      `json:"media_type"`
	Packaging             Packaging      `json:"packaging"`
	Pinned                bool           `json:"pinned"`

	// Platform The entry's platform: a creation-time snapshot of the product's platform (both fields) on product-backed entries, or a user-supplied platform on custom entries - both fields when picked from the catalog or normalized by the admin lever, name-only for escape-hatch free text. Absent when neither exists.
	Platform   *EntryPlatform      `json:"platform,omitempty"`
	ProductId  *openapi_types.UUID `json:"product_id,omitempty"`
	Publishers *[]string           `json:"publishers,omitempty"`
	Region     string              `json:"region"`
	Tags       []TagRef            `json:"tags"`
}

SharedEntry The cross-user entry projection - a strict whitelist. No money fields (price paid, values, currency, purchase provenance, pricing mode) and no personal fields (status, rating, notes, location, backlog rank, external refs) may ever be added here without a deliberate privacy decision.

type SharedEntryGroup

type SharedEntryGroup struct {
	Entries []SharedEntry `json:"entries"`
	Key     string        `json:"key"`
	Label   string        `json:"label"`
}

SharedEntryGroup defines model for SharedEntryGroup.

type SharedEntryList

type SharedEntryList struct {
	Entries    *[]SharedEntry      `json:"entries,omitempty"`
	Groups     *[]SharedEntryGroup `json:"groups,omitempty"`
	TotalCount int                 `json:"total_count"`
}

SharedEntryList Exactly one of entries/groups is present (groups when the stored params group).

type ShelfSocialSummary

type ShelfSocialSummary struct {
	// CommentCount Live comments only.
	CommentCount int                `json:"comment_count"`
	LikeCount    int                `json:"like_count"`
	ShelfId      openapi_types.UUID `json:"shelf_id"`
	ViewerLikes  bool               `json:"viewer_likes"`
}

ShelfSocialSummary defines model for ShelfSocialSummary.

type StatusFilter

type StatusFilter = []EntryStatus

StatusFilter defines model for statusFilter.

type Submission

type Submission struct {
	CreatedAt    time.Time           `json:"created_at"`
	EntryId      openapi_types.UUID  `json:"entry_id"`
	Id           openapi_types.UUID  `json:"id"`
	ProductId    *openapi_types.UUID `json:"product_id,omitempty"`
	RejectReason *string             `json:"reject_reason,omitempty"`

	// ResolutionAckAt When the submitter acknowledged an approved verdict (closed the approval banner). Absent until acknowledged.
	ResolutionAckAt *time.Time       `json:"resolution_ack_at,omitempty"`
	ReviewedAt      *time.Time       `json:"reviewed_at,omitempty"`
	Status          SubmissionStatus `json:"status"`
	UpdatedAt       time.Time        `json:"updated_at"`
}

Submission One catalog-submission lifecycle row for an entry. Rows persist as history (rejected and cancelled included; the rolling creation cap counts every attempt); deleting the entry removes them with it. product_id is the verdict's resolved product - recorded before adoption so an approve_new retry never mints twice.

type SubmissionStatus

type SubmissionStatus string

SubmissionStatus defines model for SubmissionStatus.

const (
	Approved  SubmissionStatus = "approved"
	Cancelled SubmissionStatus = "cancelled"
	Pending   SubmissionStatus = "pending"
	Rejected  SubmissionStatus = "rejected"
)

Defines values for SubmissionStatus.

func (SubmissionStatus) Valid

func (e SubmissionStatus) Valid() bool

Valid indicates whether the value is a known member of the SubmissionStatus enum.

type Tab

type Tab string

Tab defines model for tab.

const (
	Following Tab = "following"
	You       Tab = "you"
)

Defines values for Tab.

func (Tab) Valid

func (e Tab) Valid() bool

Valid indicates whether the value is a known member of the Tab enum.

type Tag

type Tag struct {
	EntryCount int                `json:"entry_count"`
	Id         openapi_types.UUID `json:"id"`
	Name       string             `json:"name"`
}

Tag defines model for Tag.

type TagCreate

type TagCreate struct {
	Name string `json:"name"`
}

TagCreate defines model for TagCreate.

type TagRef

type TagRef struct {
	Id   openapi_types.UUID `json:"id"`
	Name string             `json:"name"`
}

TagRef A tag as embedded on an entry (no usage count).

type UnmatchedProductsPage

type UnmatchedProductsPage struct {
	Products []Product `json:"products"`

	// TotalCount Full count of unmatched products, beyond this page.
	TotalCount int64 `json:"total_count"`
}

UnmatchedProductsPage defines model for UnmatchedProductsPage.

type UserSearchQ

type UserSearchQ = string

UserSearchQ defines model for userSearchQ.

type ValueHistory

type ValueHistory struct {
	// Available False when enrichment was unreachable; points is then empty.
	Available bool         `json:"available"`
	Points    []ValuePoint `json:"points"`
}

ValueHistory defines model for ValueHistory.

type ValuePoint

type ValuePoint struct {
	Date       openapi_types.Date `json:"date"`
	ValueCents int64              `json:"value_cents"`
}

ValuePoint defines model for ValuePoint.

type VerdictRequest

type VerdictRequest struct {
	Action VerdictRequestAction `json:"action"`

	// Product The curated fields for approve_new; mirrors the enrichment mint request (single edition field, no variant).
	Product   *CommunityProductSpec `json:"product,omitempty"`
	ProductId *openapi_types.UUID   `json:"product_id,omitempty"`
	Reason    *string               `json:"reason,omitempty"`
}

VerdictRequest One admin verdict. approve_new requires product; approve_existing requires product_id; reject requires reason.

type VerdictRequestAction

type VerdictRequestAction string

VerdictRequestAction defines model for VerdictRequest.Action.

const (
	ApproveExisting VerdictRequestAction = "approve_existing"
	ApproveNew      VerdictRequestAction = "approve_new"
	Reject          VerdictRequestAction = "reject"
)

Defines values for VerdictRequestAction.

func (VerdictRequestAction) Valid

func (e VerdictRequestAction) Valid() bool

Valid indicates whether the value is a known member of the VerdictRequestAction enum.

type ViewCreate

type ViewCreate struct {
	Name string `json:"name"`

	// Params Opaque frontend view state; at most 8192 marshaled bytes.
	Params     map[string]interface{} `json:"params"`
	Visibility *Visibility            `json:"visibility,omitempty"`
}

ViewCreate defines model for ViewCreate.

type Visibility

type Visibility string

Visibility defines model for Visibility.

const (
	Listed   Visibility = "listed"
	Private  Visibility = "private"
	Unlisted Visibility = "unlisted"
)

Defines values for Visibility.

func (Visibility) Valid

func (e Visibility) Valid() bool

Valid indicates whether the value is a known member of the Visibility enum.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL