{"openapi":"3.1.0","info":{"title":"PriceMyTCG API","version":"1.0.0","description":"Milestone 1 API. All successful operations use a data envelope. Money is integer EUR cents. Browser writes require an Origin matching APP_URL. Native clients receive an opaque, expiring bearer token. Demo records are marked isDemo. See docs/api.md for response DTOs and validation refinements."},"servers":[{"url":"/api/v1"}],"components":{"securitySchemes":{"cronSecret":{"type":"http","scheme":"bearer","description":"Server-owned CRON_SECRET; never a browser or native account token"},"bearerAuth":{"type":"http","scheme":"bearer"},"cookieAuth":{"type":"apiKey","in":"cookie","name":"tcgnexus_session"}},"schemas":{"WishlistMutationInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"WishlistMergePreviewInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slugs":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_-]+$"}}},"required":["slugs"],"additionalProperties":false},"WishlistMergeInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slugs":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_-]+$"}},"previewFingerprint":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["slugs","previewFingerprint"],"additionalProperties":false},"VaultImportPreviewInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"csv":{"type":"string","minLength":1,"maxLength":100000},"duplicateMode":{"default":"skip","type":"string","enum":["skip","separate"]}},"required":["csv"],"additionalProperties":false},"VaultImportInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"csv":{"type":"string","minLength":1,"maxLength":100000},"duplicateMode":{"default":"skip","type":"string","enum":["skip","separate"]},"previewFingerprint":{"type":"string","pattern":"^[a-f0-9]{64}$"},"clientNonce":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["csv","previewFingerprint","clientNonce"],"additionalProperties":false},"ContentReportInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"targetType":{"type":"string","enum":["LISTING","SELLER","PRINTING","REVIEW","EVENT_COMMENT"]},"targetId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","enum":["MISLEADING","COUNTERFEIT","HARASSMENT","SPAM","INCORRECT_DATA","OTHER"]},"details":{"type":"string","minLength":10,"maxLength":2000}},"required":["targetType","targetId","reason","details"],"additionalProperties":false},"ContentReportUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"status":{"type":"string","enum":["OPEN","RESOLVED","DISMISSED"]},"moderatorNote":{"type":"string","minLength":5,"maxLength":1000},"reporterResponse":{"default":"","type":"string","maxLength":1000}},"required":["version","status","moderatorNote"],"additionalProperties":false},"ContentReportsQuery":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"page":{"default":1,"type":"integer","minimum":1,"maximum":10000},"status":{"default":"all","type":"string","enum":["all","OPEN","RESOLVED","DISMISSED"]},"targetType":{"default":"all","type":"string","enum":["all","LISTING","SELLER","PRINTING","REVIEW","EVENT_COMMENT"]}},"additionalProperties":false},"PasswordChangeInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":128},"newPassword":{"type":"string","minLength":12,"maxLength":128}},"required":["currentPassword","newPassword"],"additionalProperties":false},"ConversationInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":4000},"clientNonce":{"type":"string","minLength":8,"maxLength":80,"pattern":"^[a-zA-Z0-9_-]+$"},"sellerSlug":{"type":"string","minLength":1,"maxLength":160},"listingId":{"type":"string","minLength":1,"maxLength":200}},"required":["body","clientNonce"],"additionalProperties":false},"MessageInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":4000},"clientNonce":{"type":"string","minLength":8,"maxLength":80,"pattern":"^[a-zA-Z0-9_-]+$"}},"required":["body","clientNonce"],"additionalProperties":false},"MessageRead":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"throughSequence":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["throughSequence"],"additionalProperties":false},"MessageBlock":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"blocked":{"type":"boolean"}},"required":["blocked"],"additionalProperties":false},"MessageReportInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reason":{"type":"string","minLength":10,"maxLength":1000}},"required":["reason"],"additionalProperties":false},"MessageReportUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["OPEN","REVIEWED"]}},"required":["version","status"],"additionalProperties":false},"SellerProfileUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"bio":{"type":"string","maxLength":1200},"professional":{"type":"boolean"},"logoUrl":{"type":"string","maxLength":1000},"websiteUrl":{"type":"string","maxLength":1000},"instagramUrl":{"type":"string","maxLength":1000},"discordUrl":{"type":"string","maxLength":1000},"xUrl":{"type":"string","maxLength":1000},"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["name","bio","professional","logoUrl","websiteUrl","instagramUrl","discordUrl","xUrl","version"],"additionalProperties":false},"TradeConfirmation":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"confirmed":{"type":"boolean","const":true}},"required":["version","confirmed"],"additionalProperties":false},"TradeReviewInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"rating":{"type":"integer","minimum":1,"maximum":5},"text":{"type":"string","minLength":5,"maxLength":1200}},"required":["version","rating","text"],"additionalProperties":false},"ReviewModerationInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"reason":{"type":"string","minLength":5,"maxLength":500}},"required":["version","status","reason"],"additionalProperties":false},"DeckSmartInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"gameId":{"type":"string","minLength":1,"maxLength":80},"entries":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string","minLength":1,"maxLength":200},"quantity":{"type":"integer","minimum":1,"maximum":99},"ownedQuantity":{"default":0,"type":"integer","minimum":0,"maximum":99}},"required":["printingId","quantity"],"additionalProperties":false}},"options":{"default":{"condition":"NM","country":"","finish":"unspecified"},"type":"object","properties":{"condition":{"default":"NM","type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"country":{"default":"","type":"string","enum":["","NL","BE","DE"]},"finish":{"default":"unspecified","type":"string","enum":["unspecified","foil","nonfoil"]}},"additionalProperties":false}},"required":["gameId","entries"],"additionalProperties":false},"AccountUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":60},"country":{"type":"string","enum":["NL","BE","DE"]},"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["name","country","version"],"additionalProperties":false},"AdminListingStatus":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["status","version"],"additionalProperties":false},"VaultEntryInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"printingId":{"type":"string","minLength":1,"maxLength":200},"quantity":{"type":"integer","minimum":1,"maximum":9999},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"ownedFinish":{"default":"unspecified","type":"string","enum":["unspecified","foil","nonfoil"]},"costPerCopyCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000000},{"type":"null"}]},"acquiredOn":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]}},"required":["printingId","quantity","condition","costPerCopyCents","acquiredOn"],"additionalProperties":false},"VaultEntryUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"printingId":{"type":"string","minLength":1,"maxLength":200},"quantity":{"type":"integer","minimum":1,"maximum":9999},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"ownedFinish":{"default":"unspecified","type":"string","enum":["unspecified","foil","nonfoil"]},"costPerCopyCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000000},{"type":"null"}]},"acquiredOn":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["printingId","quantity","condition","costPerCopyCents","acquiredOn","version"],"additionalProperties":false},"VaultEntryDelete":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["version"],"additionalProperties":false},"VaultObserveInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"EventRequestInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"organizerName":{"type":"string","minLength":2,"maxLength":100},"name":{"type":"string","minLength":3,"maxLength":120},"eventDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"venue":{"type":"string","minLength":2,"maxLength":120},"city":{"type":"string","minLength":2,"maxLength":80},"country":{"type":"string","enum":["NL","BE","DE"]},"websiteUrl":{"type":"string","maxLength":500,"format":"uri"},"description":{"type":"string","minLength":20,"maxLength":1200},"gameIds":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"placement":{"type":"string","enum":["STANDARD","FEATURED"]},"promotionStartsOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"promotionEndsOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["organizerName","name","eventDate","venue","city","country","websiteUrl","description","gameIds","placement","promotionStartsOn","promotionEndsOn"],"additionalProperties":false},"EventParticipationInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"going":{"type":"boolean"},"starred":{"type":"boolean"}},"additionalProperties":false},"EventCommentInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","minLength":2,"maxLength":1200},"clientNonce":{"type":"string","minLength":16,"maxLength":80,"pattern":"^[a-zA-Z0-9_-]+$"}},"required":["text","clientNonce"],"additionalProperties":false},"EventCommentModerationInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"reason":{"type":"string","minLength":5,"maxLength":500}},"required":["version","status","reason"],"additionalProperties":false},"MarketRefreshInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"printingIds":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"options":{"default":{"condition":"NM","country":"","finish":"unspecified"},"type":"object","properties":{"condition":{"default":"NM","type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"country":{"default":"","type":"string","enum":["","NL","BE","DE"]},"finish":{"default":"unspecified","type":"string","enum":["unspecified","foil","nonfoil"]}},"additionalProperties":false}},"required":["printingIds"],"additionalProperties":false},"DeckEstimateInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"gameId":{"type":"string","minLength":1,"maxLength":80},"entries":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string","minLength":1,"maxLength":200},"quantity":{"type":"integer","minimum":1,"maximum":99},"ownedQuantity":{"default":0,"type":"integer","minimum":0,"maximum":99}},"required":["printingId","quantity"],"additionalProperties":false}},"options":{"default":{"condition":"NM","country":"","finish":"unspecified"},"type":"object","properties":{"condition":{"default":"NM","type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"country":{"default":"","type":"string","enum":["","NL","BE","DE"]},"finish":{"default":"unspecified","type":"string","enum":["unspecified","foil","nonfoil"]}},"additionalProperties":false}},"required":["gameId","entries"],"additionalProperties":false},"ScanInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"image":{"type":"string","minLength":100,"maxLength":4194304},"mediaType":{"default":"image/jpeg","type":"string","enum":["image/jpeg","image/png","image/webp"]}},"required":["image"],"additionalProperties":false},"Wishlist":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"cardId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"gameName":{"type":"string"},"savedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["cardId","slug","name","gameName","savedAt"],"additionalProperties":false}},"limit":{"type":"number","const":500}},"required":["items","limit"],"additionalProperties":false},"WishlistMutation":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"},"saved":{"type":"boolean"}},"required":["slug","saved"],"additionalProperties":false},"WishlistMergePreview":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fingerprint":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":["string","null"]},"gameName":{"type":["string","null"]},"status":{"type":"string","enum":["ready","saved","unavailable"]}},"required":["slug","name","gameName","status"],"additionalProperties":false}},"readyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"savedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unavailableCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"canMerge":{"type":"boolean"},"limit":{"type":"number","const":500}},"required":["fingerprint","items","readyCount","savedCount","unavailableCount","canMerge","limit"],"additionalProperties":false},"WishlistMerge":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"added":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadySaved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unavailable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["added","alreadySaved","unavailable"],"additionalProperties":false},"UnreadMessages":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"unreadCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["unreadCount"],"additionalProperties":false},"ContentReport":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"targetType":{"type":"string","enum":["LISTING","SELLER","PRINTING","REVIEW","EVENT_COMMENT"]},"targetId":{"type":"string"},"targetTitle":{"type":"string"},"targetPath":{"type":"string"},"reason":{"type":"string","enum":["MISLEADING","COUNTERFEIT","HARASSMENT","SPAM","INCORRECT_DATA","OTHER"]},"details":{"type":"string"},"status":{"type":"string","enum":["OPEN","RESOLVED","DISMISSED"]},"reporterResponse":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","targetType","targetId","targetTitle","targetPath","reason","details","status","reporterResponse","createdAt","updatedAt"],"additionalProperties":false},"ContentReports":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"targetType":{"type":"string","enum":["LISTING","SELLER","PRINTING","REVIEW","EVENT_COMMENT"]},"targetId":{"type":"string"},"targetTitle":{"type":"string"},"targetPath":{"type":"string"},"reason":{"type":"string","enum":["MISLEADING","COUNTERFEIT","HARASSMENT","SPAM","INCORRECT_DATA","OTHER"]},"details":{"type":"string"},"status":{"type":"string","enum":["OPEN","RESOLVED","DISMISSED"]},"reporterResponse":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","targetType","targetId","targetTitle","targetPath","reason","details","status","reporterResponse","createdAt","updatedAt"],"additionalProperties":false}}},"required":["total","page","pageCount","items"],"additionalProperties":false},"AdminContentReport":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"targetType":{"type":"string","enum":["LISTING","SELLER","PRINTING","REVIEW","EVENT_COMMENT"]},"targetId":{"type":"string"},"targetTitle":{"type":"string"},"targetPath":{"type":"string"},"reason":{"type":"string","enum":["MISLEADING","COUNTERFEIT","HARASSMENT","SPAM","INCORRECT_DATA","OTHER"]},"details":{"type":"string"},"status":{"type":"string","enum":["OPEN","RESOLVED","DISMISSED"]},"reporterResponse":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"moderatorNote":{"type":"string"},"targetPreview":{"type":"string"},"reporter":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}},"required":["id","targetType","targetId","targetTitle","targetPath","reason","details","status","reporterResponse","createdAt","updatedAt","version","moderatorNote","targetPreview","reporter"],"additionalProperties":false},"AdminContentReports":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"targetType":{"type":"string","enum":["LISTING","SELLER","PRINTING","REVIEW","EVENT_COMMENT"]},"targetId":{"type":"string"},"targetTitle":{"type":"string"},"targetPath":{"type":"string"},"reason":{"type":"string","enum":["MISLEADING","COUNTERFEIT","HARASSMENT","SPAM","INCORRECT_DATA","OTHER"]},"details":{"type":"string"},"status":{"type":"string","enum":["OPEN","RESOLVED","DISMISSED"]},"reporterResponse":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"moderatorNote":{"type":"string"},"targetPreview":{"type":"string"},"reporter":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}},"required":["id","targetType","targetId","targetTitle","targetPath","reason","details","status","reporterResponse","createdAt","updatedAt","version","moderatorNote","targetPreview","reporter"],"additionalProperties":false}}},"required":["total","page","pageCount","items"],"additionalProperties":false},"VaultImportPreview":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fingerprint":{"type":"string"},"rows":{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"printingId":{"type":"string"},"cardName":{"type":["string","null"]},"setName":{"type":["string","null"]},"variant":{"type":["string","null"]},"number":{"type":["string","null"]},"language":{"type":["string","null"]},"quantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"condition":{"type":["string","null"]},"ownedFinish":{"type":["string","null"]},"costPerCopyCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"acquiredOn":{"type":["string","null"]},"status":{"type":"string","enum":["ready","skipped","error"]},"message":{"type":["string","null"]}},"required":["row","printingId","cardName","setName","variant","number","language","quantity","condition","ownedFinish","costPerCopyCents","acquiredOn","status","message"],"additionalProperties":false}},"readyRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skippedRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errorRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"importedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"existingEntries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"entryLimit":{"type":"number","const":500},"canImport":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string"}}},"required":["fingerprint","rows","readyRows","skippedRows","errorRows","importedCopies","existingEntries","entryLimit","canImport","errors"],"additionalProperties":false},"VaultImportResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"createdEntries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"importedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skippedRows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replayed":{"type":"boolean"}},"required":["createdEntries","importedCopies","skippedRows","replayed"],"additionalProperties":false},"AccountSessions":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"current":{"type":"boolean"}},"required":["id","createdAt","expiresAt","current"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["items","total","page","pages"],"additionalProperties":false},"SessionRevocation":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"revoked":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["revoked"],"additionalProperties":false},"PasswordChange":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"signInRequired":{"type":"boolean","const":true}},"required":["signInRequired"],"additionalProperties":false},"AdminReviews":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["name","slug"],"additionalProperties":false},"subjectRole":{"type":"string","enum":["BUYER","SELLER"]},"rating":{"type":"integer","minimum":1,"maximum":5},"text":{"type":"string"},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"createdAt":{"type":"string"},"provenance":{"type":"string","const":"COLLECTOR_CONFIRMED"},"subject":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["name","slug"],"additionalProperties":false},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"moderationReason":{"type":["string","null"]}},"required":["id","author","subjectRole","rating","text","status","createdAt","provenance","subject","version","moderationReason"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","page","pageCount"],"additionalProperties":false},"SellerProfile":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"bio":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","bio","country","professional","verification","accent","isDemo","version","logoUrl","websiteUrl","instagramUrl","discordUrl","xUrl"],"additionalProperties":false},"TradeFeedback":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"conversationId":{"type":"string"},"enabled":{"type":"boolean"},"eligible":{"type":"boolean"},"unavailableReason":{"type":["string","null"]},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"myRole":{"type":"string","enum":["BUYER","SELLER"]},"myConfirmedAt":{"type":["string","null"]},"otherConfirmedAt":{"type":["string","null"]},"completedAt":{"type":["string","null"]},"myReview":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["name","slug"],"additionalProperties":false},"subjectRole":{"type":"string","enum":["BUYER","SELLER"]},"rating":{"type":"integer","minimum":1,"maximum":5},"text":{"type":"string"},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"createdAt":{"type":"string"},"provenance":{"type":"string","const":"COLLECTOR_CONFIRMED"}},"required":["id","author","subjectRole","rating","text","status","createdAt","provenance"],"additionalProperties":false},{"type":"null"}]}},"required":["conversationId","enabled","eligible","unavailableReason","version","myRole","myConfirmedAt","otherConfirmedAt","completedAt","myReview"],"additionalProperties":false},"TradeReview":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["name","slug"],"additionalProperties":false},"subjectRole":{"type":"string","enum":["BUYER","SELLER"]},"rating":{"type":"integer","minimum":1,"maximum":5},"text":{"type":"string"},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"createdAt":{"type":"string"},"provenance":{"type":"string","const":"COLLECTOR_CONFIRMED"}},"required":["id","author","subjectRole","rating","text","status","createdAt","provenance"],"additionalProperties":false},"SellerReviews":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"role":{"type":"string","enum":["BUYER","SELLER"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"averageRating":{"type":["number","null"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["name","slug"],"additionalProperties":false},"subjectRole":{"type":"string","enum":["BUYER","SELLER"]},"rating":{"type":"integer","minimum":1,"maximum":5},"text":{"type":"string"},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"createdAt":{"type":"string"},"provenance":{"type":"string","const":"COLLECTOR_CONFIRMED"}},"required":["id","author","subjectRole","rating","text","status","createdAt","provenance"],"additionalProperties":false}},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["role","total","averageRating","items","page","pageCount"],"additionalProperties":false},"ReviewModeration":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["PUBLISHED","HIDDEN"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","status","version"],"additionalProperties":false},"DeckVaultMatch":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"matchedCopies":{"type":"integer","minimum":0,"maximum":9007199254740991},"entries":{"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownedQuantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredFinish":{"anyOf":[{"type":"string","enum":["foil","nonfoil"]},{"type":"null"}]},"unknownFinishCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"otherFinishCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allocations":{"type":"array","items":{"type":"object","properties":{"vaultEntryId":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string"},"ownedFinish":{"type":"string","enum":["foil","nonfoil"]}},"required":["vaultEntryId","quantity","condition","ownedFinish"],"additionalProperties":false}}},"required":["printingId","quantity","ownedQuantity","requiredFinish","unknownFinishCopies","otherFinishCopies","allocations"],"additionalProperties":false}}},"required":["calculatedAt","matchedCopies","entries"],"additionalProperties":false},"DeckMarketplace":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","const":"EUR"},"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"missingCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coveredCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uncoveredCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownSubtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sellerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingCents":{"type":"null"},"totalCents":{"type":"null"},"canCheckout":{"type":"boolean","const":false},"entries":{"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string"},"missingQuantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coveredQuantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uncoveredQuantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"subtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"finishUnconfirmed":{"type":"boolean"},"reason":{"anyOf":[{"type":"string","enum":["finish_unknown","finish_mismatch","insufficient_stock"]},{"type":"null"}]},"allocations":{"type":"array","items":{"type":"object","properties":{"listingId":{"type":"string"},"listingVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sellerId":{"type":"string"},"sellerName":{"type":"string"},"sellerSlug":{"type":"string"},"sellerCountry":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"subtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string"},"language":{"type":"string"}},"required":["listingId","listingVersion","sellerId","sellerName","sellerSlug","sellerCountry","quantity","unitPriceCents","subtotalCents","condition","language"],"additionalProperties":false}}},"required":["printingId","missingQuantity","coveredQuantity","uncoveredQuantity","subtotalCents","finishUnconfirmed","reason","allocations"],"additionalProperties":false}}},"required":["currency","calculatedAt","missingCopies","coveredCopies","uncoveredCopies","knownSubtotalCents","sellerCount","shippingCents","totalCents","canCheckout","entries"],"additionalProperties":false},"Message":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"},"sentByMe":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","body","sentByMe","createdAt"],"additionalProperties":false},"Inbox":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"peer":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}},"required":["name","slug"],"additionalProperties":false},"listing":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"printingId":{"type":"string"},"setName":{"type":"string"},"number":{"type":"string"},"imageUrl":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string"},"isDemo":{"type":"boolean"}},"required":["id","cardName","cardSlug","printingId","setName","number","imageUrl","priceCents","status","isDemo"],"additionalProperties":false},{"type":"null"}]},"latestMessage":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"},"sentByMe":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","body","sentByMe","createdAt"],"additionalProperties":false},{"type":"null"}]},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"blockedByMe":{"type":"boolean"},"canSend":{"type":"boolean"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","peer","listing","latestMessage","unreadCount","blockedByMe","canSend","updatedAt"],"additionalProperties":false}},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","page","total","pages","unreadCount"],"additionalProperties":false},"ConversationDetail":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"conversation":{"type":"object","properties":{"id":{"type":"string"},"peer":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}},"required":["name","slug"],"additionalProperties":false},"listing":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"printingId":{"type":"string"},"setName":{"type":"string"},"number":{"type":"string"},"imageUrl":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string"},"isDemo":{"type":"boolean"}},"required":["id","cardName","cardSlug","printingId","setName","number","imageUrl","priceCents","status","isDemo"],"additionalProperties":false},{"type":"null"}]},"latestMessage":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"},"sentByMe":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","body","sentByMe","createdAt"],"additionalProperties":false},{"type":"null"}]},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"blockedByMe":{"type":"boolean"},"canSend":{"type":"boolean"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","peer","listing","latestMessage","unreadCount","blockedByMe","canSend","updatedAt"],"additionalProperties":false},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"body":{"type":"string"},"sentByMe":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","body","sentByMe","createdAt"],"additionalProperties":false}},"olderBefore":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["conversation","messages","olderBefore"],"additionalProperties":false},"MessageReports":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string","enum":["OPEN","REVIEWED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"message":{"type":"object","properties":{"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["body","createdAt"],"additionalProperties":false},"reporter":{"type":"string"},"sender":{"type":"string"}},"required":["id","reason","status","version","createdAt","message","reporter","sender"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","page","pages"],"additionalProperties":false},"ReleaseFeed":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"gameId":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","minLength":1,"maxLength":160},"summary":{"type":"string","minLength":1,"maxLength":1000},"publishedAt":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"releaseDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"sourceUrl":{"type":"string","maxLength":1000,"format":"uri"},"sourceLabel":{"type":"string","minLength":1,"maxLength":100},"checkedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["id","gameId","title","summary","publishedAt","releaseDate","sourceUrl","sourceLabel","checkedOn"],"additionalProperties":false}},"checkedOn":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]}},"required":["items","checkedOn"],"additionalProperties":false},"ReleaseDispatch":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["disabled","idle","sent","rejected","unknown"]},"releaseId":{"type":["string","null"]}},"required":["status","releaseId"],"additionalProperties":false},"GameHub":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"game":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"shortName":{"type":"string"},"color":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"printingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","shortName","color","count"],"additionalProperties":false},"news":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"gameId":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","minLength":1,"maxLength":160},"summary":{"type":"string","minLength":1,"maxLength":1000},"publishedAt":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"releaseDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"sourceUrl":{"type":"string","maxLength":1000,"format":"uri"},"sourceLabel":{"type":"string","minLength":1,"maxLength":100},"checkedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["id","gameId","title","summary","publishedAt","releaseDate","sourceUrl","sourceLabel","checkedOn"],"additionalProperties":false}},"editions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"releasedAt":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"printingCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"languages":{"type":"array","items":{"type":"string"}}},"required":["id","name","releasedAt","printingCount","languages"],"additionalProperties":false}},"selectedEdition":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"releasedAt":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"printingCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"languages":{"type":"array","items":{"type":"string"}}},"required":["id","name","releasedAt","printingCount","languages"],"additionalProperties":false},{"type":"null"}]},"chaseCards":{"type":"array","items":{"type":"object","properties":{"printingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"game":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false},"printings":{"type":"array","items":{"type":"object","properties":{"marketQuote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false},"id":{"type":"string"},"number":{"type":"string"},"variant":{"type":"string"},"rarity":{"type":"string"},"language":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"imageSource":{"type":"string"},"featured":{"type":"boolean"},"set":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gradingCompany":{"type":["string","null"]},"grade":{"type":["number","null"]},"certificationNumber":{"type":["string","null"]},"certificationStatus":{"type":"string"},"frontPhotoUrl":{"type":["string","null"]},"backPhotoUrl":{"type":["string","null"]},"notes":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false}},"required":["id","printingId","kind","condition","priceCents","quantity","gradingCompany","grade","certificationNumber","certificationStatus","frontPhotoUrl","backPhotoUrl","notes","status","version","isDemo","createdAt","seller"],"additionalProperties":false}}},"required":["id","number","variant","rarity","language","finish","imageUrl","imageSource","featured","set","offers"],"additionalProperties":false}},"minPriceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"offerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","slug","name","game","printings","minPriceCents","offerCount"],"additionalProperties":false}},"curation":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"}},"required":["label","description"],"additionalProperties":false},"discord":{"type":"object","properties":{"configured":{"type":"boolean"},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"channelLabel":{"type":"string"},"shared":{"type":"boolean","const":true}},"required":["configured","url","channelLabel","shared"],"additionalProperties":false}},"required":["game","news","editions","selectedEdition","chaseCards","curation","discord"],"additionalProperties":false},"ScanResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reading":{"type":"object","properties":{"cardPresent":{"type":"boolean"},"objectType":{"type":"string","enum":["raw_card","graded_slab"]},"game":{"type":"string","maxLength":100},"name":{"type":"string","maxLength":200},"printedName":{"type":"string","maxLength":200},"number":{"type":"string","maxLength":60},"printedNumber":{"type":"string","maxLength":60},"setName":{"type":"string","maxLength":200},"setCode":{"type":"string","maxLength":60},"variant":{"type":"string","maxLength":200},"finish":{"type":"string","enum":["foil","nonfoil","unsure"]},"language":{"type":"string","maxLength":10},"confidence":{"type":"integer","minimum":0,"maximum":100},"nameLegible":{"type":"boolean"},"numberLegible":{"type":"boolean"},"needsReview":{"type":"boolean"},"glare":{"type":"boolean"},"gradingCompany":{"type":"string","maxLength":60},"grade":{"type":"string","maxLength":30},"certificationNumber":{"type":"string","maxLength":60},"certLegible":{"type":"boolean"},"labelText":{"type":"string","maxLength":500},"alternatives":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"number":{"type":"string","maxLength":60}},"required":["name","number"],"additionalProperties":false}}},"required":["cardPresent","objectType","game","name","printedName","number","printedNumber","setName","setCode","variant","finish","language","confidence","nameLegible","numberLegible","needsReview","glare","gradingCompany","grade","certificationNumber","certLegible","labelText","alternatives"],"additionalProperties":false},"matches":{"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string"},"cardSlug":{"type":"string"},"cardName":{"type":"string"},"gameId":{"type":"string"},"gameName":{"type":"string"},"setName":{"type":"string"},"number":{"type":"string"},"variant":{"type":"string"},"rarity":{"type":"string"},"language":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"reasons":{"type":"array","items":{"type":"string"}}},"required":["printingId","cardSlug","cardName","gameId","gameName","setName","number","variant","rarity","language","finish","imageUrl","score","reasons"],"additionalProperties":false}},"confident":{"type":"boolean"},"gameId":{"type":["string","null"]},"scansLeftToday":{"type":"integer","minimum":0,"maximum":9007199254740991},"model":{"type":"string"},"scannedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["reading","matches","confident","gameId","scansLeftToday","model","scannedAt"],"additionalProperties":false},"Account":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"emailVerified":{"type":"boolean"},"role":{"type":"string","enum":["USER","ADMIN"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"country":{"type":"string","enum":["NL","BE","DE"]}},"required":["id","name","email","emailVerified","role","version","country"],"additionalProperties":false},"AdminSummary":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"users":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"printings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeListings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pausedListings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventRequests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vaultEntries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"billingEnabled":{"type":"boolean","const":false}},"required":["users","printings","activeListings","pausedListings","eventRequests","vaultEntries","billingEnabled"],"additionalProperties":false},"AdminUsers":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["USER","ADMIN"]},"emailVerified":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","email","role","emailVerified","createdAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","page","pageCount"],"additionalProperties":false},"AdminListing":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"cardName":{"type":"string"},"sellerName":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","printingId","cardName","sellerName","status","priceCents","quantity","version","isDemo","createdAt"],"additionalProperties":false},"AdminListings":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"cardName":{"type":"string"},"sellerName":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","printingId","cardName","sellerName","status","priceCents","quantity","version","isDemo","createdAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","page","pageCount"],"additionalProperties":false},"AdminEventRequests":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizerName":{"type":"string"},"eventDate":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"placement":{"type":"string","enum":["STANDARD","FEATURED"]},"status":{"type":"string","enum":["REQUESTED","PUBLISHED"]},"feeCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"paidAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"requester":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["id","name","email"],"additionalProperties":false}},"required":["id","name","organizerName","eventDate","city","country","placement","status","feeCents","paidAt","publishedAt","createdAt","requester"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","page","pageCount"],"additionalProperties":false},"Vault":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","const":"EUR"},"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"summary":{"type":"object","properties":{"entryCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"staleCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unpricedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"knownCostCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"costKnownCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricedCostKnownCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comparableCostCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"comparableValueCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["entryCount","totalCopies","pricedCopies","staleCopies","unpricedCopies","knownSubtotalCents","knownCostCents","costKnownCopies","pricedCostKnownCopies","comparableCostCents","comparableValueCents"],"additionalProperties":false},"entries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"ownedFinish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"costPerCopyCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"acquiredOn":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"gameId":{"type":"string"},"gameName":{"type":"string"},"setName":{"type":"string"},"number":{"type":"string"},"language":{"type":"string"},"variant":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"type":"string"},"quote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false},"subtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","printingId","quantity","condition","ownedFinish","costPerCopyCents","acquiredOn","version","createdAt","updatedAt","cardName","cardSlug","gameId","gameName","setName","number","language","variant","finish","imageUrl","quote","subtotalCents"],"additionalProperties":false}}},"required":["currency","calculatedAt","summary","entries"],"additionalProperties":false},"VaultEntry":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"ownedFinish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"costPerCopyCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"acquiredOn":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"gameId":{"type":"string"},"gameName":{"type":"string"},"setName":{"type":"string"},"number":{"type":"string"},"language":{"type":"string"},"variant":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"type":"string"},"quote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false},"subtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","printingId","quantity","condition","ownedFinish","costPerCopyCents","acquiredOn","version","createdAt","updatedAt","cardName","cardSlug","gameId","gameName","setName","number","language","variant","finish","imageUrl","quote","subtotalCents"],"additionalProperties":false},"VaultHistory":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"days":{"anyOf":[{"type":"number","const":30},{"type":"number","const":365}]},"observations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"observedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"totalCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"knownCostCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"costKnownCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","observedAt","observedOn","totalCopies","pricedCopies","knownSubtotalCents","knownCostCents","costKnownCopies"],"additionalProperties":false}}},"required":["days","observations"],"additionalProperties":false},"VaultObservation":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"observedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"totalCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"knownCostCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"costKnownCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","observedAt","observedOn","totalCopies","pricedCopies","knownSubtotalCents","knownCostCents","costKnownCopies"],"additionalProperties":false},"Entitlements":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"plan":{"type":"string","enum":["FREE","COLLECTOR_PLUS"]},"billingEnabled":{"type":"boolean"},"historyWindowDays":{"anyOf":[{"type":"number","const":30},{"type":"number","const":365}]},"features":{"type":"object","properties":{"vault.manage":{"type":"boolean"},"vault.history.30d":{"type":"boolean"},"vault.history.extended":{"type":"boolean"},"vault.export":{"type":"boolean"}},"required":["vault.manage","vault.history.30d","vault.history.extended","vault.export"],"additionalProperties":false}},"required":["plan","billingEnabled","historyWindowDays","features"],"additionalProperties":false},"Plans":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","const":"EUR"},"billingEnabled":{"type":"boolean"},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["FREE","COLLECTOR_PLUS"]},"name":{"type":"string"},"status":{"type":"string","enum":["AVAILABLE","PLANNED"]},"priceCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"billingInterval":{"anyOf":[{"type":"string","enum":["MONTH","YEAR"]},{"type":"null"}]},"historyWindowDays":{"anyOf":[{"type":"number","const":30},{"type":"number","const":365}]},"features":{"type":"array","items":{"type":"string","enum":["vault.manage","vault.history.30d","vault.history.extended","vault.export"]}}},"required":["id","name","status","priceCents","billingInterval","historyWindowDays","features"],"additionalProperties":false}}},"required":["currency","billingEnabled","plans"],"additionalProperties":false},"Events":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizerName":{"type":"string"},"name":{"type":"string"},"eventDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"eventEndDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"openingHours":{"type":"string"},"venueAddress":{"type":"string"},"sourceCheckedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"highlights":{"type":"array","items":{"type":"string"}},"venue":{"type":"string"},"city":{"type":"string"},"country":{"type":"string","enum":["NL","BE","DE"]},"websiteUrl":{"type":"string","format":"uri"},"description":{"type":"string"},"gameIds":{"type":"array","items":{"type":"string"}},"placement":{"type":"string","enum":["STANDARD","FEATURED"]},"placementSource":{"type":"string","enum":["EDITORIAL","ORGANIZER"]}},"required":["id","organizerName","name","eventDate","venue","city","country","websiteUrl","description","gameIds","placement","placementSource"],"additionalProperties":false}},"Event":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"organizerName":{"type":"string"},"name":{"type":"string"},"eventDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"eventEndDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"openingHours":{"type":"string"},"venueAddress":{"type":"string"},"sourceCheckedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"highlights":{"type":"array","items":{"type":"string"}},"venue":{"type":"string"},"city":{"type":"string"},"country":{"type":"string","enum":["NL","BE","DE"]},"websiteUrl":{"type":"string","format":"uri"},"description":{"type":"string"},"gameIds":{"type":"array","items":{"type":"string"}},"placement":{"type":"string","enum":["STANDARD","FEATURED"]},"placementSource":{"type":"string","enum":["EDITORIAL","ORGANIZER"]}},"required":["id","organizerName","name","eventDate","venue","city","country","websiteUrl","description","gameIds","placement","placementSource"],"additionalProperties":false},"EventParticipation":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"going":{"type":"boolean"},"starred":{"type":"boolean"}},"required":["going","starred"],"additionalProperties":false},"EventCommunity":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"goingCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"starCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"viewer":{"anyOf":[{"type":"object","properties":{"going":{"type":"boolean"},"starred":{"type":"boolean"}},"required":["going","starred"],"additionalProperties":false},{"type":"null"}]},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"authorName":{"type":"string"},"text":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isOwn":{"type":"boolean"}},"required":["id","authorName","text","createdAt","isOwn"],"additionalProperties":false}},"commentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["goingCount","starCount","viewer","comments","commentCount","page","pageCount"],"additionalProperties":false},"EventComment":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"authorName":{"type":"string"},"text":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isOwn":{"type":"boolean"}},"required":["id","authorName","text","createdAt","isOwn"],"additionalProperties":false},"EventCommentModeration":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"text":{"type":"string"},"authorName":{"type":"string"},"status":{"type":"string","enum":["PUBLISHED","HIDDEN","DELETED"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","eventId","text","authorName","status","version"],"additionalProperties":false},"EventCommentDelete":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":false},"EventRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"organizerName":{"type":"string"},"name":{"type":"string"},"eventDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"eventEndDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"openingHours":{"type":"string"},"venueAddress":{"type":"string"},"sourceCheckedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"highlights":{"type":"array","items":{"type":"string"}},"venue":{"type":"string"},"city":{"type":"string"},"country":{"type":"string","enum":["NL","BE","DE"]},"websiteUrl":{"type":"string","format":"uri"},"description":{"type":"string"},"gameIds":{"type":"array","items":{"type":"string"}},"placement":{"type":"string","enum":["STANDARD","FEATURED"]},"placementSource":{"type":"string","const":"ORGANIZER"},"promotionStartsOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"promotionEndsOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"status":{"type":"string","enum":["REQUESTED","PUBLISHED"]},"feeCents":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"currency":{"type":"string","const":"EUR"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","organizerName","name","eventDate","venue","city","country","websiteUrl","description","gameIds","placement","placementSource","promotionStartsOn","promotionEndsOn","status","feeCents","currency","createdAt"],"additionalProperties":false},"EventRequests":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizerName":{"type":"string"},"name":{"type":"string"},"eventDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"eventEndDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"openingHours":{"type":"string"},"venueAddress":{"type":"string"},"sourceCheckedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"highlights":{"type":"array","items":{"type":"string"}},"venue":{"type":"string"},"city":{"type":"string"},"country":{"type":"string","enum":["NL","BE","DE"]},"websiteUrl":{"type":"string","format":"uri"},"description":{"type":"string"},"gameIds":{"type":"array","items":{"type":"string"}},"placement":{"type":"string","enum":["STANDARD","FEATURED"]},"placementSource":{"type":"string","const":"ORGANIZER"},"promotionStartsOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"promotionEndsOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"status":{"type":"string","enum":["REQUESTED","PUBLISHED"]},"feeCents":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"currency":{"type":"string","const":"EUR"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","organizerName","name","eventDate","venue","city","country","websiteUrl","description","gameIds","placement","placementSource","promotionStartsOn","promotionEndsOn","status","feeCents","currency","createdAt"],"additionalProperties":false}},"MarketRefresh":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"refreshed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unavailable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["refreshed","pending","unavailable"],"additionalProperties":false},"DeckEstimate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string","const":"EUR"},"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"totalCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownedCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missingCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pricedMissingCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unpricedMissingCopies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownSubtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"entries":{"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string"},"missingQuantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"subtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"quote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false}},"required":["printingId","missingQuantity","subtotalCents","quote"],"additionalProperties":false}}},"required":["currency","calculatedAt","totalCopies","ownedCopies","missingCopies","pricedMissingCopies","unpricedMissingCopies","knownSubtotalCents","entries"],"additionalProperties":false},"Deck":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":80},"gameId":{"type":"string"},"gameName":{"type":"string"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"entries":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string"},"quantity":{"type":"integer","minimum":1,"maximum":99},"ownedQuantity":{"type":"integer","minimum":0,"maximum":99},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"setName":{"type":"string"},"number":{"type":"string"},"language":{"type":"string"},"variant":{"type":"string"},"finish":{"type":"string"}},"required":["printingId","quantity","ownedQuantity","cardName","cardSlug","imageUrl","setName","number","language","variant","finish"],"additionalProperties":false}}},"required":["id","name","gameId","gameName","version","createdAt","updatedAt","entries"],"additionalProperties":false},"Decks":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":80},"gameId":{"type":"string"},"gameName":{"type":"string"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"entries":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string"},"quantity":{"type":"integer","minimum":1,"maximum":99},"ownedQuantity":{"type":"integer","minimum":0,"maximum":99},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"setName":{"type":"string"},"number":{"type":"string"},"language":{"type":"string"},"variant":{"type":"string"},"finish":{"type":"string"}},"required":["printingId","quantity","ownedQuantity","cardName","cardSlug","imageUrl","setName","number","language","variant","finish"],"additionalProperties":false}}},"required":["id","name","gameId","gameName","version","createdAt","updatedAt","entries"],"additionalProperties":false}},"Games":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"shortName":{"type":"string"},"color":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"printingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","shortName","color","count"],"additionalProperties":false}},"Facets":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"gameId":{"type":"string"}},"required":["id","name","gameId"],"additionalProperties":false}},"rarities":{"type":"array","items":{"type":"string"}}},"required":["sets","rarities"],"additionalProperties":false},"CatalogResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"printingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"game":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false},"printings":{"type":"array","items":{"type":"object","properties":{"marketQuote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false},"id":{"type":"string"},"number":{"type":"string"},"variant":{"type":"string"},"rarity":{"type":"string"},"language":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"imageSource":{"type":"string"},"featured":{"type":"boolean"},"set":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gradingCompany":{"type":["string","null"]},"grade":{"type":["number","null"]},"certificationNumber":{"type":["string","null"]},"certificationStatus":{"type":"string"},"frontPhotoUrl":{"type":["string","null"]},"backPhotoUrl":{"type":["string","null"]},"notes":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false}},"required":["id","printingId","kind","condition","priceCents","quantity","gradingCompany","grade","certificationNumber","certificationStatus","frontPhotoUrl","backPhotoUrl","notes","status","version","isDemo","createdAt","seller"],"additionalProperties":false}}},"required":["id","number","variant","rarity","language","finish","imageUrl","imageSource","featured","set","offers"],"additionalProperties":false}},"minPriceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"offerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","slug","name","game","printings","minPriceCents","offerCount"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","total","page","pageCount"],"additionalProperties":false},"Card":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"printingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"game":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false},"printings":{"type":"array","items":{"type":"object","properties":{"marketQuote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false},"id":{"type":"string"},"number":{"type":"string"},"variant":{"type":"string"},"rarity":{"type":"string"},"language":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"imageSource":{"type":"string"},"featured":{"type":"boolean"},"set":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gradingCompany":{"type":["string","null"]},"grade":{"type":["number","null"]},"certificationNumber":{"type":["string","null"]},"certificationStatus":{"type":"string"},"frontPhotoUrl":{"type":["string","null"]},"backPhotoUrl":{"type":["string","null"]},"notes":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false}},"required":["id","printingId","kind","condition","priceCents","quantity","gradingCompany","grade","certificationNumber","certificationStatus","frontPhotoUrl","backPhotoUrl","notes","status","version","isDemo","createdAt","seller"],"additionalProperties":false}}},"required":["id","number","variant","rarity","language","finish","imageUrl","imageSource","featured","set","offers"],"additionalProperties":false}},"minPriceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"offerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","slug","name","game","printings","minPriceCents","offerCount"],"additionalProperties":false},"Sellers":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false}},"Storefront":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false},"cards":{"type":"array","items":{"type":"object","properties":{"printingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"game":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["id","name","color"],"additionalProperties":false},"printings":{"type":"array","items":{"type":"object","properties":{"marketQuote":{"type":"object","properties":{"printingId":{"type":"string"},"source":{"type":"string","const":"cardmarket"},"currency":{"type":"string","const":"EUR"},"status":{"type":"string","enum":["current","stale","unavailable"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"importedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"productId":{"type":["string","null"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"language":{"type":"string"},"country":{"type":["string","null"]},"finish":{"type":"string","enum":["unspecified","foil","nonfoil"]},"finishLabel":{"type":"string"},"foilCoverage":{"type":"string","enum":["complete","partial","unknown"]},"sampledOfferCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"anyOf":[{"type":"string","enum":["not_linked","no_snapshot","no_matching_offers","finish_unknown","expired","invalid_snapshot"]},{"type":"null"}]}},"required":["printingId","source","currency","status","priceCents","observedAt","importedAt","productId","url","condition","language","country","finish","finishLabel","foilCoverage","sampledOfferCount","reason"],"additionalProperties":false},"id":{"type":"string"},"number":{"type":"string"},"variant":{"type":"string"},"rarity":{"type":"string"},"language":{"type":"string"},"finish":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"imageSource":{"type":"string"},"featured":{"type":"boolean"},"set":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gradingCompany":{"type":["string","null"]},"grade":{"type":["number","null"]},"certificationNumber":{"type":["string","null"]},"certificationStatus":{"type":"string"},"frontPhotoUrl":{"type":["string","null"]},"backPhotoUrl":{"type":["string","null"]},"notes":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false}},"required":["id","printingId","kind","condition","priceCents","quantity","gradingCompany","grade","certificationNumber","certificationStatus","frontPhotoUrl","backPhotoUrl","notes","status","version","isDemo","createdAt","seller"],"additionalProperties":false}}},"required":["id","number","variant","rarity","language","finish","imageUrl","imageSource","featured","set","offers"],"additionalProperties":false}},"minPriceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"offerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","slug","name","game","printings","minPriceCents","offerCount"],"additionalProperties":false}}},"required":["seller","cards"],"additionalProperties":false},"Session":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"viewer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"emailVerified":{"type":"boolean"},"role":{"type":"string","enum":["USER","ADMIN"]},"sellerId":{"type":"string"},"sellerSlug":{"type":"string"}},"required":["id","name","email","emailVerified","role","sellerId","sellerSlug"],"additionalProperties":false},"accessToken":{"type":"string"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["viewer"],"additionalProperties":false},"Viewer":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"emailVerified":{"type":"boolean"},"role":{"type":"string","enum":["USER","ADMIN"]},"sellerId":{"type":"string"},"sellerSlug":{"type":"string"}},"required":["id","name","email","emailVerified","role","sellerId","sellerSlug"],"additionalProperties":false},{"type":"null"}]},"Ok":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"Inventory":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gradingCompany":{"type":["string","null"]},"grade":{"type":["number","null"]},"certificationNumber":{"type":["string","null"]},"certificationStatus":{"type":"string"},"frontPhotoUrl":{"type":["string","null"]},"backPhotoUrl":{"type":["string","null"]},"notes":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false},"cardName":{"type":"string"},"cardSlug":{"type":"string"},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"setName":{"type":"string"},"number":{"type":"string"},"language":{"type":"string"}},"required":["id","printingId","kind","condition","priceCents","quantity","gradingCompany","grade","certificationNumber","certificationStatus","frontPhotoUrl","backPhotoUrl","notes","status","version","isDemo","createdAt","seller","cardName","cardSlug","imageUrl","setName","number","language"],"additionalProperties":false}},"Offer":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"printingId":{"type":"string"},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string"},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gradingCompany":{"type":["string","null"]},"grade":{"type":["number","null"]},"certificationNumber":{"type":["string","null"]},"certificationStatus":{"type":"string"},"frontPhotoUrl":{"type":["string","null"]},"backPhotoUrl":{"type":["string","null"]},"notes":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isDemo":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"seller":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"professional":{"type":"boolean"},"verification":{"type":"string"},"bio":{"type":"string"},"accent":{"type":"string"},"isDemo":{"type":"boolean"},"listingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"instagramUrl":{"type":["string","null"]},"discordUrl":{"type":["string","null"]},"xUrl":{"type":["string","null"]}},"required":["id","slug","name","country","professional","verification","bio","accent","isDemo","listingCount"],"additionalProperties":false}},"required":["id","printingId","kind","condition","priceCents","quantity","gradingCompany","grade","certificationNumber","certificationStatus","frontPhotoUrl","backPhotoUrl","notes","status","version","isDemo","createdAt","seller"],"additionalProperties":false},"ListingInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"printingId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["RAW","GRADED"]},"condition":{"type":"string","enum":["M","NM","EX","GD","LP","PL","PO"]},"priceCents":{"type":"integer","minimum":1,"maximum":10000000},"quantity":{"type":"integer","minimum":1,"maximum":10000},"gradingCompany":{"type":"string","enum":["PSA","BGS","CGC"]},"grade":{"type":"number","minimum":1,"maximum":10,"multipleOf":0.5},"certificationNumber":{"type":"string","pattern":"^[a-zA-Z0-9-]{4,40}$"},"frontPhotoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"backPhotoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"string","const":""}]},"notes":{"default":"","type":"string","maxLength":1000},"status":{"default":"ACTIVE","type":"string","enum":["ACTIVE","PAUSED"]}},"required":["printingId","kind","condition","priceCents","quantity"]},"Login":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":1,"maxLength":128},"client":{"default":"browser","type":"string","enum":["browser","native"]}},"required":["email","password"]},"Register":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":12,"maxLength":128},"client":{"default":"browser","type":"string","enum":["browser","native"]},"name":{"type":"string","minLength":2,"maxLength":60},"country":{"type":"string","enum":["NL","BE","DE"]}},"required":["email","password","name","country"],"additionalProperties":false},"CatalogQuery":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"q":{"default":"","type":"string","maxLength":100},"game":{"default":"","type":"string","maxLength":60},"set":{"default":"","type":"string","maxLength":100},"type":{"default":"all","type":"string","enum":["all","raw","graded"]},"condition":{"default":"","type":"string","enum":["","M","NM","EX","GD","LP","PL","PO"]},"language":{"default":"","type":"string","enum":["","en","ja","de","nl","fr"]},"country":{"default":"","type":"string","enum":["","NL","BE","DE"]},"rarity":{"default":"","type":"string","maxLength":100},"gradingCompany":{"default":"","type":"string","enum":["","PSA","BGS","CGC"]},"grade":{"default":0,"type":"number","minimum":0,"maximum":10},"min":{"default":0,"type":"number","minimum":0,"maximum":100000},"max":{"default":100000,"type":"number","minimum":0,"maximum":100000},"sort":{"default":"featured","type":"string","enum":["featured","price-asc","price-desc","newest","name"]},"page":{"default":1,"type":"integer","minimum":1,"maximum":10000},"limit":{"default":24,"type":"integer","minimum":1,"maximum":48}}},"DeckInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"gameId":{"type":"string","minLength":1,"maxLength":80},"entries":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string","minLength":1,"maxLength":200},"quantity":{"type":"integer","minimum":1,"maximum":99},"ownedQuantity":{"default":0,"type":"integer","minimum":0,"maximum":99}},"required":["printingId","quantity"],"additionalProperties":false}}},"required":["name","gameId"],"additionalProperties":false},"DeckUpdate":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"gameId":{"type":"string","minLength":1,"maxLength":80},"entries":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"printingId":{"type":"string","minLength":1,"maxLength":200},"quantity":{"type":"integer","minimum":1,"maximum":99},"ownedQuantity":{"default":0,"type":"integer","minimum":0,"maximum":99}},"required":["printingId","quantity"],"additionalProperties":false}},"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["name","gameId","entries","version"],"additionalProperties":false},"DeckDelete":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["version"],"additionalProperties":false}}},"paths":{"/wishlist":{"get":{"summary":"Read only your account saved cards","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Wishlist","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Wishlist"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/wishlist/{slug}":{"put":{"summary":"Save a catalog card to your account idempotently","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WishlistMutationInput"}}}},"responses":{"200":{"description":"WishlistMutation","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WishlistMutation"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"delete":{"summary":"Remove a card from your own saved cards idempotently","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WishlistMutationInput"}}}},"responses":{"200":{"description":"WishlistMutation","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WishlistMutation"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/wishlist/merge/preview":{"post":{"summary":"Preview explicit merging of browser favourites into your account","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WishlistMergePreviewInput"}}}},"responses":{"200":{"description":"WishlistMergePreview","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WishlistMergePreview"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/wishlist/merge":{"post":{"summary":"Apply a reviewed, owner-bound saved-card merge without duplicates","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WishlistMergeInput"}}}},"responses":{"200":{"description":"WishlistMerge","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WishlistMerge"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/unread":{"get":{"summary":"Count own unread received messages without returning message content","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"UnreadMessages","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/UnreadMessages"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault/import/preview":{"post":{"summary":"Validate up to 100 CSV collection rows without saving","description":"Exact printing IDs or unambiguous game, card, edition, number and language descriptors. Returns row errors and a collection-bound fingerprint. Unknown finishes do not gain a value.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultImportPreviewInput"}}}},"responses":{"200":{"description":"VaultImportPreview","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/VaultImportPreview"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault/import":{"post":{"summary":"Import previewed collection rows atomically with an owner-bound retry nonce","description":"Requires the current preview fingerprint. Repeating the same nonce and input returns the saved receipt; changed input or a stale preview returns 409. No existing holdings are overwritten.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultImportInput"}}}},"responses":{"200":{"description":"VaultImportResult","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/VaultImportResult"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/reports":{"get":{"summary":"List only the signed-in collector's content reports and moderator responses","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","OPEN","RESOLVED","DISMISSED"]}},{"name":"targetType","in":"query","schema":{"type":"string","enum":["all","LISTING","SELLER","PRINTING","REVIEW"]}}],"responses":{"200":{"description":"ContentReports","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ContentReports"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"post":{"summary":"Privately report a public listing, storefront, printing or review","description":"Targets and allowed reasons are verified on the server. Duplicate open reports are reused, with a persistent submission limit. Filing a report does not remove or penalize the target.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentReportInput"}}}},"responses":{"200":{"description":"ContentReport","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ContentReport"}}}}}},"201":{"description":"ContentReport","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ContentReport"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/reports":{"get":{"summary":"Administrator-only paginated content report queue","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","OPEN","RESOLVED","DISMISSED"]}},{"name":"targetType","in":"query","schema":{"type":"string","enum":["all","LISTING","SELLER","PRINTING","REVIEW"]}}],"responses":{"200":{"description":"AdminContentReports","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminContentReports"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/reports/{id}":{"patch":{"summary":"Triage or reopen a report with an expected version and transactional audit","description":"Internal moderator notes stay private. reporterResponse is visible only to the reporter and administrators. No automatic content enforcement occurs.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentReportUpdate"}}}},"responses":{"200":{"description":"AdminContentReport","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminContentReport"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/account/sessions":{"get":{"summary":"List own active sign-ins without tokens or device tracking","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}}],"responses":{"200":{"description":"AccountSessions","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AccountSessions"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/account/sessions/{id}":{"delete":{"summary":"End another own sign-in with an audit record","description":"Cannot end the current sign-in here; use auth/logout. Other accounts' sessions are not exposed.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SessionRevocation","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SessionRevocation"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/account/sessions/revoke-others":{"post":{"summary":"End all other own sign-ins and retain the current session","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"SessionRevocation","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SessionRevocation"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/account/password":{"post":{"summary":"Change password after checking the current password, then end all sign-ins","description":"Rate limited. Password change, session revocation and audit commit together. Browser cookie is cleared. Native clients must discard their bearer token. No email recovery or delivery is enabled.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeInput"}}}},"responses":{"200":{"description":"PasswordChange","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PasswordChange"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/reviews":{"get":{"summary":"Administrator review queue with public visibility and internal reasons","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}},{"name":"status","in":"query","schema":{"type":"string","enum":["all","PUBLISHED","HIDDEN"]}}],"responses":{"200":{"description":"AdminReviews","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminReviews"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/seller/profile":{"get":{"summary":"Own storefront profile","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"SellerProfile","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SellerProfile"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"patch":{"summary":"Versioned storefront details and safe public links","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SellerProfileUpdate"}}}},"responses":{"200":{"description":"SellerProfile","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SellerProfile"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}/feedback":{"get":{"summary":"Own trade confirmation and feedback eligibility","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"TradeFeedback","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/TradeFeedback"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}/completion":{"post":{"summary":"Confirm an externally arranged trade; both participants required","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradeConfirmation"}}}},"responses":{"200":{"description":"TradeFeedback","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/TradeFeedback"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}/reviews":{"post":{"summary":"One collector-confirmed review after both confirmations","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradeReviewInput"}}}},"responses":{"201":{"description":"TradeFeedback","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/TradeFeedback"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/sellers/{slug}/reviews":{"get":{"summary":"Published collector-confirmed feedback by BUYER or SELLER role","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"role","in":"query","schema":{"type":"string","enum":["BUYER","SELLER"]}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"SellerReviews","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SellerReviews"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/reviews/{id}":{"patch":{"summary":"Audited administrator review visibility with reason and version","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewModerationInput"}}}},"responses":{"200":{"description":"ReviewModeration","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ReviewModeration"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/decks/match-vault":{"post":{"summary":"Match only own exact printing and confirmed finish quantities","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeckSmartInput"}}}},"responses":{"200":{"description":"DeckVaultMatch","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeckVaultMatch"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/decks/marketplace-options":{"post":{"summary":"Stock-bounded lowest card subtotal; no shipping total or checkout","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeckSmartInput"}}}},"responses":{"200":{"description":"DeckMarketplace","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeckMarketplace"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations":{"get":{"summary":"Private paginated inbox","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Inbox","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Inbox"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"post":{"summary":"Start or resume a seller or listing conversation","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationInput"}}}},"responses":{"201":{"description":"ConversationDetail","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ConversationDetail"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}":{"get":{"summary":"Read up to 50 messages; before is an exclusive sequence cursor","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"before","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"ConversationDetail","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ConversationDetail"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}/messages":{"post":{"summary":"Send text; clientNonce deduplicates retries","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageInput"}}}},"responses":{"201":{"description":"Message","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Message"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}/read":{"post":{"summary":"Mark only messages through the seen sequence as read","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageRead"}}}},"responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Ok"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/conversations/{id}/block":{"patch":{"summary":"Block or unblock this collector across all conversations","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageBlock"}}}},"responses":{"200":{"description":"ConversationDetail","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ConversationDetail"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/messages/{id}/report":{"post":{"summary":"Report a received message to moderators","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageReportInput"}}}},"responses":{"201":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Ok"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/message-reports":{"get":{"summary":"Administrator-only paginated reported messages","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"MessageReports","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/MessageReports"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/message-reports/{id}":{"patch":{"summary":"Versioned report review; does not delete or rewrite messages","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageReportUpdate"}}}},"responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Ok"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/games/{gameId}/hub":{"get":{"summary":"Game releases, catalog editions and exact-printing highlights","parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"string"}},{"name":"set","in":"query","schema":{"type":"string","maxLength":100}}],"description":"Public editorial news with publisher provenance. Editions preserve catalog language identities. Every highlighted card contains exactly one selected-edition printing; treatment selection is not popularity, value or booster pull odds. An unknown game or mismatching edition returns 404.","responses":{"200":{"description":"GameHub","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/GameHub"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/releases":{"get":{"summary":"Public editorial release feed","parameters":[{"name":"game","in":"query","schema":{"type":"string","maxLength":60}}],"description":"Publisher publication and release dates remain distinct from our checkedOn date. Future releases can appear when already announced. No feed polling, automatic source scraping or global-latest claim.","responses":{"200":{"description":"ReleaseFeed","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ReleaseFeed"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/releases/rss":{"get":{"summary":"RSS release feed","parameters":[{"name":"game","in":"query","schema":{"type":"string","maxLength":60}}],"responses":{"200":{"description":"RSS 2.0 XML; pubDate only when the publisher date is known","content":{"application/rss+xml":{"schema":{"type":"string"}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/releases/dispatch":{"get":{"summary":"Server-owned scheduled Discord delivery","security":[{"cronSecret":[]}],"description":"Requires constant-time checked CRON_SECRET, not a user or admin session. Disabled until server configuration is explicitly enabled with valid webhook, invite and start date. At most one due release per call. Durable deduplication precedes network work; ambiguous outcomes are never automatically retried. No schedule is configured by this implementation.","responses":{"200":{"description":"ReleaseDispatch","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ReleaseDispatch"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"},"503":{"description":"Delivery bookkeeping requires operator reconciliation"}}},"post":{"summary":"Server operator manual Discord delivery","security":[{"cronSecret":[]}],"description":"Same guarded domain operation as scheduled GET. Only the server cron credential is accepted; browser cookies and administrator roles cannot authorize external messages.","responses":{"200":{"description":"ReleaseDispatch","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ReleaseDispatch"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/account":{"get":{"summary":"Read the authenticated account profile","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Account","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Account"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"patch":{"summary":"Update own display name and country with an expected version","description":"Role, email, email verification and ownership cannot be changed. Profile and audit are committed together.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdate"}}}},"responses":{"200":{"description":"Account","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Account"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/summary":{"get":{"summary":"Administrator-only real platform counts","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"AdminSummary","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminSummary"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/users":{"get":{"summary":"Administrator-only paginated account directory","description":"Read-only. Password hashes and session tokens are never returned. Registration cannot assign a role.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":10000}},{"name":"limit","in":"query","schema":{"default":25,"type":"integer","minimum":1,"maximum":50}},{"name":"q","in":"query","schema":{"default":"","type":"string","maxLength":100}}],"responses":{"200":{"description":"AdminUsers","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminUsers"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/listings":{"get":{"summary":"Administrator-only paginated listing directory","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":10000}},{"name":"limit","in":"query","schema":{"default":25,"type":"integer","minimum":1,"maximum":50}},{"name":"q","in":"query","schema":{"default":"","type":"string","maxLength":100}},{"name":"status","in":"query","schema":{"default":"all","type":"string","enum":["all","ACTIVE","PAUSED"]}}],"responses":{"200":{"description":"AdminListings","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminListings"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/listings/{id}":{"patch":{"summary":"Administrator-only versioned listing pause or resume","description":"Rechecks the stored administrator role, increments the listing version and writes an audit in one transaction. Does not change stock, prices, verification or ownership.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListingStatus"}}}},"responses":{"200":{"description":"AdminListing","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminListing"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/event-requests":{"get":{"summary":"Administrator-only paginated event request review","description":"Read-only. Does not publish, charge, set rates or verify organizers.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":10000}},{"name":"limit","in":"query","schema":{"default":25,"type":"integer","minimum":1,"maximum":50}},{"name":"q","in":"query","schema":{"default":"","type":"string","maxLength":100}}],"responses":{"200":{"description":"AdminEventRequests","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AdminEventRequests"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/plans":{"get":{"summary":"List Free and planned Collector Plus access, without checkout","responses":{"200":{"description":"Plans","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Plans"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/me/entitlements":{"get":{"summary":"Get server-assigned feature access for the authenticated account","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Entitlements","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Entitlements"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault":{"get":{"summary":"Read the private account collection and its observed price coverage","description":"Exact-printing entries include quantities, condition, owned finish, optional per-copy cost and acquisition date. Only matching current Cardmarket offers contribute to knownSubtotalCents; unavailable totals are null, not zero. Quotes match the printing language and owned finish, with the stored condition or better. Unknown finishes are excluded. No guide/trend values or simulated returns are used.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Vault","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Vault"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault/entries":{"post":{"summary":"Add an exact-printing entry to the authenticated account vault","description":"Owner comes only from authentication. Up to 500 entries, each with 1–9999 copies. ownedFinish is foil/nonfoil/unspecified, default unspecified. Known catalog finish is enforced; conflicting choices return 400 PRINTING_FINISH_MISMATCH. For an unspecified catalog finish, an explicit collector choice enables only matching evidenced offers; unspecified remains unpriced. Cost is nullable integer EUR cents per copy; acquiredOn is a nonfuture UTC calendar date. Entry and audit are committed together.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultEntryInput"}}}},"responses":{"201":{"description":"VaultEntry","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/VaultEntry"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault/entries/{id}":{"patch":{"summary":"Update an owned vault entry with its expected version","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultEntryUpdate"}}}},"responses":{"200":{"description":"VaultEntry","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/VaultEntry"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"delete":{"summary":"Remove an owned vault entry with its expected version","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultEntryDelete"}}}},"responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Ok"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault/history":{"get":{"summary":"Read actual daily account observations","description":"No synthetic backfill. Free accounts can read the last 30 UTC calendar days. Requesting 365 days returns 402 FEATURE_PLAN_REQUIRED until Collector Plus is available. Each point carries the priced-copy coverage recorded that day; portfolio composition may change.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"days","in":"query","schema":{"type":"string","enum":["30","365"],"default":"30"}}],"responses":{"200":{"description":"VaultHistory","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/VaultHistory"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/vault/observations":{"post":{"summary":"Record today's actual collection coverage and observed subtotal","description":"Explicit action only; GET never writes. One immutable observation per account per UTC day, calculated by the server from the owned entries and real offers. Days without prices record null, not zero. Repeats return 409 OBSERVATION_EXISTS. This does not refresh external prices or promise a selling value.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultObserveInput"}}}},"responses":{"201":{"description":"VaultObservation","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/VaultObservation"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/events":{"get":{"summary":"List upcoming editorial spotlights and published organizer placements","description":"Up to 100 events, ordered by date. placementSource distinguishes curated EDITORIAL entries from paid ORGANIZER listings. Editorial entries may span eventDate through eventEndDate and include sourced location/hours. Organizer requests are private until separately approved, paid and published within their promotion period. No publishing or payment endpoint is enabled.","responses":{"200":{"description":"Events","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Events"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/events/{id}":{"get":{"summary":"Read a published or editorial event","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Event","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Event"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/events/{id}/community":{"get":{"summary":"Read real RSVP and star counts, your choices, and published comments","description":"Optional browser or bearer session returns only the viewer's participation and isOwn comment markers. No attendee identities or emails are returned. Comments are newest-first with a stable ID tie-breaker, 20 per page. No external notifications are sent.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1}}],"responses":{"200":{"description":"EventCommunity","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventCommunity"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/events/{id}/participation":{"put":{"summary":"Set your RSVP or star without toggling on retries","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventParticipationInput"}}}},"description":"Provide going and/or starred. Omitted choices are preserved. RSVP is an intention, not a ticket or verified attendance. Stars indicate interest, not a rating. Past events cannot receive a new going RSVP. At most 1,000 saved events per account.","responses":{"200":{"description":"EventParticipation","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventParticipation"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/events/{id}/comments":{"post":{"summary":"Post a plain-text event comment","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventCommentInput"}}}},"description":"2–1,200 characters; 20 comments per account per rolling 24 hours. clientNonce is unique per author and must be retained for an identical retry. Changed payload or removed-comment replay returns 409. Display name and comment text become public.","responses":{"201":{"description":"EventComment","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventComment"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/events/{id}/comments/{commentId}":{"delete":{"summary":"Remove only your own comment idempotently","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string"}}],"description":"Clears the comment text and preserves the retry receipt. Other owners receive 404. This does not delete private report snapshots.","responses":{"200":{"description":"EventCommentDelete","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventCommentDelete"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/admin/event-comments/{id}":{"get":{"summary":"Read an event comment for administrator moderation","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"EventCommentModeration","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventCommentModeration"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"patch":{"summary":"Hide or restore an event comment with a version and private reason","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventCommentModerationInput"}}}},"description":"Admin role required. A stale version returns 409. Author-deleted comments cannot be restored. The visibility change, private reason and audit are transactional; reporting alone never hides a comment.","responses":{"200":{"description":"EventCommentModeration","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventCommentModeration"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/event-requests":{"get":{"summary":"List up to 100 own event placement requests, newest first","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"EventRequests","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventRequests"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"post":{"summary":"Save a private standard or featured event placement request","description":"Owner comes from the session. Organizer chooses placement and promotion dates. Dates must be current or future; promotion ends no later than the event. Fees remain unconfirmed. This never charges, emails, or publishes an event.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRequestInput"}}}},"responses":{"201":{"description":"EventRequest","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EventRequest"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/market/refresh":{"post":{"summary":"Refresh up to 20 card versions through the existing ChromaPulse offers endpoint","description":"Authenticated explicit action only; bounded concurrency and per-product cooldown. Pending vendor responses are reported as pending. Observation timestamps are never invented.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketRefreshInput"}}}},"responses":{"200":{"description":"MarketRefresh","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/MarketRefresh"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/scan":{"post":{"summary":"Read a card photo and propose matching catalogue printings","description":"Disabled unless SCAN_ENABLED=true and a server-only provider key is configured. Signed-in accounts only, with a UTC-day attempt allowance (SCAN_DAILY_LIMIT, default 30). A reservation is committed before a provider request, including failed attempts; usage may incur provider charges. Send a base64 JPEG/PNG/WebP downscaled to about 1280 px (body limit about 4 MiB). The image is sent to Anthropic but not stored by PriceMyTCG. Reading fields are unverified transcription, not catalog facts; the collector must confirm the exact printing. Certificates are not authenticated. Unknown games produce no matches, and incomplete candidate searches cannot be confident. model identifies the model returned by the provider. Accuracy on real cards remains unmeasured.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanInput"}}}},"responses":{"200":{"description":"ScanResult","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ScanResult"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"413":{"description":"Photo request exceeds the body limit"},"415":{"description":"JSON content type required"},"422":{"description":"SCAN_UNREADABLE or SCAN_DECLINED"},"429":{"description":"SCAN_LIMIT_REACHED; resets at midnight UTC"},"502":{"description":"SCAN_FAILED; no usable provider answer"},"503":{"description":"SCAN_NOT_CONFIGURED or SCAN_BUSY"}}}},"/decks/estimate":{"post":{"summary":"Estimate missing copies from current observed Cardmarket offers","description":"Excludes stale or unavailable prices. Stock, shipping, and seller combinations are not known. The subtotal is a reference estimate, not a checkout quote.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeckEstimateInput"}}}},"responses":{"200":{"description":"DeckEstimate","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DeckEstimate"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/decks":{"get":{"summary":"List own decks with exact printing entries","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Decks","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Decks"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"post":{"summary":"Create a private deck for the authenticated account","description":"Up to 100 unique printings from one game. Quantities are 1–99; manually entered ownedQuantity must not exceed quantity. This does not validate game rules or synchronize a collection.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeckInput"}}}},"responses":{"201":{"description":"Deck","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Deck"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/decks/{id}":{"get":{"summary":"Get an owned deck","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deck","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Deck"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"patch":{"summary":"Replace an owned deck using its expected version","description":"Send the complete name, gameId and entries plus the current version. A stale version returns 409; each successful write increments the version and records an audit event in the same transaction.","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeckUpdate"}}}},"responses":{"200":{"description":"Deck","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Deck"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}},"delete":{"summary":"Delete an owned deck using its expected version","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeckDelete"}}}},"responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Ok"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/games":{"get":{"summary":"List supported games and catalog counts","responses":{"200":{"description":"Games","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Games"}}}}}}}}},"/facets":{"get":{"summary":"List available sets and rarities","responses":{"200":{"description":"Facets","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Facets"}}}}}}}}},"/cards":{"get":{"summary":"Filter and sort catalog cards and matching offers","parameters":[{"name":"q","in":"query","schema":{"default":"","type":"string","maxLength":100}},{"name":"game","in":"query","schema":{"default":"","type":"string","maxLength":60}},{"name":"set","in":"query","schema":{"default":"","type":"string","maxLength":100}},{"name":"type","in":"query","schema":{"default":"all","type":"string","enum":["all","raw","graded"]}},{"name":"condition","in":"query","schema":{"default":"","type":"string","enum":["","M","NM","EX","GD","LP","PL","PO"]}},{"name":"language","in":"query","schema":{"default":"","type":"string","enum":["","en","ja","de","nl","fr"]}},{"name":"country","in":"query","schema":{"default":"","type":"string","enum":["","NL","BE","DE"]}},{"name":"rarity","in":"query","schema":{"default":"","type":"string","maxLength":100}},{"name":"gradingCompany","in":"query","schema":{"default":"","type":"string","enum":["","PSA","BGS","CGC"]}},{"name":"grade","in":"query","schema":{"default":0,"type":"number","minimum":0,"maximum":10}},{"name":"min","in":"query","schema":{"default":0,"type":"number","minimum":0,"maximum":100000}},{"name":"max","in":"query","schema":{"default":100000,"type":"number","minimum":0,"maximum":100000}},{"name":"sort","in":"query","schema":{"default":"featured","type":"string","enum":["featured","price-asc","price-desc","newest","name"]}},{"name":"page","in":"query","schema":{"default":1,"type":"integer","minimum":1,"maximum":10000}},{"name":"limit","in":"query","schema":{"default":24,"type":"integer","minimum":1,"maximum":48}}],"responses":{"200":{"description":"CatalogResult","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/CatalogResult"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/cards/{slug}":{"get":{"summary":"Get a canonical card, its printings and active offers","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Card","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Card"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/sellers":{"get":{"summary":"List seller storefronts","responses":{"200":{"description":"Sellers","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Sellers"}}}}}}}}},"/sellers/{slug}":{"get":{"summary":"Get seller and active catalog","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Storefront","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Storefront"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/auth/register":{"post":{"summary":"Create account and session","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Register"}}}},"responses":{"201":{"description":"Session","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Session"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/auth/login":{"post":{"summary":"Create browser or native session","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}}},"responses":{"200":{"description":"Session","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Session"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/auth/me":{"get":{"summary":"Current viewer; null when signed out","responses":{"200":{"description":"Viewer","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Viewer"}}}}}}}}},"/auth/logout":{"post":{"summary":"Revoke current session","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Ok"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/inventory":{"get":{"summary":"Own active and paused listings","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Inventory","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Inventory"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/listings":{"post":{"summary":"Create an owned listing","security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingInput"}}}},"responses":{"201":{"description":"Offer","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Offer"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}},"/listings/{id}":{"patch":{"summary":"Update own listing using optimistic version","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListingInput"},{"type":"object","required":["version"],"properties":{"version":{"type":"integer","minimum":1}}}]}}}},"responses":{"200":{"description":"Offer","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Offer"}}}}}},"400":{"description":"Validation error"},"401":{"description":"Authentication required"},"402":{"description":"Feature belongs to a plan that is not enabled"},"403":{"description":"Origin or account permission rejected"},"404":{"description":"Not found"},"409":{"description":"Version or account conflict"},"422":{"description":"Collection limit or empty collection"},"429":{"description":"Too many authentication attempts"}}}}}}