{"info":{"title":"TrucklineMP Public API","version":"1.0.0","description":"Public REST API for third-party integrations. All endpoints are readable without authentication. Pass a Developer Console API key as `Authorization: Bearer tlmp_api_...` for higher rate limits (free, basic, premium, or unlimited tiers). API keys do not grant access to private account actions."},"servers":[{"url":"https://api.trucklinemp.com","description":"Production"}],"tags":[{"name":"Session","description":"Session introspection for cookie-based auth."},{"name":"Platform","description":"Platform health and aggregate stats."},{"name":"VTCs","description":"Virtual trucking company directory."},{"name":"VTC Management","description":"API-key operations requiring VTC scopes."},{"name":"Events","description":"Public convoy and event listings."},{"name":"News","description":"Official TrucklineMP news posts."},{"name":"Bans","description":"Public moderation records."},{"name":"Users","description":"Public user profiles, search, and SteamID64 lookup."},{"name":"Game","description":"Live game server status and player data."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Developer Console API key. Create keys at https://trucklinemp.com/developer. Optional on all public read endpoints; increases rate limits when provided."},"embedTokenAuth":{"type":"http","scheme":"bearer","description":"VTC embed token (emb_...). Generated per-VTC from Manage > Events > Embed settings. Required only for the events/live and events/upcoming embed endpoints; not interchangeable with Developer Console API keys."}}},"openapi":"3.1.1","paths":{"/session":{"get":{"operationId":"session","summary":"Get current session","description":"Returns the authenticated user when a session cookie is present. Works without authentication.","tags":["Session"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}]},"webid":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"steamid":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"authenticated":{"type":"boolean"}},"required":["username","webid","id","steamid","profilePicture","authenticated"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/me":{"get":{"operationId":"me","summary":"Get current API client info","description":"Returns whether this client is authenticated (session cookie and/or Bearer API key), plus basic user info and/or the provided API token's tier/scopes when available.","tags":["Session"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"authenticated":{"type":"boolean"},"user":{"anyOf":[{"type":"object","properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}]},"webid":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"steamid":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["username","webid","id","steamid","profilePicture"]},{"type":"null"}]},"apiToken":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"permissions":{"type":"array","items":{"type":"string"}},"scopes":{"type":"array","items":{"type":"string"}},"rateLimitTier":{"type":"string"}},"required":["id","projectId","permissions","scopes","rateLimitTier"]},{"type":"null"}]}},"required":["authenticated","user","apiToken"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/rate-limits":{"get":{"operationId":"rateLimits","summary":"Rate limit tiers","description":"Returns the public rate-limit policy for anonymous and developer tiers (minute + 5-minute windows).","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"anonymous":{"type":"object","properties":{"minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fiveMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minute","fiveMinutes"]},"tiers":{"type":"object","properties":{"free":{"type":"object","properties":{"minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fiveMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minute","fiveMinutes"]},"basic":{"type":"object","properties":{"minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fiveMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minute","fiveMinutes"]},"premium":{"type":"object","properties":{"minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fiveMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minute","fiveMinutes"]},"unlimited":{"type":"object","properties":{"minute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fiveMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minute","fiveMinutes"]}},"required":["free","basic","premium","unlimited"]}},"required":["anonymous","tiers"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/status":{"get":{"operationId":"status","summary":"Platform status","description":"Health, version, and module availability.","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["ok","maintenance"],"type":"string"},"version":{"type":"string"},"modules":{"type":"object","properties":{"events":{"type":"boolean"},"forum":{"type":"boolean"},"recruitment":{"type":"boolean"},"notifications":{"type":"boolean"}},"required":["events","forum","recruitment","notifications"]}},"required":["status","version","modules"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/recruitment/open":{"get":{"operationId":"recruitment.open","summary":"Staff recruitment status","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"open":{"type":"boolean"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"soonestDeadline":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["open","count","soonestDeadline"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/version":{"get":{"operationId":"version","summary":"API version","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"api":{"type":"string"},"app":{"type":"string"},"build":{"type":"string"}},"required":["api","app"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/rules":{"get":{"operationId":"rules","summary":"Rules URL","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/partners":{"get":{"operationId":"partners","summary":"List partners","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"logo":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"promoCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"logoScale":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","name","logo","url","description","promoCode","logoScale"]}}},"required":["items"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats":{"get":{"operationId":"stats.get","summary":"Moderation stats","description":"Aggregate public moderation timestamps and active ban count.","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"lastBanAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastKickAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastReportCompletedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"activeBanCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["lastBanAt","lastKickAt","lastReportCompletedAt","activeBanCount"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/servers/history":{"get":{"operationId":"stats.serversHistory","summary":"Server population history","tags":["Platform"],"parameters":[{"name":"range","in":"query","schema":{"enum":["24h","7d","30d","90d","all"],"type":"string","default":"7d"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"range":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"players":{"type":"number"},"ets2":{"type":"number"},"ats":{"type":"number"},"capacity":{"type":"number"}},"required":["date","players","ets2","ats","capacity"]}}},"required":["range","points"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/servers/peak":{"get":{"operationId":"stats.serversPeak","summary":"Server population peaks","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"windows":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"peak":{"type":"number"},"average":{"type":"number"},"hours":{"type":"number"}},"required":["key","peak","average","hours"]}},"allTimePeak":{"type":"object","properties":{"value":{"type":"number"},"at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["value","at"]}},"required":["windows","allTimePeak"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/servers/breakdown":{"get":{"operationId":"stats.serversBreakdown","summary":"Live server breakdown","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"current":{"type":"number"},"limit":{"type":"number"},"collisions":{"type":"boolean"},"syncEnvironment":{"type":"boolean"}},"required":["id","name","region","game","status","current","limit","collisions","syncEnvironment"]}},"byRegion":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"players":{"type":"number"}},"required":["region","players"]}},"byGame":{"type":"array","items":{"type":"object","properties":{"game":{"type":"string"},"players":{"type":"number"}},"required":["game","players"]}},"settings":{"type":"object","properties":{"collisionsOn":{"type":"number"},"collisionsOff":{"type":"number"},"syncedWeather":{"type":"number"},"freeWeather":{"type":"number"}},"required":["collisionsOn","collisionsOff","syncedWeather","freeWeather"]}},"required":["servers","byRegion","byGame","settings"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/servers/heatmap":{"get":{"operationId":"stats.serversHeatmap","summary":"Population heatmap","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"cells":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"hour":{"type":"number"},"players":{"type":"number"}},"required":["day","hour","players"]}}},"required":["cells"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/platform/growth":{"get":{"operationId":"stats.platformGrowth","summary":"Platform growth","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"users":{"type":"number"},"vtcs":{"type":"number"},"events":{"type":"number"}},"required":["date","users","vtcs","events"]}}},"required":["points"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/platform/activity":{"get":{"operationId":"stats.platformActivity","summary":"Platform activity","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"registrations":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"value":{"type":"number"}},"required":["day","value"]}},"moderation":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"value":{"type":"number"}},"required":["day","value"]}}},"required":["registrations","moderation"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/platform/totals":{"get":{"operationId":"stats.platformTotals","summary":"Platform totals","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"totalUsers":{"type":"number"},"totalVtcs":{"type":"number"},"totalEvents":{"type":"number"},"activeBans":{"type":"number"},"newUsers30d":{"type":"number"},"playersOnline":{"type":"number"},"activeServers":{"type":"number"},"networkLoad":{"type":"number"}},"required":["totalUsers","totalVtcs","totalEvents","activeBans","newUsers30d","playersOnline","activeServers","networkLoad"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/players/leaderboard":{"get":{"operationId":"stats.playtimeLeaderboard","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"number"},"accountId":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalSecondsPlayed":{"type":"number"},"totalSessions":{"type":"number"},"daysActive":{"type":"number"}},"required":["rank","accountId","name","image","totalSecondsPlayed","totalSessions","daysActive"]}}},"required":["entries"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/stats/players/daily-active":{"get":{"operationId":"stats.playersDailyActive","parameters":[{"name":"days","in":"query","schema":{"type":"integer","minimum":1,"maximum":90,"default":30},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"players":{"type":"number"}},"required":["date","players"]}}},"required":["points"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs":{"get":{"operationId":"vtcs.list","summary":"List public VTCs","tags":["VTCs"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return (1-100)."},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset-based cursor from a previous response's nextCursor, or 0 to start."},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of items to skip. Alias of cursor."},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"1-indexed page number. Alternative to cursor/offset."},"allowEmptyValue":true,"allowReserved":true},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Alias of limit, used with page."},"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string","maxLength":255,"description":"Full-text match against VTC name, description, and in-game tag."},"allowEmptyValue":true,"allowReserved":true},{"name":"verified","in":"query","schema":{"type":"boolean","description":"Only return VTCs with verified status."},"allowEmptyValue":true,"allowReserved":true},{"name":"official","in":"query","schema":{"type":"boolean","description":"Only return official VTCs."},"allowEmptyValue":true,"allowReserved":true},{"name":"partnered","in":"query","schema":{"type":"boolean","description":"Only return partnered VTCs."},"allowEmptyValue":true,"allowReserved":true},{"name":"validated","in":"query","schema":{"type":"boolean","description":"Only return validated VTCs."},"allowEmptyValue":true,"allowReserved":true},{"name":"recruitmentOpen","in":"query","schema":{"type":"boolean","description":"Only return VTCs currently open for recruitment."},"allowEmptyValue":true,"allowReserved":true},{"name":"language","in":"query","schema":{"type":"string","maxLength":50,"description":"Case-insensitive match on the VTC's primary language."},"allowEmptyValue":true,"allowReserved":true},{"name":"inGameTag","in":"query","schema":{"type":"string","maxLength":32,"description":"Partial match on the VTC's in-game tag."},"allowEmptyValue":true,"allowReserved":true},{"name":"game","in":"query","schema":{"enum":["ets2","ats"],"type":"string","description":"Filter by supported game."},"allowEmptyValue":true,"allowReserved":true},{"name":"minMembers","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Minimum member count (inclusive)."},"allowEmptyValue":true,"allowReserved":true},{"name":"maxMembers","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum member count (inclusive)."},"allowEmptyValue":true,"allowReserved":true},{"name":"sort","in":"query","schema":{"enum":["newest","name","members","activity"],"type":"string","default":"newest","description":"Sort order for results."},"allowEmptyValue":true,"allowReserved":true},{"name":"companyType","in":"query","schema":{"enum":["trucking","coach"],"type":"string","default":"trucking","description":"Filter by company type: trucking VTCs or coach VBCs."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"slogan":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"},"official":{"type":"boolean"},"partnered":{"type":"boolean"},"validated":{"type":"boolean"},"tier":{"type":"string"},"tierReviewNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"activityScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inGameTag":{"anyOf":[{"type":"string"},{"type":"null"}]},"games":{"type":"array","items":{"type":"string"}},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitch":{"anyOf":[{"type":"string"},{"type":"null"}]},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}]},"recruitmentOpen":{"type":"boolean"},"visibility":{"enum":["public","unlisted","private"],"type":"string"},"language":{"type":"string"},"memberCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"companyType":{"enum":["trucking","coach"],"type":"string"}},"required":["id","name","handle","description","slogan","profilePicture","banner","verified","official","partnered","recruitmentOpen","visibility","language","memberCount","createdAt"]},"description":"The page of results."},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Pass as `cursor` to fetch the next page, or null if this is the last page."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total number of items matching the query, across all pages."}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/batch":{"get":{"operationId":"vtcs.listByIds","summary":"Batch get VTCs","description":"Fetch up to 50 public VTCs at once by id or handle. Missing/private ids are silently omitted.","tags":["VTCs"],"parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string"},"description":"VTC ids or handles to fetch in a single request (max 50)."},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"slogan":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"},"official":{"type":"boolean"},"partnered":{"type":"boolean"},"validated":{"type":"boolean"},"tier":{"type":"string"},"tierReviewNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"activityScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inGameTag":{"anyOf":[{"type":"string"},{"type":"null"}]},"games":{"type":"array","items":{"type":"string"}},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitch":{"anyOf":[{"type":"string"},{"type":"null"}]},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}]},"recruitmentOpen":{"type":"boolean"},"visibility":{"enum":["public","unlisted","private"],"type":"string"},"language":{"type":"string"},"memberCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"companyType":{"enum":["trucking","coach"],"type":"string"}},"required":["id","name","handle","description","slogan","profilePicture","banner","verified","official","partnered","recruitmentOpen","visibility","language","memberCount","createdAt"]}}},"required":["items"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{idOrHandle}":{"get":{"operationId":"vtcs.get","summary":"Get VTC details","description":"Returns public VTC profile data. Session cookies unlock member-only fields when applicable.","tags":["VTCs"],"parameters":[{"name":"idOrHandle","in":"path","required":true,"schema":{"type":"string","description":"VTC id or unique handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"slogan":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"},"official":{"type":"boolean"},"partnered":{"type":"boolean"},"validated":{"type":"boolean"},"tier":{"type":"string"},"tierReviewNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"activityScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inGameTag":{"anyOf":[{"type":"string"},{"type":"null"}]},"games":{"type":"array","items":{"type":"string"}},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitch":{"anyOf":[{"type":"string"},{"type":"null"}]},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}]},"recruitmentOpen":{"type":"boolean"},"visibility":{"enum":["public","unlisted","private"],"type":"string"},"language":{"type":"string"},"memberCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string"},"companyType":{"enum":["trucking","coach"],"type":"string"},"styleTags":{"type":"array","items":{"type":"string"}},"rules":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"recruitmentLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownerId":{"type":"string"},"upcomingEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"startAt":{"type":"string"},"endAt":{"type":"string"},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","startAt","endAt","server","departure","arrival","banner","attendeeCount"]}},"memberPreviews":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"},"role":{"type":"string"},"joinedAt":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"webId":{"type":"number"},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"isOwner":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"]}}},"required":["userId","role","joinedAt","name","image","webId","steamId","isOwner","roles"]}},"linkedCompany":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyType":{"enum":["trucking","coach"],"type":"string"}},"required":["id","name","handle","profilePicture","companyType"]},{"type":"null"}]},"externalMembershipPolicy":{"enum":["allowed","blocked"],"type":"string"},"linkSharedStaffOut":{"type":"boolean"},"linkSharedStaffInBlocked":{"type":"boolean"},"instagram":{"anyOf":[{"type":"string"},{"type":"null"}]},"facebook":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"discord":{"anyOf":[{"type":"string"},{"type":"null"}]},"verifiedDiscordServer":{"anyOf":[{"type":"object","properties":{"guildId":{"type":"string"},"guildName":{"type":"string"},"verifiedAt":{"type":"string"}},"required":["guildId","guildName","verifiedAt"]},{"type":"null"}]},"theme":{"anyOf":[{"type":"object","properties":{"background":{"type":"string"},"surface":{"type":"string"},"border":{"type":"string"},"text":{"type":"string"},"mutedText":{"type":"string"},"primary":{"type":"string"},"primaryText":{"type":"string"}}},{"type":"null"}]},"profileSections":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["type","title","config"]}},"homeLayout":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"},"w":{"type":"number"},"h":{"type":"number"}},"required":["id","type","x","y","w","h"]}},{"type":"null"}]},"supportEnabled":{"type":"boolean"},"minAccountAge":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minPlaytime":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"joinRequirements":{"type":"object","properties":{"requiredDlcAppIds":{"type":"array","maxItems":50,"items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"enforceAccountAge":{"type":"boolean"},"enforcePlaytime":{"type":"boolean"},"enforceDlcOwnership":{"type":"boolean"},"writtenRequirements":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"text":{"type":"string","minLength":1,"maxLength":240},"enabled":{"type":"boolean","default":true}},"required":["id","text"]}}}},"requiredDlcs":{"type":"array","items":{"type":"object","properties":{"appId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"headerImage":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["appId","name","headerImage"]}}},"required":["id","name","handle","description","slogan","profilePicture","banner","verified","official","partnered","recruitmentOpen","visibility","language","memberCount","createdAt","rules","website","email","ownerId","upcomingEvents","memberPreviews"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{idOrHandle}/members":{"get":{"operationId":"vtcs.members","summary":"List VTC members","tags":["VTCs"],"parameters":[{"name":"idOrHandle","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return (1-100)."},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset-based cursor from a previous response's nextCursor, or 0 to start."},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of items to skip. Alias of cursor."},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"1-indexed page number. Alternative to cursor/offset."},"allowEmptyValue":true,"allowReserved":true},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Alias of limit, used with page."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"},"role":{"type":"string"},"joinedAt":{"type":"string"},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"webId":{"type":"number"},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"isOwner":{"type":"boolean"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"]}}},"required":["userId","role","joinedAt","name","image","webId","steamId","isOwner","roles"]},"description":"The page of results."},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Pass as `cursor` to fetch the next page, or null if this is the last page."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total number of items matching the query, across all pages."}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/news":{"get":{"operationId":"vtcs.listNews","summary":"List VTC news","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"content":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"pinned":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"authorName":{"type":"string"},"authorImage":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","content","image","pinned","createdAt","authorName","authorImage"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/events":{"get":{"operationId":"vtcs.listEvents","summary":"List VTC events","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"tab","in":"query","schema":{"enum":["upcoming","past"],"type":"string","default":"upcoming"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":30,"default":10},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"category":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","vtcId","name","banner","category","startAt","endAt","attendeeCount"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/roles":{"get":{"operationId":"vtcs.listRoles","summary":"List VTC roles","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","color","position"]}}},"required":["items"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/gallery":{"get":{"operationId":"vtcs.listGallery","summary":"List VTC gallery","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"albumId","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":60,"default":30},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"albums":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","description"]}},"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"albumId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"title":{"type":"string"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"imageUrl":{"type":"string"},"thumbnailUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"featured":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","albumId","title","caption","imageUrl","thumbnailUrl","featured","createdAt"]}},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"albumId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"title":{"type":"string"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"imageUrl":{"type":"string"},"thumbnailUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"featured":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","albumId","title","caption","imageUrl","thumbnailUrl","featured","createdAt"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["albums","images","items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/partnerships":{"get":{"operationId":"vtcs.listPartnerships","summary":"List VTC partnerships","description":"Returns partnerships where both companies are currently public and searchable.","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"},"partnered":{"type":"boolean"},"partnershipCreatedAt":{"type":"string"}},"required":["id","name","handle","profilePicture","banner","verified","partnered","partnershipCreatedAt"]}}},"required":["items"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/tier":{"get":{"operationId":"vtcs.getTier","summary":"Get VTC tier","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string"},"validated":{"type":"boolean"},"verified":{"type":"boolean"},"partnered":{"type":"boolean"},"official":{"type":"boolean"},"activityScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reviewedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tier","validated","verified","partnered","official","activityScore","reviewedAt"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/recruitment":{"get":{"operationId":"vtcs.getRecruitment","summary":"Get active VTC recruitment form","description":"Returns the public application questions while recruitment is open, or null when it is closed.","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"recruitment":{"anyOf":[{"type":"object","properties":{"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"displayId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string"},"questionType":{"enum":["text","textarea","select","radio"],"type":"string"},"options":{"type":"array","items":{"type":"string"}},"required":{"type":"boolean"}},"required":["id","displayId","question","questionType","options","required"]}}},"required":["title","description","questions"]},{"type":"null"}]}},"required":["recruitment"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/members/{userId}":{"get":{"operationId":"vtcs.getMember","summary":"Get single VTC member","description":"Returns role, isOwner, joinedAt, and role badges for a single member. Returns 404 if the user is not a member of that VTC.","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}},{"name":"userId","in":"path","required":true,"schema":{"type":"string","description":"User id or handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"type":"string"},"isOwner":{"type":"boolean"},"joinedAt":{"type":"string"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","color"]}}},"required":["userId","webId","name","image","steamId","role","isOwner","joinedAt","roles"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{id}/events/live":{"get":{"operationId":"vtcs.listLiveEvents","summary":"List live VTC events","description":"Requires a VTC embed token (Authorization: Bearer emb_...), generated from the VTC's Manage > Events > Embed settings. Developer Console API keys (tlmp_api_...) are not accepted here.","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"slug":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"meetupAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"category":{"type":"string"},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"externalLink":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","slug","startAt","endAt","meetupAt","banner","category","departure","arrival","server","game","attendeeCount","externalLink"]}}},"required":["items"]}}}}},"security":[{"embedTokenAuth":[]}]}},"/vtcs/{id}/events/upcoming":{"get":{"operationId":"vtcs.listUpcomingEvents","summary":"List upcoming VTC events","description":"Requires a VTC embed token (Authorization: Bearer emb_...), generated from the VTC's Manage > Events > Embed settings. Developer Console API keys (tlmp_api_...) are not accepted here.","tags":["VTCs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":30,"default":10},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"slug":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"meetupAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"category":{"type":"string"},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"externalLink":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","slug","startAt","endAt","meetupAt","banner","category","departure","arrival","server","game","attendeeCount","externalLink"]}}},"required":["items"]}}}}},"security":[{"embedTokenAuth":[]}]}},"/vtcs/{id}/management/summary":{"get":{"operationId":"vtcs.management.summary","summary":"Get VTC management summary","tags":["VTC Management"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"vtc":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"memberCount":{"type":"number"}},"required":["id","name","handle","memberCount"]},"viaApiToken":{"type":"boolean"}},"required":["vtc","viaApiToken"]}}}}},"security":[{"bearerAuth":[]}]}},"/vtcs/{id}/management/members":{"get":{"operationId":"vtcs.management.members","summary":"List managed VTC members","tags":["VTC Management"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"},"role":{"type":"string"},"isOwner":{"type":"boolean"},"joinedAt":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"webId":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["userId","role","isOwner","joinedAt","name","image","webId"]}}}}}},"security":[{"bearerAuth":[]}]}},"/vtcs/{id}/management/applications":{"get":{"operationId":"vtcs.management.applications","summary":"List pending VTC applications","tags":["VTC Management"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"applicationNumber":{"anyOf":[{"type":"number"},{"type":"null"}]},"userId":{"type":"string"},"status":{"type":"string"},"appliedAt":{"type":"string"}},"required":["id","applicationNumber","userId","status","appliedAt"]}}}}}},"security":[{"bearerAuth":[]}]}},"/vtcs/{id}/management/news":{"post":{"operationId":"vtcs.management.createNews","summary":"Create a VTC news post","tags":["VTC Management"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","minLength":1,"maxLength":10000},"pinned":{"type":"boolean"},"publishAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["title","content"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"createdAt":{"type":"string"},"publishAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","createdAt","publishAt"]}}}}},"security":[{"bearerAuth":[]}]}},"/vtcs/{id}/management/events/{eventId}/attendance":{"post":{"operationId":"vtcs.management.setEventAttendance","summary":"Set VTC event attendance","tags":["VTC Management"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"VTC id or handle."}},{"name":"eventId","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["attending","not_attending"],"type":"string"}},"required":["status"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true}},"required":["success"]}}}}},"security":[{"bearerAuth":[]}]}},"/events":{"get":{"operationId":"events.list","summary":"List events","tags":["Events"],"parameters":[{"name":"tab","in":"query","schema":{"enum":["upcoming","past"],"type":"string","default":"upcoming","description":"Whether to return upcoming or past events."},"allowEmptyValue":true,"allowReserved":true},{"name":"q","in":"query","schema":{"type":"string","description":"Search events by title."},"allowEmptyValue":true,"allowReserved":true},{"name":"category","in":"query","schema":{"type":"string","description":"Filter by event category."},"allowEmptyValue":true,"allowReserved":true},{"name":"game","in":"query","schema":{"type":"string","description":"Filter by game (e.g. ets2, ats)."},"allowEmptyValue":true,"allowReserved":true},{"name":"language","in":"query","schema":{"type":"string","description":"Filter by event language."},"allowEmptyValue":true,"allowReserved":true},{"name":"server","in":"query","schema":{"type":"string","description":"Filter by in-game server."},"allowEmptyValue":true,"allowReserved":true},{"name":"requiredDlcs","in":"query","schema":{"type":"array","items":{"type":"string"},"description":"Only return events requiring all of these DLCs."},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"official","in":"query","schema":{"type":"boolean","description":"Only return events organized by official VTCs."},"allowEmptyValue":true,"allowReserved":true},{"name":"partnered","in":"query","schema":{"type":"boolean","description":"Only return events organized by partnered VTCs."},"allowEmptyValue":true,"allowReserved":true},{"name":"verified","in":"query","schema":{"type":"boolean","description":"Only return events organized by verified VTCs."},"allowEmptyValue":true,"allowReserved":true},{"name":"organizerType","in":"query","schema":{"enum":["personal","vtc"],"type":"string","description":"Filter by organizer type."},"allowEmptyValue":true,"allowReserved":true},{"name":"startingWithin","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":168,"exclusiveMinimum":0,"description":"Only return events starting within this many hours."},"allowEmptyValue":true,"allowReserved":true},{"name":"startsFrom","in":"query","schema":{"type":"string","format":"date-time","x-native-type":"date","description":"Only return events starting at or after this time."},"allowEmptyValue":true,"allowReserved":true},{"name":"startsBefore","in":"query","schema":{"type":"string","format":"date-time","x-native-type":"date","description":"Only return events starting before this time."},"allowEmptyValue":true,"allowReserved":true},{"name":"featured","in":"query","schema":{"type":"boolean","description":"Only return featured events."},"allowEmptyValue":true,"allowReserved":true},{"name":"minAttendees","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Minimum RSVP'd attendee count."},"allowEmptyValue":true,"allowReserved":true},{"name":"maxAttendees","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Maximum RSVP'd attendee count."},"allowEmptyValue":true,"allowReserved":true},{"name":"order","in":"query","schema":{"enum":["priority","start"],"type":"string","description":"Order upcoming events by priority (default) or by start time."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return (1-100)."},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset-based cursor from a previous response's nextCursor, or 0 to start."},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of items to skip. Alias of cursor."},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"1-indexed page number. Alternative to cursor/offset."},"allowEmptyValue":true,"allowReserved":true},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Alias of limit, used with page."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"organizerType":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"meetupAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"routeImage":{"anyOf":[{"type":"string"},{"type":"null"}]},"voiceLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcRegistrationDeadline":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"temporaryRules":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiredDlcs":{"type":"array","items":{"type":"string"}},"tmpEventId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tmpEventUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"seriesId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"editionNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"recapGalleryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"postEventSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxAttendees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"type":"string"},"accessMode":{"type":"string"},"membersOnly":{"type":"boolean"},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifecycleStatus":{"enum":["draft","published","cancelled","ended","archived"],"type":"string"},"safetyStatus":{"enum":["visible","temporarily_hidden","removed"],"type":"string"},"rosterVisibility":{"enum":["public","attendees","organizers"],"type":"string"},"configVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventConfig":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"vtcName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcOfficial":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vtcPartnered":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vtcVerified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"priorityScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"goingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attendingVtcsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"depotSlotsAvailable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coHostVtcs":{"type":"array","items":{"type":"object","properties":{"vtcId":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vtcId","name","profilePicture","banner"]}}},"required":["id","publicId","vtcId","organizerType","name","slug","description","startAt","endAt","meetupAt","server","game","departure","arrival","departureCity","departureLocation","arrivalCity","arrivalLocation","banner","routeImage","voiceLink","externalLink","language","vtcRegistrationDeadline","temporaryRules","requiredDlcs","tmpEventId","tmpEventUrl","seriesId","editionNumber","recapGalleryUrl","postEventSummary","maxAttendees","category","accessMode","membersOnly","attendeeCount","lifecycleStatus","safetyStatus","rosterVisibility","configVersion","eventConfig","createdAt","updatedAt"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"featured":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"organizerType":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"meetupAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"routeImage":{"anyOf":[{"type":"string"},{"type":"null"}]},"voiceLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcRegistrationDeadline":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"temporaryRules":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiredDlcs":{"type":"array","items":{"type":"string"}},"tmpEventId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tmpEventUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"seriesId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"editionNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"recapGalleryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"postEventSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxAttendees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"type":"string"},"accessMode":{"type":"string"},"membersOnly":{"type":"boolean"},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifecycleStatus":{"enum":["draft","published","cancelled","ended","archived"],"type":"string"},"safetyStatus":{"enum":["visible","temporarily_hidden","removed"],"type":"string"},"rosterVisibility":{"enum":["public","attendees","organizers"],"type":"string"},"configVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventConfig":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"vtcName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcOfficial":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vtcPartnered":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vtcVerified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"priorityScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"goingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attendingVtcsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"depotSlotsAvailable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coHostVtcs":{"type":"array","items":{"type":"object","properties":{"vtcId":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vtcId","name","profilePicture","banner"]}}},"required":["id","publicId","vtcId","organizerType","name","slug","description","startAt","endAt","meetupAt","server","game","departure","arrival","departureCity","departureLocation","arrivalCity","arrivalLocation","banner","routeImage","voiceLink","externalLink","language","vtcRegistrationDeadline","temporaryRules","requiredDlcs","tmpEventId","tmpEventUrl","seriesId","editionNumber","recapGalleryUrl","postEventSummary","maxAttendees","category","accessMode","membersOnly","attendeeCount","lifecycleStatus","safetyStatus","rosterVisibility","configVersion","eventConfig","createdAt","updatedAt"]}}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/events/{eventId}":{"get":{"operationId":"events.get","summary":"Get event","tags":["Events"],"parameters":[{"name":"eventId","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Event id."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"event":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"organizerType":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"meetupAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"routeImage":{"anyOf":[{"type":"string"},{"type":"null"}]},"voiceLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcRegistrationDeadline":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"temporaryRules":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiredDlcs":{"type":"array","items":{"type":"string"}},"tmpEventId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tmpEventUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"seriesId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"editionNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"recapGalleryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"postEventSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxAttendees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"type":"string"},"accessMode":{"type":"string"},"membersOnly":{"type":"boolean"},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifecycleStatus":{"enum":["draft","published","cancelled","ended","archived"],"type":"string"},"safetyStatus":{"enum":["visible","temporarily_hidden","removed"],"type":"string"},"rosterVisibility":{"enum":["public","attendees","organizers"],"type":"string"},"configVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventConfig":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"vtcName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcCompanyType":{"anyOf":[{"enum":["trucking","coach"],"type":"string"},{"type":"null"}]},"vtcProfilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcOfficial":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vtcPartnered":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vtcVerified":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","publicId","vtcId","organizerType","name","slug","description","startAt","endAt","meetupAt","server","game","departure","arrival","departureCity","departureLocation","arrivalCity","arrivalLocation","banner","routeImage","voiceLink","externalLink","language","vtcRegistrationDeadline","temporaryRules","requiredDlcs","tmpEventId","tmpEventUrl","seriesId","editionNumber","recapGalleryUrl","postEventSummary","maxAttendees","category","accessMode","membersOnly","attendeeCount","lifecycleStatus","safetyStatus","rosterVisibility","configVersion","eventConfig","createdAt","updatedAt","vtcName","vtcHandle","vtcCompanyType","vtcProfilePicture","vtcOfficial","vtcPartnered","vtcVerified"]}},"required":["event"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/events/{eventId}/co-hosts":{"get":{"operationId":"events.listCoHosts","summary":"List event co-hosts","description":"Returns user co-hosts and public, searchable VTC co-hosts.","tags":["Events"],"parameters":[{"name":"eventId","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"vtcId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vtcId","name","handle","profilePicture"]}}},"required":["items"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/news":{"get":{"operationId":"news.list","summary":"List official news","tags":["News"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset-based cursor from a previous response's nextCursor, or 0 to start."},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of items to skip. Alias of cursor."},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"1-indexed page number. Alternative to cursor/offset."},"allowEmptyValue":true,"allowReserved":true},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Alias of limit, used with page."},"allowEmptyValue":true,"allowReserved":true},{"name":"category","in":"query","schema":{"type":"string","maxLength":80},"allowEmptyValue":true,"allowReserved":true},{"name":"tag","in":"query","schema":{"type":"string","maxLength":40},"allowEmptyValue":true,"allowReserved":true},{"name":"search","in":"query","schema":{"type":"string","maxLength":120},"allowEmptyValue":true,"allowReserved":true},{"name":"year","in":"query","schema":{"type":"integer","minimum":2000,"maximum":2100},"allowEmptyValue":true,"allowReserved":true},{"name":"author","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"allowEmptyValue":true,"allowReserved":true},{"name":"kind","in":"query","schema":{"enum":["post","release","all"],"type":"string","default":"post"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"authorId":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"pinned":{"type":"boolean"},"published":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"author":{"type":"object","properties":{"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","image"]}},"required":["id","authorId","title","content","image","pinned","published","createdAt","updatedAt","author"],"additionalProperties":{}}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/news/{newsId}":{"get":{"operationId":"news.get","summary":"Get official news post","tags":["News"],"parameters":[{"name":"newsId","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"news":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"authorId":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"pinned":{"type":"boolean"},"published":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"author":{"type":"object","properties":{"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","image"]}},"required":["id","authorId","title","content","image","pinned","published","createdAt","updatedAt","author"],"additionalProperties":{}},"related":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"authorId":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"pinned":{"type":"boolean"},"published":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"author":{"type":"object","properties":{"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","image"]}},"required":["id","authorId","title","content","image","pinned","published","createdAt","updatedAt","author"],"additionalProperties":{}}}},"required":["news","related"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/bans":{"get":{"operationId":"bans.listRecent","summary":"List public bans","tags":["Bans"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset-based cursor from a previous response's nextCursor, or 0 to start."},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of items to skip. Alias of cursor."},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"1-indexed page number. Alternative to cursor/offset."},"allowEmptyValue":true,"allowReserved":true},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Alias of limit, used with page."},"allowEmptyValue":true,"allowReserved":true},{"name":"q","in":"query","schema":{"type":"string","maxLength":255,"description":"Search bans by reason or banned user's name/handle."},"allowEmptyValue":true,"allowReserved":true},{"name":"scope","in":"query","schema":{"enum":["website","game","event","vtc"],"type":"string","description":"Filter bans by the scope they were issued under."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"userName":{"anyOf":[{"type":"string"},{"type":"null"}]},"userImage":{"anyOf":[{"type":"string"},{"type":"null"}]},"scope":{"type":"string"},"severity":{"type":"string"},"reasonShort":{"type":"string"},"issuedAt":{"type":"string","format":"date-time","x-native-type":"date"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","userHandle","userName","userImage","scope","severity","reasonShort","issuedAt","expiresAt"]}},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"userName":{"anyOf":[{"type":"string"},{"type":"null"}]},"userImage":{"anyOf":[{"type":"string"},{"type":"null"}]},"scope":{"type":"string"},"severity":{"type":"string"},"reasonShort":{"type":"string"},"issuedAt":{"type":"string","format":"date-time","x-native-type":"date"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","userHandle","userName","userImage","scope","severity","reasonShort","issuedAt","expiresAt"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","data","nextCursor","total","page","pageSize"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/bans/{id}":{"get":{"operationId":"bans.getPublic","summary":"Get public ban","tags":["Bans"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Ban id."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"type":"string"},"scope":{"type":"string"},"severity":{"type":"string"},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"active":{"type":"boolean"},"appealEligibleAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","handle","image","steamId"]},{"type":"null"}]},"evidence":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kind":{"type":"string"},"value":{"type":"string"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","kind","value","caption","createdAt"]}}},"required":["id","userId","scope","severity","reason","createdAt","expiresAt","active","appealEligibleAt","target","evidence"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/search":{"get":{"operationId":"users.search","summary":"Search users","description":"Search by name or handle (minimum 2 characters). Exact SteamID64 queries are supported. Results include public steamId when linked.","tags":["Users"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":50,"exclusiveMinimum":0,"default":12,"description":"Maximum number of users to return (1-50)."},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset-based cursor from a previous response's nextCursor, or 0 to start."},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of items to skip. Alias of cursor."},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"1-indexed page number. Alternative to cursor/offset."},"allowEmptyValue":true,"allowReserved":true},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"description":"Alias of limit, used with page."},"allowEmptyValue":true,"allowReserved":true},{"name":"q","in":"query","schema":{"type":"string","minLength":2,"description":"Search by name or handle (minimum 2 characters). Exact SteamID64 also supported."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"staffRole":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","color"]},{"type":"null"}]}},"required":["id","webId","handle","name","image","steamId","vtcName","vtcId","role","staffRole"]}},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"staffRole":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","color"]},{"type":"null"}]}},"required":["id","webId","handle","name","image","steamId","vtcName","vtcId","role","staffRole"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pagination":{"type":"object","properties":{"totalPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["totalPages","total"]}},"required":["items","users","nextCursor","total","pagination"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/batch":{"get":{"operationId":"users.getBatch","summary":"Batch get users","description":"Fetch up to 50 public user profiles at once by id, handle, or SteamID64. Missing ids are silently omitted. Each profile includes steamId when linked.","tags":["Users"],"parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string","minLength":1},"description":"User ids, handles, or SteamID64s to fetch (max 50)."},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"vtc":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"type":"string"},"joinedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","handle","role","joinedAt"]},{"type":"null"}]},"staffRoles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","color"]}},"social":{"anyOf":[{"type":"object","properties":{"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtubeChannelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitch":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"worldOfTrucks":{"anyOf":[{"type":"string"},{"type":"null"}]},"medal":{"anyOf":[{"type":"string"},{"type":"null"}]},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["youtube","youtubeChannelName","twitch","twitter","worldOfTrucks","medal","tiktok"]},{"type":"null"}]},"gameStatus":{"anyOf":[{"type":"object","properties":{"server":{"type":"string"},"gameId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"near":{"type":"string"}},"required":["server","gameId","near"]},{"type":"null"}]}},"required":["id","webId","handle","name","image","steamId","createdAt","vtc","staffRoles","social","gameStatus"]}}},"required":["users"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/steam/{steamId}":{"get":{"operationId":"users.getBySteam","summary":"Get user by Steam ID","description":"Retrieve a public user profile by SteamID64 (17-digit, starts with 7656119). Includes steamId, VTC membership, staff roles, and social links when public.","tags":["Users"],"parameters":[{"name":"steamId","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"SteamID64 (17-digit, starts with 7656119)."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"vtc":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"type":"string"},"joinedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","handle","role","joinedAt"]},{"type":"null"}]},"staffRoles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","color"]}},"social":{"anyOf":[{"type":"object","properties":{"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtubeChannelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitch":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"worldOfTrucks":{"anyOf":[{"type":"string"},{"type":"null"}]},"medal":{"anyOf":[{"type":"string"},{"type":"null"}]},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["youtube","youtubeChannelName","twitch","twitter","worldOfTrucks","medal","tiktok"]},{"type":"null"}]},"gameStatus":{"anyOf":[{"type":"object","properties":{"server":{"type":"string"},"gameId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"near":{"type":"string"}},"required":["server","gameId","near"]},{"type":"null"}]}},"required":["id","webId","handle","name","image","steamId","createdAt","vtc","staffRoles","social","gameStatus"]}},"required":["user"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/{handleOrId}":{"get":{"operationId":"users.get","summary":"Get user profile","description":"Retrieve a public user profile by internal id, webId, handle, or SteamID64. Response includes steamId when the account is linked to Steam.","tags":["Users"],"parameters":[{"name":"handleOrId","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"User id, webId, handle, or SteamID64."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"vtc":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"type":"string"},"joinedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","handle","role","joinedAt"]},{"type":"null"}]},"staffRoles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","color"]}},"social":{"anyOf":[{"type":"object","properties":{"youtube":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtubeChannelName":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitch":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"worldOfTrucks":{"anyOf":[{"type":"string"},{"type":"null"}]},"medal":{"anyOf":[{"type":"string"},{"type":"null"}]},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["youtube","youtubeChannelName","twitch","twitter","worldOfTrucks","medal","tiktok"]},{"type":"null"}]},"gameStatus":{"anyOf":[{"type":"object","properties":{"server":{"type":"string"},"gameId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"near":{"type":"string"}},"required":["server","gameId","near"]},{"type":"null"}]}},"required":["id","webId","handle","name","image","steamId","createdAt","vtc","staffRoles","social","gameStatus"]}},"required":["user"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/{handleOrId}/vtcs":{"get":{"operationId":"users.getVtcs","summary":"List a user's VTC memberships","description":"Returns all public VTC/VBC memberships for a user, including their role and join date in each company. Optional companyType filter.","tags":["Users"],"parameters":[{"name":"handleOrId","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"User id, webId, handle, or SteamID64."}},{"name":"companyType","in":"query","schema":{"enum":["trucking","coach"],"type":"string","description":"Filter by company type."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"memberships":{"type":"array","items":{"type":"object","properties":{"vtcId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vtcName":{"type":"string"},"vtcHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcProfilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyType":{"enum":["trucking","coach"],"type":"string"},"role":{"type":"string"},"isOwner":{"type":"boolean"},"joinedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["vtcId","vtcName","vtcHandle","vtcProfilePicture","companyType","role","isOwner","joinedAt"]}}},"required":["memberships"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/{userId}/bans":{"get":{"operationId":"users.listBans","summary":"List public bans for a user","description":"Returns the user's active ban, total past ban count, and a paginated history of public bans. Use cursor + limit for paging.","tags":["Users"],"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"User id or handle."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20,"description":"Number of history entries to return (1-50)."},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Offset from a previous nextCursor, or 0 for the first page."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"active":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scope":{"type":"string"},"severity":{"type":"string"},"reasonShort":{"type":"string"}},"required":["id","scope","severity","reasonShort"]},{"type":"null"}]},"pastCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scope":{"type":"string"},"severity":{"type":"string"},"reasonShort":{"type":"string"},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["id","scope","severity","reasonShort","active","createdAt","expiresAt"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["active","pastCount","history","nextCursor"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/vtcs/{vtcId}/events":{"get":{"operationId":"users.listEvents","parameters":[{"name":"vtcId","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},{"name":"tab","in":"query","schema":{"enum":["upcoming","past"],"type":"string","default":"upcoming"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publicId":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"organizerType":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"startAt":{"type":"string","format":"date-time","x-native-type":"date"},"endAt":{"type":"string","format":"date-time","x-native-type":"date"},"meetupAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"server":{"anyOf":[{"type":"string"},{"type":"null"}]},"game":{"anyOf":[{"type":"string"},{"type":"null"}]},"departure":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrival":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"departureLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalCity":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrivalLocation":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"routeImage":{"anyOf":[{"type":"string"},{"type":"null"}]},"voiceLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalLink":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"vtcRegistrationDeadline":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"temporaryRules":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiredDlcs":{"type":"array","items":{"type":"string"}},"tmpEventId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tmpEventUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"seriesId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"editionNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"recapGalleryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"postEventSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxAttendees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"type":"string"},"accessMode":{"type":"string"},"membersOnly":{"type":"boolean"},"attendeeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifecycleStatus":{"enum":["draft","published","cancelled","ended","archived"],"type":"string"},"safetyStatus":{"enum":["visible","temporarily_hidden","removed"],"type":"string"},"rosterVisibility":{"enum":["public","attendees","organizers"],"type":"string"},"configVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventConfig":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","publicId","vtcId","organizerType","name","slug","description","startAt","endAt","meetupAt","server","game","departure","arrival","departureCity","departureLocation","arrivalCity","arrivalLocation","banner","routeImage","voiceLink","externalLink","language","vtcRegistrationDeadline","temporaryRules","requiredDlcs","tmpEventId","tmpEventUrl","seriesId","editionNumber","recapGalleryUrl","postEventSummary","maxAttendees","category","accessMode","membersOnly","attendeeCount","lifecycleStatus","safetyStatus","rosterVisibility","configVersion","eventConfig","createdAt","updatedAt"]}},"nextCursor":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","nextCursor","total"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/users/{handleOrId}/achievements":{"get":{"operationId":"users.listAchievements","summary":"List a user's achievements","tags":["Users"],"parameters":[{"name":"handleOrId","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"User id, webId, handle, or SteamID64."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"achievements":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"type":"string"},"color":{"type":"string"},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"grantedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["slug","name","description","icon","color","points","grantedAt"]}}},"required":["achievements"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/programs/badges/{slug}":{"get":{"operationId":"programs.getBadge","summary":"Get badge program","tags":["Platform"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Badge program slug."}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"type":"string"},"color":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","properties":{"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"profileUrl":{"type":"string"},"reason":{"type":"string"},"grantedAt":{"type":"string","format":"date-time","x-native-type":"date"},"grantedBy":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}},"required":["webId","name","handle","image","steamId","profileUrl","reason","grantedAt","grantedBy"]}}},"required":["slug","name","description","icon","color","recipients"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/programs/recognition":{"get":{"operationId":"programs.recognition","summary":"List recognition programs","tags":["Platform"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"programs":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"type":"string"},"color":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","properties":{"webId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"steamId":{"anyOf":[{"type":"string"},{"type":"null"}]},"profileUrl":{"type":"string"},"reason":{"type":"string"},"grantedAt":{"type":"string","format":"date-time","x-native-type":"date"},"grantedBy":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}},"required":["webId","name","handle","image","steamId","profileUrl","reason","grantedAt","grantedBy"]}}},"required":["slug","name","description","icon","color","recipients"]}}},"required":["programs"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/achievements":{"get":{"operationId":"achievements.list","summary":"List achievement catalog","tags":["Users"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"achievements":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"type":"string"},"color":{"type":"string"},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slug","name","description","icon","color","points"]}}},"required":["achievements"]}}}}},"security":[{},{"bearerAuth":[]}]}},"/game/servers":{"get":{"operationId":"game.listServers","summary":"List game servers","description":"Returns all active game servers with player counts, status, region, and settings.","tags":["Game"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable server identifier - the UID assigned in the admin panel."},"name":{"type":"string"},"status":{"enum":["online","offline","starting"],"type":"string","default":"offline","description":"Online while the server is reporting a player count, otherwise offline."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Server region/location, if configured."},"game":{"anyOf":[{"enum":["ets2","ats"],"type":"string"},{"type":"null"}],"default":null,"description":"Which game this server hosts."},"players":{"type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"]},"settings":{"type":"object","properties":{"tick_rate":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collisions":{"type":"boolean"},"sync_environment":{"type":"boolean"}},"required":["tick_rate","collisions","sync_environment"]}},"required":["id","name","players","settings"]}}},"required":["servers"]}}}}},"security":[{},{"bearerAuth":[]}]}}}}