| export const contestRankingSchema = { | |
| description: 'Fetches LeetCode contest ranking for a user', | |
| tags: ['LeetCode - Contests'], | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| username: { | |
| type: 'string', | |
| description: 'LeetCode username', | |
| }, | |
| }, | |
| required: ['username'], | |
| }, | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| userContestRanking: { | |
| type: ['object', 'null'], | |
| properties: { | |
| attendedContestsCount: { type: 'number' }, | |
| rating: { type: 'number' }, | |
| globalRanking: { type: 'number' }, | |
| totalParticipants: { type: 'number' }, | |
| topPercentage: { type: 'number' }, | |
| badge: { | |
| type: 'object', | |
| properties: { | |
| name: { type: 'string' }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| userContestRankingHistory: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| attended: { type: 'boolean' }, | |
| rating: { type: 'number' }, | |
| ranking: { type: 'number' }, | |
| trendDirection: { type: 'string' }, | |
| problemsSolved: { type: 'number' }, | |
| totalProblems: { type: 'number' }, | |
| finishTimeInSeconds: { type: 'number' }, | |
| contest: { | |
| type: 'object', | |
| properties: { | |
| title: { type: 'string' }, | |
| startTime: { type: 'string' }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }; | |
| export const userRatingSchema = { | |
| description: 'Fetches LeetCode user rating', | |
| tags: ['LeetCode - Contests'], | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| username: { | |
| type: 'string', | |
| description: 'LeetCode username', | |
| }, | |
| }, | |
| required: ['username'], | |
| }, | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string' }, | |
| platform: { type: 'string' }, | |
| rating: { type: 'number' }, | |
| contests_participated: { type: 'number' }, | |
| level: { type: 'string' }, | |
| }, | |
| }, | |
| }, | |
| }; | |
| export const contestHistogramSchema = { | |
| description: 'Fetches LeetCode contest rating distribution (histogram)', | |
| tags: ['LeetCode - Contests'], | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| contestRatingHistogram: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| userCount: { type: 'number' }, | |
| ratingStart: { type: 'number' }, | |
| ratingEnd: { type: 'number' }, | |
| topPercentage: { type: 'number' }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }; | |
| export const allContestsSchema = { | |
| description: 'Fetches all LeetCode contests', | |
| tags: ['LeetCode - Contests'], | |
| response: { | |
| 200: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| title: { type: 'string' }, | |
| titleSlug: { type: 'string' }, | |
| startTime: { type: 'number' }, | |
| duration: { type: 'number' }, | |
| originStartTime: { type: 'number' }, | |
| isVirtual: { type: 'boolean' }, | |
| containsPremium: { type: 'boolean' }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }; | |
| export const dailyProblemSchema = { | |
| description: 'Fetches the LeetCode daily problem challenge', | |
| tags: ['LeetCode - Problems'], | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| questionLink: { type: 'string' }, | |
| date: { type: 'string' }, | |
| questionId: { type: 'string' }, | |
| questionFrontendId: { type: 'string' }, | |
| questionTitle: { type: 'string' }, | |
| titleSlug: { type: 'string' }, | |
| difficulty: { type: 'string' }, | |
| isPaidOnly: { type: 'boolean' }, | |
| question: { type: 'string' }, | |
| exampleTestcases: { type: 'array', items: { type: 'string' } }, | |
| topicTags: { type: 'array', items: { type: 'object', properties: { name: { type: 'string' }, slug: { type: 'string' } } } }, | |
| hints: { type: 'array', items: { type: 'string' } }, | |
| likes: { type: 'number' }, | |
| dislikes: { type: 'number' } | |
| } | |
| } | |
| } | |
| }; | |
| export const userDetailsSchema = { | |
| description: 'Fetches comprehensive LeetCode user details', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| }, | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string' }, | |
| name: { type: 'string' }, | |
| birthday: { type: 'string' }, | |
| avatar: { type: 'string' }, | |
| ranking: { type: 'number' }, | |
| reputation: { type: 'number' }, | |
| gitHub: { type: 'string' }, | |
| twitter: { type: 'string' }, | |
| linkedIN: { type: 'string' }, | |
| website: { type: 'array', items: { type: 'string' } }, | |
| country: { type: 'string' }, | |
| company: { type: 'string' }, | |
| school: { type: 'string' }, | |
| skillTags: { type: 'array', items: { type: 'string' } }, | |
| about: { type: 'string' } | |
| } | |
| } | |
| } | |
| }; | |
| export const userBadgesSchema = { | |
| description: 'Fetches all badges earned by a LeetCode user', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| }, | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| badgesCount: { type: 'number' }, | |
| badges: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| displayName: { type: 'string' }, | |
| icon: { type: 'string' } | |
| } | |
| } | |
| }, | |
| upcomingBadges: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| name: { type: 'string' }, | |
| icon: { type: 'string' } | |
| } | |
| } | |
| }, | |
| activeBadge: { | |
| type: 'object', | |
| properties: { | |
| displayName: { type: 'string' }, | |
| icon: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| export const userSolvedSchema = { | |
| description: 'Fetches numbers of problems solved by difficulty for a user', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| }, | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| solvedProblem: { type: 'number' }, | |
| easySolved: { type: 'number' }, | |
| mediumSolved: { type: 'number' }, | |
| hardSolved: { type: 'number' }, | |
| totalSubmissionNum: { type: 'array', items: { type: 'object', properties: { difficulty: { type: 'string' }, count: { type: 'number' }, submissions: { type: 'number' } } } }, | |
| acSubmissionNum: { type: 'array', items: { type: 'object', properties: { difficulty: { type: 'string' }, count: { type: 'number' }, submissions: { type: 'number' } } } } | |
| } | |
| } | |
| } | |
| }; | |
| export const trendingDiscussSchema = { | |
| description: 'Fetches trending discussion topics from LeetCode', | |
| tags: ['LeetCode - Discussion'], | |
| response: { | |
| 200: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| id: { type: 'number' }, | |
| title: { type: 'string' }, | |
| post: { | |
| type: 'object', | |
| properties: { | |
| id: { type: 'number' }, | |
| creationDate: { type: 'number' }, | |
| contentPreview: { type: 'string' }, | |
| author: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string' }, | |
| profile: { | |
| type: 'object', | |
| properties: { | |
| userAvatar: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| export const upcomingContestsSchema = { | |
| description: 'Fetches upcoming LeetCode contests', | |
| tags: ['LeetCode - Contests'], | |
| response: { | |
| 200: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| title: { type: 'string' }, | |
| titleSlug: { type: 'string' }, | |
| startTime: { type: 'number' }, | |
| duration: { type: 'number' } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| export const userSubmissionSchema = { | |
| description: 'Fetches recent submissions for a user', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| }, | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| limit: { type: 'string', description: 'Number of submissions to return' } | |
| } | |
| }, | |
| response: { | |
| 200: { | |
| type: 'object', | |
| properties: { | |
| count: { type: 'number' }, | |
| submission: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| title: { type: 'string' }, | |
| titleSlug: { type: 'string' }, | |
| timestamp: { type: 'string' }, | |
| statusDisplay: { type: 'string' }, | |
| lang: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| export const userContestSchema = { | |
| description: 'Get user contest details', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| } | |
| }; | |
| export const userContestHistorySchema = { | |
| description: 'Get user contest history', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| } | |
| }; | |
| export const userCalendarSchema = { | |
| description: 'Get user submission calendar', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| }, | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| year: { type: 'string', description: 'Year for the calendar' } | |
| } | |
| } | |
| }; | |
| export const userSkillSchema = { | |
| description: 'Get user skill stats', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| } | |
| }; | |
| export const userProfileSchema = { | |
| description: 'Get user profile', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| } | |
| }; | |
| export const userLanguageSchema = { | |
| description: 'Get user language stats', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| } | |
| }; | |
| export const userProgressSchema = { | |
| description: 'Get user progress', | |
| tags: ['LeetCode - User'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| username: { type: 'string', description: 'LeetCode username' } | |
| } | |
| } | |
| }; | |
| export const selectProblemSchema = { | |
| description: 'Get a selected problem details', | |
| tags: ['LeetCode - Problems'], | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| titleSlug: { type: 'string', description: 'Problem title slug' }, | |
| raw: { type: 'string', description: 'Whether to return raw content' } | |
| }, | |
| required: ['titleSlug'] | |
| } | |
| }; | |
| export const listProblemsSchema = { | |
| description: 'List all problems from problemset', | |
| tags: ['LeetCode - Problems'], | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| offset: { type: 'string' }, | |
| limit: { type: 'string' } | |
| } | |
| } | |
| }; | |
| export const officialSolutionSchema = { | |
| description: 'Get official solution for a problem', | |
| tags: ['LeetCode - Problems'], | |
| querystring: { | |
| type: 'object', | |
| properties: { | |
| titleSlug: { type: 'string', description: 'Problem title slug' } | |
| }, | |
| required: ['titleSlug'] | |
| } | |
| }; | |
| export const discussionTopicSchema = { | |
| description: 'Get discussion topic details', | |
| tags: ['LeetCode - Discussion'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| topicId: { type: 'string', description: 'Discussion topic ID' } | |
| } | |
| } | |
| }; | |
| export const discussionCommentsSchema = { | |
| description: 'Get discussion comments for a topic', | |
| tags: ['LeetCode - Discussion'], | |
| params: { | |
| type: 'object', | |
| properties: { | |
| topicId: { type: 'string', description: 'Discussion topic ID' } | |
| } | |
| } | |
| }; | |