{"components":{"schemas":{"app.announcement.GetListResponse":{"additionalProperties":false,"properties":{"announcements":{"items":{"$ref":"#/components/schemas/entity.Announcement"},"type":"array"},"externalContents":{"items":{"$ref":"#/components/schemas/entity.AnnouncementExternalContent"},"type":"array"}},"type":"object"},"app.announcement.GetResponse":{"additionalProperties":false,"properties":{"announcement":{"$ref":"#/components/schemas/entity.Announcement"}},"type":"object"},"app.arena.ArenaRankingResponse":{"additionalProperties":false,"properties":{"maxRank":{"pattern":"^-?[0-9]+$","type":"string"},"ranking":{"items":{"$ref":"#/components/schemas/entity.ArenaRankingEntry"},"type":"array"}},"type":"object"},"app.arena.DeckTrendResponse":{"additionalProperties":false,"properties":{"leaders":{"items":{"$ref":"#/components/schemas/entity.ArenaDeckTrendMemberCard"},"type":"array"},"members":{"items":{"$ref":"#/components/schemas/entity.ArenaDeckTrendMemberCard"},"type":"array"},"supports":{"items":{"$ref":"#/components/schemas/entity.ArenaDeckTrendSupportCard"},"type":"array"}},"type":"object"},"app.circle.GetCircleResponse":{"additionalProperties":false,"properties":{"circle":{"$ref":"#/components/schemas/entity.CircleDetailWithPlayerList"}},"type":"object"},"app.circle.SearchResponse":{"additionalProperties":false,"properties":{"circles":{"items":{"$ref":"#/components/schemas/entity.CircleWithMasterPlayer"},"type":"array"}},"type":"object"},"app.event.ChallengeLiveRankingPlayer":{"additionalProperties":false,"properties":{"highScoreDeck":{"$ref":"#/components/schemas/entity.DeckDetail"},"playerData":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"},"score":{"type":"integer"}},"type":"object"},"app.event.EventRankingEntry":{"additionalProperties":false,"properties":{"point":{"type":"integer"},"profile":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"},"rank":{"type":"integer"}},"type":"object"},"app.event.GetChallengeMusicRankingResponse":{"additionalProperties":false,"properties":{"players":{"items":{"$ref":"#/components/schemas/app.event.ChallengeLiveRankingPlayer"},"type":"array"}},"type":"object"},"app.event.GetDeckResponse":{"additionalProperties":false,"properties":{"deck":{"$ref":"#/components/schemas/entity.DeckDetail"}},"type":"object"},"app.event.GetRankingListResponse":{"additionalProperties":false,"properties":{"ranking":{"items":{"$ref":"#/components/schemas/app.event.EventRankingEntry"},"type":"array"}},"type":"object"},"app.friend.FindByProfileIDResponse":{"additionalProperties":false,"properties":{"playerProfile":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"}},"type":"object"},"app.gacha.ProbabilityResponse":{"additionalProperties":false,"properties":{"ensuredLot":{"items":{"$ref":"#/components/schemas/entity.LotProbability"},"type":"array"},"ensuredPrize":{"items":{"$ref":"#/components/schemas/entity.PrizeProbability"},"type":"array"},"ensuredProducts":{"additionalProperties":{"type":"integer"},"type":"object"},"lot":{"items":{"$ref":"#/components/schemas/entity.LotProbability"},"type":"array"},"prize":{"items":{"$ref":"#/components/schemas/entity.PrizeProbability"},"type":"array"},"probabilities":{"additionalProperties":{"$ref":"#/components/schemas/entity.Probability"},"type":"object"},"products":{"additionalProperties":{"type":"integer"},"type":"object"}},"type":"object"},"app.livemusic.GetRankingResponse":{"additionalProperties":false,"properties":{"players":{"items":{"$ref":"#/components/schemas/app.livemusic.LiveRankingPlayer"},"type":"array"}},"type":"object"},"app.livemusic.LiveRankingPlayer":{"additionalProperties":false,"properties":{"highScoreDeck":{"$ref":"#/components/schemas/entity.DeckDetail"},"playerData":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"},"score":{"type":"integer"}},"type":"object"},"app.player.GetPlayerFavoriteStatusResponse":{"additionalProperties":false,"properties":{"totalFavorite":{"pattern":"^-?[0-9]+$","type":"string"}},"type":"object"},"app.playerext.GetPlayerListResponse":{"additionalProperties":false,"properties":{"players":{"items":{"$ref":"#/components/schemas/entity.PlayerBriefInfo"},"type":"array"}},"type":"object"},"entity.Announcement":{"additionalProperties":false,"properties":{"bannerPath":{"type":"string"},"bannerUrl":{"type":"string"},"body":{"type":"string"},"category":{"oneOf":[{"enum":["UNSPECIFIED","OTHER","EVENT","GACHA","CAMPAIGN","UPDATE","MAINTENANCE","BUG"],"type":"string"},{"format":"int32","type":"integer"}]},"endAt":{"pattern":"^-?[0-9]+$","type":"string"},"id":{"pattern":"^-?[0-9]+$","type":"string"},"lastUpdatedAt":{"pattern":"^-?[0-9]+$","type":"string"},"pickupBannerPath":{"type":"string"},"pickupBannerUrl":{"type":"string"},"pickupEndAt":{"pattern":"^-?[0-9]+$","type":"string"},"pickupStartAt":{"pattern":"^-?[0-9]+$","type":"string"},"sortOrder":{"type":"integer"},"startAt":{"pattern":"^-?[0-9]+$","type":"string"},"stylesheetId":{"pattern":"^-?[0-9]+$","type":"string"},"title":{"type":"string"}},"type":"object"},"entity.AnnouncementExternalContent":{"additionalProperties":false,"properties":{"bannerPath":{"type":"string"},"id":{"pattern":"^-?[0-9]+$","type":"string"}},"type":"object"},"entity.ArenaDeckTrendMemberCard":{"additionalProperties":false,"properties":{"memberCardId":{"pattern":"^-?[0-9]+$","type":"string"}},"type":"object"},"entity.ArenaDeckTrendSupportCard":{"additionalProperties":false,"properties":{"supportCardId":{"pattern":"^-?[0-9]+$","type":"string"}},"type":"object"},"entity.ArenaRankingEntry":{"additionalProperties":false,"properties":{"deck":{"$ref":"#/components/schemas/entity.DeckDetail"},"point":{"type":"integer"},"profile":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"},"rank":{"type":"integer"}},"type":"object"},"entity.Circle":{"additionalProperties":false,"properties":{"currentRank":{"type":"integer"},"description":{"type":"string"},"id":{"pattern":"^[0-9]+$","type":"string"},"joinRule":{"type":"integer"},"masterLastLoginAt":{"pattern":"^-?[0-9]+$","type":"string"},"memberCount":{"type":"integer"},"name":{"type":"string"},"nextRankPoint":{"type":"integer"},"playStyle":{"type":"integer"},"totalPoint":{"type":"integer"},"weeklyTotalPoint":{"type":"integer"}},"type":"object"},"entity.CircleDetailWithPlayerList":{"additionalProperties":false,"properties":{"circleRanking":{"type":"integer"},"detail":{"$ref":"#/components/schemas/entity.Circle"},"players":{"items":{"$ref":"#/components/schemas/entity.CirclePlayer"},"type":"array"}},"type":"object"},"entity.CirclePlayer":{"additionalProperties":false,"properties":{"auth":{"type":"integer"},"circleId":{"pattern":"^[0-9]+$","type":"string"},"playerId":{"type":"string"},"point":{"type":"integer"},"profile":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"},"weeklyTotalPoint":{"type":"integer"}},"type":"object"},"entity.CircleWithMasterPlayer":{"additionalProperties":false,"properties":{"circle":{"$ref":"#/components/schemas/entity.Circle"},"profile":{"$ref":"#/components/schemas/entity.PlayerSimpleProfile"}},"type":"object"},"entity.DeckCardDetail":{"additionalProperties":false,"properties":{"memberCard":{"$ref":"#/components/schemas/entity.DeckMemberCardDetail"},"performanceOrderIndex":{"type":"integer"},"slotIndex":{"type":"integer"},"supportCard":{"$ref":"#/components/schemas/entity.DeckSupportCardDetail"}},"type":"object"},"entity.DeckDetail":{"additionalProperties":false,"properties":{"cards":{"items":{"$ref":"#/components/schemas/entity.DeckCardDetail"},"type":"array"},"id":{"type":"integer"},"name":{"type":"string"},"totalPower":{"type":"integer"}},"type":"object"},"entity.DeckMemberCardDetail":{"additionalProperties":false,"properties":{"awakeCount":{"type":"integer"},"cardId":{"pattern":"^-?[0-9]+$","type":"string"},"cardRank":{"type":"integer"},"exp":{"type":"integer"},"liveSkillLevel":{"type":"integer"},"performanceSkillLevel":{"type":"integer"}},"type":"object"},"entity.DeckSupportCardDetail":{"additionalProperties":false,"properties":{"cardId":{"pattern":"^-?[0-9]+$","type":"string"},"exp":{"type":"integer"},"rank":{"type":"integer"}},"type":"object"},"entity.LotProbability":{"additionalProperties":false,"properties":{"lotId":{"pattern":"^-?[0-9]+$","type":"string"},"probabilityPercent":{"type":"string"}},"type":"object"},"entity.PlayerBriefInfo":{"additionalProperties":false,"properties":{"accountId":{"pattern":"^-?[0-9]+$","type":"string"},"avatarId":{"pattern":"^-?[0-9]+$","type":"string"},"chatBubbleId":{"pattern":"^-?[0-9]+$","type":"string"},"chatFrameId":{"pattern":"^-?[0-9]+$","type":"string"},"chatThemeId":{"pattern":"^-?[0-9]+$","type":"string"},"level":{"type":"integer"},"nickname":{"type":"string"},"playerId":{"type":"string"}},"type":"object"},"entity.PlayerSimpleProfile":{"additionalProperties":false,"properties":{"favoriteMemberCard":{"$ref":"#/components/schemas/entity.DeckMemberCardDetail"},"favoriteMemberCardMasterId":{"pattern":"^-?[0-9]+$","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"pattern":"^-?[0-9]+$","type":"string"},"name":{"type":"string"},"profileCard":{"$ref":"#/components/schemas/entity.SimpleProfileCard"},"profileId":{"pattern":"^-?[0-9]+$","type":"string"},"rankExp":{"type":"integer"}},"type":"object"},"entity.PrizeProbability":{"additionalProperties":false,"properties":{"prizeId":{"pattern":"^-?[0-9]+$","type":"string"},"probabilityPercent":{"type":"string"}},"type":"object"},"entity.Probability":{"additionalProperties":false,"properties":{"lot":{"items":{"$ref":"#/components/schemas/entity.LotProbability"},"type":"array"},"prize":{"items":{"$ref":"#/components/schemas/entity.PrizeProbability"},"type":"array"}},"type":"object"},"entity.SimpleProfileCard":{"additionalProperties":false,"properties":{"name":{"type":"string"},"slot":{"type":"integer"},"thumbnailUrl":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"securitySchemes":{"developerKey":{"description":"Application key issued by StarMoe; never use the internal moenotes-api key.","scheme":"bearer","type":"http"}}},"info":{"description":"Experimental public read API. This specification covers game queries; developer management uses existing Passport sessions. No gameplay mutations, raw RPC or operational gateway endpoints.","title":"StarMoe Open API — MoeNotes","version":"0.1.0"},"openapi":"3.1.0","paths":{"/api/open/v1/moenotes/{region}/announcement":{"get":{"description":"Requires moenotes:announcements. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"id","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.announcement.GetResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["announcement"],"x-required-scope":"moenotes:announcements"}},"/api/open/v1/moenotes/{region}/announcement/{id}":{"get":{"description":"Requires moenotes:announcements. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"id","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.announcement.GetResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["announcement"],"x-required-scope":"moenotes:announcements"}},"/api/open/v1/moenotes/{region}/announcements":{"get":{"description":"Requires moenotes:announcements. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"selectedTab","required":false,"schema":{"oneOf":[{"enum":["ALL","OPENING_EVENTS","BUG"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.announcement.GetListResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["announcements"],"x-required-scope":"moenotes:announcements"}},"/api/open/v1/moenotes/{region}/announcements/{selectedTab}":{"get":{"description":"Requires moenotes:announcements. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"selectedTab","required":true,"schema":{"oneOf":[{"enum":["ALL","OPENING_EVENTS","BUG"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.announcement.GetListResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["announcements"],"x-required-scope":"moenotes:announcements"}},"/api/open/v1/moenotes/{region}/arena/deck-trend":{"get":{"description":"Requires moenotes:decks. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"musicId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"arenaSeasonId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.arena.DeckTrendResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["deck-trend"],"x-required-scope":"moenotes:decks"}},"/api/open/v1/moenotes/{region}/arena/ranking":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"arenaSeasonId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"bandId","required":false,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"rankingStart","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"rankingEnd","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.arena.ArenaRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["arena-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/arena/{arenaSeasonId}/music/{musicId}/deck-trend":{"get":{"description":"Requires moenotes:decks. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"musicId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"arenaSeasonId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.arena.DeckTrendResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["deck-trend"],"x-required-scope":"moenotes:decks"}},"/api/open/v1/moenotes/{region}/arena/{arenaSeasonId}/ranking/{rankingStart}/{rankingEnd}":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"arenaSeasonId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":true,"in":"query","name":"bandId","required":false,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":false,"in":"path","name":"rankingStart","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"rankingEnd","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.arena.ArenaRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["arena-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/arena/{arenaSeasonId}/ranking/{rankingStart}/{rankingEnd}/band/{bandId}":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"arenaSeasonId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"bandId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"rankingStart","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"rankingEnd","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.arena.ArenaRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["arena-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/circle":{"get":{"description":"Requires moenotes:circles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"circleId","required":true,"schema":{"pattern":"^[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.circle.GetCircleResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["circle"],"x-required-scope":"moenotes:circles"}},"/api/open/v1/moenotes/{region}/circle/{circleId}":{"get":{"description":"Requires moenotes:circles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"circleId","required":true,"schema":{"pattern":"^[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.circle.GetCircleResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["circle"],"x-required-scope":"moenotes:circles"}},"/api/open/v1/moenotes/{region}/circles/search":{"get":{"description":"Requires moenotes:circles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"options.name","required":false,"schema":{"type":"string"},"style":"form"},{"explode":true,"in":"query","name":"options.memberRange","required":false,"schema":{"oneOf":[{"enum":["MEMBER_RANGE_UNSPECIFIED","MEMBER_RANGE_1","MEMBER_RANGE_2","MEMBER_RANGE_3"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"},{"explode":true,"in":"query","name":"options.joinRule","required":false,"schema":{"oneOf":[{"enum":["JOIN_RULE_UNSPECIFIED","AUTO","REQUEST","INVITE"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"},{"explode":true,"in":"query","name":"options.playStyle","required":false,"schema":{"oneOf":[{"enum":["PLAY_STYLE_UNSPECIFIED","FREE","CASUAL","HARD","BEGINNER"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.circle.SearchResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["circle-search"],"x-required-scope":"moenotes:circles"}},"/api/open/v1/moenotes/{region}/circles/search/{name}":{"get":{"description":"Requires moenotes:circles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"name","required":true,"schema":{"type":"string"},"style":"simple"},{"explode":true,"in":"query","name":"options.memberRange","required":false,"schema":{"oneOf":[{"enum":["MEMBER_RANGE_UNSPECIFIED","MEMBER_RANGE_1","MEMBER_RANGE_2","MEMBER_RANGE_3"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"},{"explode":true,"in":"query","name":"options.joinRule","required":false,"schema":{"oneOf":[{"enum":["JOIN_RULE_UNSPECIFIED","AUTO","REQUEST","INVITE"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"},{"explode":true,"in":"query","name":"options.playStyle","required":false,"schema":{"oneOf":[{"enum":["PLAY_STYLE_UNSPECIFIED","FREE","CASUAL","HARD","BEGINNER"],"type":"string"},{"format":"int32","type":"integer"}]},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.circle.SearchResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["circle-search"],"x-required-scope":"moenotes:circles"}},"/api/open/v1/moenotes/{region}/event/challenge-ranking":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"challengeMusicId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.event.GetChallengeMusicRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["challenge-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/event/challenge/{challengeMusicId}/ranking":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"challengeMusicId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.event.GetChallengeMusicRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["challenge-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/event/deck":{"get":{"description":"Requires moenotes:decks. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"playerId","required":true,"schema":{"type":"string"},"style":"form"},{"explode":true,"in":"query","name":"eventId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.event.GetDeckResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["event-deck"],"x-required-scope":"moenotes:decks"}},"/api/open/v1/moenotes/{region}/event/ranking":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"eventId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"ranks","required":true,"schema":{"items":{"type":"integer"},"maxItems":100,"minItems":1,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.event.GetRankingListResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["event-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/event/{eventId}/deck/{playerId}":{"get":{"description":"Requires moenotes:decks. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"eventId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.event.GetDeckResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["event-deck"],"x-required-scope":"moenotes:decks"}},"/api/open/v1/moenotes/{region}/event/{eventId}/ranking/{ranks}":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"eventId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"ranks","required":true,"schema":{"items":{"type":"integer"},"maxItems":100,"minItems":1,"type":"array"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.event.GetRankingListResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["event-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/gacha/rates":{"get":{"description":"Requires moenotes:gacha. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"gachaId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"productId","required":false,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"selectedPickUp","required":false,"schema":{"items":{"pattern":"^-?[0-9]+$","type":"string"},"maxItems":100,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.gacha.ProbabilityResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["probability"],"x-required-scope":"moenotes:gacha"}},"/api/open/v1/moenotes/{region}/gacha/{gachaId}/rates":{"get":{"description":"Requires moenotes:gacha. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"gachaId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":true,"in":"query","name":"productId","required":false,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":true,"in":"query","name":"selectedPickUp","required":false,"schema":{"items":{"pattern":"^-?[0-9]+$","type":"string"},"maxItems":100,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.gacha.ProbabilityResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["probability"],"x-required-scope":"moenotes:gacha"}},"/api/open/v1/moenotes/{region}/gacha/{gachaId}/rates/{selectedPickUp}":{"get":{"description":"Requires moenotes:gacha. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"gachaId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"},{"explode":true,"in":"query","name":"productId","required":false,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"},{"explode":false,"in":"path","name":"selectedPickUp","required":true,"schema":{"items":{"pattern":"^-?[0-9]+$","type":"string"},"maxItems":100,"type":"array"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.gacha.ProbabilityResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["probability"],"x-required-scope":"moenotes:gacha"}},"/api/open/v1/moenotes/{region}/music/ranking":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"musicId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.livemusic.GetRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["music-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/music/{musicId}/ranking":{"get":{"description":"Requires moenotes:rankings. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"musicId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.livemusic.GetRankingResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["music-ranking"],"x-required-scope":"moenotes:rankings"}},"/api/open/v1/moenotes/{region}/player/{playerId}/favorites":{"get":{"description":"Requires moenotes:profiles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.player.GetPlayerFavoriteStatusResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["favorite-status"],"x-required-scope":"moenotes:profiles"}},"/api/open/v1/moenotes/{region}/profile":{"get":{"description":"Requires moenotes:profiles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"playerProfileId","required":true,"schema":{"pattern":"^-?[0-9]+$","type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.friend.FindByProfileIDResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["profile"],"x-required-scope":"moenotes:profiles"}},"/api/open/v1/moenotes/{region}/profile/favorites":{"get":{"description":"Requires moenotes:profiles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"playerId","required":true,"schema":{"type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.player.GetPlayerFavoriteStatusResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["favorite-status"],"x-required-scope":"moenotes:profiles"}},"/api/open/v1/moenotes/{region}/profile/{profileId}":{"get":{"description":"Requires moenotes:profiles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"profileId","required":true,"schema":{"pattern":"^[0-9]+$","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.friend.FindByProfileIDResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["profile"],"x-required-scope":"moenotes:profiles"}},"/api/open/v1/moenotes/{region}/profile/{profileId}/card/{page}":{"get":{"description":"Requires moenotes:profile-images. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"profileId","required":true,"schema":{"pattern":"^[0-9]+$","type":"string"},"style":"simple"},{"explode":false,"in":"path","name":"page","required":true,"schema":{"minimum":1,"type":"integer"},"style":"simple"}],"responses":{"200":{"content":{"image/png":{"schema":{"format":"binary","type":"string"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["profile-card"],"x-required-scope":"moenotes:profile-images"}},"/api/open/v1/moenotes/{region}/profiles":{"get":{"description":"Requires moenotes:profiles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":true,"in":"query","name":"accountIds","required":true,"schema":{"items":{"pattern":"^-?[0-9]+$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.playerext.GetPlayerListResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["profiles"],"x-required-scope":"moenotes:profiles"}},"/api/open/v1/moenotes/{region}/profiles/{accountIds}":{"get":{"description":"Requires moenotes:profiles. Uses the explicit region; no cross-region fallback. Each admitted attempt counts against the developer's shared UTC quotas, including cache hits and upstream failures.","parameters":[{"in":"path","name":"region","required":true,"schema":{"enum":["tw","jp","en","kr"],"type":"string"}},{"explode":false,"in":"path","name":"accountIds","required":true,"schema":{"items":{"pattern":"^-?[0-9]+$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app.playerext.GetPlayerListResponse"}}},"description":"Public game data. int64 values remain decimal strings; omitted defaults stay omitted. Cache-Control: no-store."},"400":{"description":"Invalid path/query/body"},"401":{"description":"Invalid or revoked developer key"},"403":{"description":"Scope or region not granted"},"404":{"description":"Unknown route or missing card"},"405":{"description":"GET only"},"429":{"description":"Minute/day quota or concurrency exceeded"},"502":{"description":"Upstream error or invalid response"},"503":{"description":"Platform/gateway unavailable"},"504":{"description":"Upstream timeout"}},"security":[{"developerKey":[]}],"tags":["profiles"],"x-required-scope":"moenotes:profiles"}}}}
