From caf3b94bc82edee8ac6f6c4b4ccecacbcc90451a Mon Sep 17 00:00:00 2001 From: RanolP <16236317+RanolP@users.noreply.github.com> Date: Sat, 27 Apr 2024 14:43:56 +0000 Subject: [PATCH] Follow-up solvedac/unofficial-documentation --- dist/apis/AccountApi.d.ts | 54 - dist/apis/BackgroundApi.d.ts | 31 - dist/apis/BackgroundApi.js | 48 - dist/apis/BadgeApi.d.ts | 31 - dist/apis/BadgeApi.js | 48 - dist/apis/CoinsApi.d.ts | 38 - dist/apis/CoinsApi.js | 65 - dist/apis/DefaultApi.d.ts | 57 - dist/apis/DefaultApi.js | 119 - dist/apis/OtherApi.d.ts | 28 - dist/apis/OtherApi.js | 42 - dist/apis/ProblemApi.d.ts | 64 - dist/apis/ProblemApi.js | 123 - dist/apis/RankingApi.d.ts | 109 - dist/apis/RankingApi.js | 201 -- dist/apis/SearchApi.d.ts | 95 - dist/apis/SearchApi.js | 172 -- dist/apis/UserApi.d.ts | 57 - dist/apis/UserApi.js | 106 - dist/apis/mod.d.ts | 10 - dist/apis/mod.js | 12 - dist/cjs/apis/AccountApi.cjs | 132 ++ dist/cjs/apis/AccountApi.d.cts | 59 + dist/cjs/apis/BackgroundApi.cjs | 78 + dist/cjs/apis/BackgroundApi.d.cts | 32 + dist/cjs/apis/BadgeApi.cjs | 78 + dist/cjs/apis/BadgeApi.d.cts | 32 + dist/cjs/apis/CoinsApi.cjs | 95 + dist/cjs/apis/CoinsApi.d.cts | 41 + dist/cjs/apis/OtherApi.cjs | 69 + dist/cjs/apis/OtherApi.d.cts | 28 + dist/cjs/apis/ProblemApi.cjs | 162 ++ dist/cjs/apis/ProblemApi.d.cts | 72 + dist/cjs/apis/RankingApi.cjs | 249 ++ dist/cjs/apis/RankingApi.d.cts | 116 + dist/cjs/apis/SearchApi.cjs | 195 ++ dist/cjs/apis/SearchApi.d.cts | 79 + dist/cjs/apis/UserApi.cjs | 168 ++ dist/cjs/apis/UserApi.d.cts | 72 + dist/cjs/apis/index.cjs | 27 + dist/cjs/apis/index.d.cts | 9 + dist/cjs/index.cjs | 21 + dist/cjs/index.d.cts | 3 + dist/cjs/models/index.cjs | 498 ++++ dist/cjs/models/index.d.cts | 2750 ++++++++++++++++++++++ dist/cjs/runtime.cjs | 316 +++ dist/cjs/runtime.d.cts | 180 ++ dist/esm/apis/AccountApi.d.ts | 59 + dist/{ => esm}/apis/AccountApi.js | 33 +- dist/esm/apis/BackgroundApi.d.ts | 32 + dist/esm/apis/BackgroundApi.js | 51 + dist/esm/apis/BadgeApi.d.ts | 32 + dist/esm/apis/BadgeApi.js | 51 + dist/esm/apis/CoinsApi.d.ts | 41 + dist/esm/apis/CoinsApi.js | 68 + dist/esm/apis/OtherApi.d.ts | 28 + dist/esm/apis/OtherApi.js | 42 + dist/esm/apis/ProblemApi.d.ts | 72 + dist/esm/apis/ProblemApi.js | 135 ++ dist/esm/apis/RankingApi.d.ts | 116 + dist/esm/apis/RankingApi.js | 222 ++ dist/esm/apis/SearchApi.d.ts | 79 + dist/esm/apis/SearchApi.js | 168 ++ dist/esm/apis/UserApi.d.ts | 72 + dist/esm/apis/UserApi.js | 141 ++ dist/{ => esm}/apis/index.d.ts | 1 - dist/{ => esm}/apis/index.js | 1 - dist/{ => esm}/index.d.ts | 0 dist/{ => esm}/index.js | 0 dist/esm/models/index.d.ts | 2750 ++++++++++++++++++++++ dist/esm/models/index.js | 495 ++++ dist/{ => esm}/runtime.d.ts | 106 +- dist/esm/runtime.js | 302 +++ dist/mod.d.ts | 3 - dist/mod.js | 5 - dist/models/index.d.ts | 1972 ---------------- dist/models/index.js | 99 - dist/models/mod.d.ts | 1966 ---------------- dist/models/mod.js | 99 - dist/runtime.js | 236 -- package.json | 2 +- src/.openapi-generator/VERSION | 1 - src/apis/AccountApi.ts | 132 -- src/apis/BackgroundApi.ts | 66 - src/apis/BadgeApi.ts | 66 - src/apis/CoinsApi.ts | 83 - src/apis/DefaultApi.ts | 148 -- src/apis/OtherApi.ts | 54 - src/apis/ProblemApi.ts | 164 -- src/apis/RankingApi.ts | 284 --- src/apis/SearchApi.ts | 235 -- src/apis/UserApi.ts | 148 -- src/{ => cjs}/.openapi-generator-ignore | 0 src/{ => cjs}/.openapi-generator/FILES | 2 +- src/cjs/.openapi-generator/VERSION | 1 + src/cjs/apis/AccountApi.cts | 157 ++ src/cjs/apis/BackgroundApi.cts | 75 + src/cjs/apis/BadgeApi.cts | 75 + src/cjs/apis/CoinsApi.cts | 92 + src/cjs/apis/OtherApi.cts | 54 + src/cjs/apis/ProblemApi.cts | 198 ++ src/cjs/apis/RankingApi.cts | 316 +++ src/cjs/apis/SearchApi.cts | 263 +++ src/cjs/apis/UserApi.cts | 212 ++ src/cjs/apis/index.cts | 11 + src/cjs/index.cts | 5 + src/cjs/models/index.cts | 2810 +++++++++++++++++++++++ src/cjs/runtime.cts | 420 ++++ src/esm/.openapi-generator-ignore | 23 + src/esm/.openapi-generator/FILES | 14 + src/esm/.openapi-generator/VERSION | 1 + src/esm/apis/AccountApi.ts | 157 ++ src/esm/apis/BackgroundApi.ts | 75 + src/esm/apis/BadgeApi.ts | 75 + src/esm/apis/CoinsApi.ts | 92 + src/esm/apis/OtherApi.ts | 54 + src/esm/apis/ProblemApi.ts | 198 ++ src/esm/apis/RankingApi.ts | 316 +++ src/esm/apis/SearchApi.ts | 263 +++ src/esm/apis/UserApi.ts | 212 ++ src/{ => esm}/apis/index.ts | 1 - src/{ => esm}/apis/mod.ts | 1 - src/{ => esm}/index.ts | 0 src/{ => esm}/mod.ts | 0 src/esm/models/index.ts | 2810 +++++++++++++++++++++++ src/esm/models/mod.ts | 2810 +++++++++++++++++++++++ src/{ => esm}/runtime.ts | 324 ++- src/models/index.ts | 1977 ---------------- src/models/mod.ts | 1977 ---------------- 129 files changed, 22614 insertions(+), 11388 deletions(-) delete mode 100644 dist/apis/AccountApi.d.ts delete mode 100644 dist/apis/BackgroundApi.d.ts delete mode 100644 dist/apis/BackgroundApi.js delete mode 100644 dist/apis/BadgeApi.d.ts delete mode 100644 dist/apis/BadgeApi.js delete mode 100644 dist/apis/CoinsApi.d.ts delete mode 100644 dist/apis/CoinsApi.js delete mode 100644 dist/apis/DefaultApi.d.ts delete mode 100644 dist/apis/DefaultApi.js delete mode 100644 dist/apis/OtherApi.d.ts delete mode 100644 dist/apis/OtherApi.js delete mode 100644 dist/apis/ProblemApi.d.ts delete mode 100644 dist/apis/ProblemApi.js delete mode 100644 dist/apis/RankingApi.d.ts delete mode 100644 dist/apis/RankingApi.js delete mode 100644 dist/apis/SearchApi.d.ts delete mode 100644 dist/apis/SearchApi.js delete mode 100644 dist/apis/UserApi.d.ts delete mode 100644 dist/apis/UserApi.js delete mode 100644 dist/apis/mod.d.ts delete mode 100644 dist/apis/mod.js create mode 100644 dist/cjs/apis/AccountApi.cjs create mode 100644 dist/cjs/apis/AccountApi.d.cts create mode 100644 dist/cjs/apis/BackgroundApi.cjs create mode 100644 dist/cjs/apis/BackgroundApi.d.cts create mode 100644 dist/cjs/apis/BadgeApi.cjs create mode 100644 dist/cjs/apis/BadgeApi.d.cts create mode 100644 dist/cjs/apis/CoinsApi.cjs create mode 100644 dist/cjs/apis/CoinsApi.d.cts create mode 100644 dist/cjs/apis/OtherApi.cjs create mode 100644 dist/cjs/apis/OtherApi.d.cts create mode 100644 dist/cjs/apis/ProblemApi.cjs create mode 100644 dist/cjs/apis/ProblemApi.d.cts create mode 100644 dist/cjs/apis/RankingApi.cjs create mode 100644 dist/cjs/apis/RankingApi.d.cts create mode 100644 dist/cjs/apis/SearchApi.cjs create mode 100644 dist/cjs/apis/SearchApi.d.cts create mode 100644 dist/cjs/apis/UserApi.cjs create mode 100644 dist/cjs/apis/UserApi.d.cts create mode 100644 dist/cjs/apis/index.cjs create mode 100644 dist/cjs/apis/index.d.cts create mode 100644 dist/cjs/index.cjs create mode 100644 dist/cjs/index.d.cts create mode 100644 dist/cjs/models/index.cjs create mode 100644 dist/cjs/models/index.d.cts create mode 100644 dist/cjs/runtime.cjs create mode 100644 dist/cjs/runtime.d.cts create mode 100644 dist/esm/apis/AccountApi.d.ts rename dist/{ => esm}/apis/AccountApi.js (60%) create mode 100644 dist/esm/apis/BackgroundApi.d.ts create mode 100644 dist/esm/apis/BackgroundApi.js create mode 100644 dist/esm/apis/BadgeApi.d.ts create mode 100644 dist/esm/apis/BadgeApi.js create mode 100644 dist/esm/apis/CoinsApi.d.ts create mode 100644 dist/esm/apis/CoinsApi.js create mode 100644 dist/esm/apis/OtherApi.d.ts create mode 100644 dist/esm/apis/OtherApi.js create mode 100644 dist/esm/apis/ProblemApi.d.ts create mode 100644 dist/esm/apis/ProblemApi.js create mode 100644 dist/esm/apis/RankingApi.d.ts create mode 100644 dist/esm/apis/RankingApi.js create mode 100644 dist/esm/apis/SearchApi.d.ts create mode 100644 dist/esm/apis/SearchApi.js create mode 100644 dist/esm/apis/UserApi.d.ts create mode 100644 dist/esm/apis/UserApi.js rename dist/{ => esm}/apis/index.d.ts (89%) rename dist/{ => esm}/apis/index.js (90%) rename dist/{ => esm}/index.d.ts (100%) rename dist/{ => esm}/index.js (100%) create mode 100644 dist/esm/models/index.d.ts create mode 100644 dist/esm/models/index.js rename dist/{ => esm}/runtime.d.ts (61%) create mode 100644 dist/esm/runtime.js delete mode 100644 dist/mod.d.ts delete mode 100644 dist/mod.js delete mode 100644 dist/models/index.d.ts delete mode 100644 dist/models/index.js delete mode 100644 dist/models/mod.d.ts delete mode 100644 dist/models/mod.js delete mode 100644 dist/runtime.js delete mode 100644 src/.openapi-generator/VERSION delete mode 100644 src/apis/AccountApi.ts delete mode 100644 src/apis/BackgroundApi.ts delete mode 100644 src/apis/BadgeApi.ts delete mode 100644 src/apis/CoinsApi.ts delete mode 100644 src/apis/DefaultApi.ts delete mode 100644 src/apis/OtherApi.ts delete mode 100644 src/apis/ProblemApi.ts delete mode 100644 src/apis/RankingApi.ts delete mode 100644 src/apis/SearchApi.ts delete mode 100644 src/apis/UserApi.ts rename src/{ => cjs}/.openapi-generator-ignore (100%) rename src/{ => cjs}/.openapi-generator/FILES (89%) create mode 100644 src/cjs/.openapi-generator/VERSION create mode 100644 src/cjs/apis/AccountApi.cts create mode 100644 src/cjs/apis/BackgroundApi.cts create mode 100644 src/cjs/apis/BadgeApi.cts create mode 100644 src/cjs/apis/CoinsApi.cts create mode 100644 src/cjs/apis/OtherApi.cts create mode 100644 src/cjs/apis/ProblemApi.cts create mode 100644 src/cjs/apis/RankingApi.cts create mode 100644 src/cjs/apis/SearchApi.cts create mode 100644 src/cjs/apis/UserApi.cts create mode 100644 src/cjs/apis/index.cts create mode 100644 src/cjs/index.cts create mode 100644 src/cjs/models/index.cts create mode 100644 src/cjs/runtime.cts create mode 100644 src/esm/.openapi-generator-ignore create mode 100644 src/esm/.openapi-generator/FILES create mode 100644 src/esm/.openapi-generator/VERSION create mode 100644 src/esm/apis/AccountApi.ts create mode 100644 src/esm/apis/BackgroundApi.ts create mode 100644 src/esm/apis/BadgeApi.ts create mode 100644 src/esm/apis/CoinsApi.ts create mode 100644 src/esm/apis/OtherApi.ts create mode 100644 src/esm/apis/ProblemApi.ts create mode 100644 src/esm/apis/RankingApi.ts create mode 100644 src/esm/apis/SearchApi.ts create mode 100644 src/esm/apis/UserApi.ts rename src/{ => esm}/apis/index.ts (90%) rename src/{ => esm}/apis/mod.ts (90%) rename src/{ => esm}/index.ts (100%) rename src/{ => esm}/mod.ts (100%) create mode 100644 src/esm/models/index.ts create mode 100644 src/esm/models/mod.ts rename src/{ => esm}/runtime.ts (54%) delete mode 100644 src/models/index.ts delete mode 100644 src/models/mod.ts diff --git a/dist/apis/AccountApi.d.ts b/dist/apis/AccountApi.d.ts deleted file mode 100644 index 9b8d2fa..0000000 --- a/dist/apis/AccountApi.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { InlineObject, InlineObject1, InlineResponse200 } from '../models/index.js'; -export interface RedeemCodeRequest { - inlineObject: InlineObject; -} -export interface UpdateAccountSettingsRequest { - inlineObject1: InlineObject1; -} -/** - * - */ -export declare class AccountApi extends runtime.BaseAPI { - /** - * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 코드 교환하기 - */ - redeemCodeRaw(requestParameters: RedeemCodeRequest, initOverrides?: RequestInit): Promise>; - /** - * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 코드 교환하기 - */ - redeemCode(requestParameters: RedeemCodeRequest, initOverrides?: RequestInit): Promise; - /** - * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 계정 설정 변경하기 - */ - updateAccountSettingsRaw(requestParameters: UpdateAccountSettingsRequest, initOverrides?: RequestInit): Promise>; - /** - * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 계정 설정 변경하기 - */ - updateAccountSettings(requestParameters: UpdateAccountSettingsRequest, initOverrides?: RequestInit): Promise; - /** - * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 로그인 정보 가져오기 - */ - verifyAccountCredentialsRaw(initOverrides?: RequestInit): Promise>; - /** - * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 로그인 정보 가져오기 - */ - verifyAccountCredentials(initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/BackgroundApi.d.ts b/dist/apis/BackgroundApi.d.ts deleted file mode 100644 index 32eaef1..0000000 --- a/dist/apis/BackgroundApi.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { Background } from '../models/index.js'; -export interface GetBackgroundRequest { - backgroundId: string; -} -/** - * - */ -export declare class BackgroundApi extends runtime.BaseAPI { - /** - * 배경의 정보를 가져옵니다. - * 배경 정보 가져오기 - */ - getBackgroundRaw(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit): Promise>; - /** - * 배경의 정보를 가져옵니다. - * 배경 정보 가져오기 - */ - getBackground(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/BackgroundApi.js b/dist/apis/BackgroundApi.js deleted file mode 100644 index d50fed8..0000000 --- a/dist/apis/BackgroundApi.js +++ /dev/null @@ -1,48 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class BackgroundApi extends runtime.BaseAPI { - /** - * 배경의 정보를 가져옵니다. - * 배경 정보 가져오기 - */ - async getBackgroundRaw(requestParameters, initOverrides) { - if (requestParameters.backgroundId === null || requestParameters.backgroundId === undefined) { - throw new runtime.RequiredError('backgroundId', 'Required parameter requestParameters.backgroundId was null or undefined when calling getBackground.'); - } - const queryParameters = {}; - if (requestParameters.backgroundId !== undefined) { - queryParameters['backgroundId'] = requestParameters.backgroundId; - } - const headerParameters = {}; - const response = await this.request({ - path: `/background/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 배경의 정보를 가져옵니다. - * 배경 정보 가져오기 - */ - async getBackground(requestParameters, initOverrides) { - const response = await this.getBackgroundRaw(requestParameters, initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/BadgeApi.d.ts b/dist/apis/BadgeApi.d.ts deleted file mode 100644 index 720680d..0000000 --- a/dist/apis/BadgeApi.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { Badge } from '../models/index.js'; -export interface GetBadgeRequest { - badgeId: string; -} -/** - * - */ -export declare class BadgeApi extends runtime.BaseAPI { - /** - * 뱃지의 정보를 가져옵니다. - * 뱃지 정보 가져오기 - */ - getBadgeRaw(requestParameters: GetBadgeRequest, initOverrides?: RequestInit): Promise>; - /** - * 뱃지의 정보를 가져옵니다. - * 뱃지 정보 가져오기 - */ - getBadge(requestParameters: GetBadgeRequest, initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/BadgeApi.js b/dist/apis/BadgeApi.js deleted file mode 100644 index c0f7a35..0000000 --- a/dist/apis/BadgeApi.js +++ /dev/null @@ -1,48 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class BadgeApi extends runtime.BaseAPI { - /** - * 뱃지의 정보를 가져옵니다. - * 뱃지 정보 가져오기 - */ - async getBadgeRaw(requestParameters, initOverrides) { - if (requestParameters.badgeId === null || requestParameters.badgeId === undefined) { - throw new runtime.RequiredError('badgeId', 'Required parameter requestParameters.badgeId was null or undefined when calling getBadge.'); - } - const queryParameters = {}; - if (requestParameters.badgeId !== undefined) { - queryParameters['badgeId'] = requestParameters.badgeId; - } - const headerParameters = {}; - const response = await this.request({ - path: `/badge/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 뱃지의 정보를 가져옵니다. - * 뱃지 정보 가져오기 - */ - async getBadge(requestParameters, initOverrides) { - const response = await this.getBadgeRaw(requestParameters, initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/CoinsApi.d.ts b/dist/apis/CoinsApi.d.ts deleted file mode 100644 index 7129db0..0000000 --- a/dist/apis/CoinsApi.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { CoinshopProduct, InlineResponse2001 } from '../models/index.js'; -/** - * - */ -export declare class CoinsApi extends runtime.BaseAPI { - /** - * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. - * 코인샵 판매 목록 가져오기 - */ - getCoinShopProductsRaw(initOverrides?: RequestInit): Promise>>; - /** - * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. - * 코인샵 판매 목록 가져오기 - */ - getCoinShopProducts(initOverrides?: RequestInit): Promise>; - /** - * 현재 코인 → 별조각 환율을 가져옵니다. - * 코인 → 별조각 환율 가져오기 - */ - getCoinsExchangeRateRaw(initOverrides?: RequestInit): Promise>; - /** - * 현재 코인 → 별조각 환율을 가져옵니다. - * 코인 → 별조각 환율 가져오기 - */ - getCoinsExchangeRate(initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/CoinsApi.js b/dist/apis/CoinsApi.js deleted file mode 100644 index 2eb48d2..0000000 --- a/dist/apis/CoinsApi.js +++ /dev/null @@ -1,65 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class CoinsApi extends runtime.BaseAPI { - /** - * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. - * 코인샵 판매 목록 가져오기 - */ - async getCoinShopProductsRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/coins/shop/list`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. - * 코인샵 판매 목록 가져오기 - */ - async getCoinShopProducts(initOverrides) { - const response = await this.getCoinShopProductsRaw(initOverrides); - return await response.value(); - } - /** - * 현재 코인 → 별조각 환율을 가져옵니다. - * 코인 → 별조각 환율 가져오기 - */ - async getCoinsExchangeRateRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/coins/exchange_rate`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 현재 코인 → 별조각 환율을 가져옵니다. - * 코인 → 별조각 환율 가져오기 - */ - async getCoinsExchangeRate(initOverrides) { - const response = await this.getCoinsExchangeRateRaw(initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/DefaultApi.d.ts b/dist/apis/DefaultApi.d.ts deleted file mode 100644 index c24c7aa..0000000 --- a/dist/apis/DefaultApi.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export declare class DefaultApi extends runtime.BaseAPI { - /** - * TODO - */ - postShowGetRaw(initOverrides?: RequestInit): Promise>; - /** - * TODO - */ - postShowGet(initOverrides?: RequestInit): Promise; - /** - * TODO - */ - tagListGetRaw(initOverrides?: RequestInit): Promise>; - /** - * TODO - */ - tagListGet(initOverrides?: RequestInit): Promise; - /** - * TODO - */ - userClassStatsGetRaw(initOverrides?: RequestInit): Promise>; - /** - * TODO - */ - userClassStatsGet(initOverrides?: RequestInit): Promise; - /** - * TODO - */ - userContributionStatsGetRaw(initOverrides?: RequestInit): Promise>; - /** - * TODO - */ - userContributionStatsGet(initOverrides?: RequestInit): Promise; - /** - * TODO - */ - userProblemTagStatsGetRaw(initOverrides?: RequestInit): Promise>; - /** - * TODO - */ - userProblemTagStatsGet(initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/DefaultApi.js b/dist/apis/DefaultApi.js deleted file mode 100644 index 20656d7..0000000 --- a/dist/apis/DefaultApi.js +++ /dev/null @@ -1,119 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class DefaultApi extends runtime.BaseAPI { - /** - * TODO - */ - async postShowGetRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/post/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.VoidApiResponse(response); - } - /** - * TODO - */ - async postShowGet(initOverrides) { - await this.postShowGetRaw(initOverrides); - } - /** - * TODO - */ - async tagListGetRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/tag/list`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.VoidApiResponse(response); - } - /** - * TODO - */ - async tagListGet(initOverrides) { - await this.tagListGetRaw(initOverrides); - } - /** - * TODO - */ - async userClassStatsGetRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/user/class_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.VoidApiResponse(response); - } - /** - * TODO - */ - async userClassStatsGet(initOverrides) { - await this.userClassStatsGetRaw(initOverrides); - } - /** - * TODO - */ - async userContributionStatsGetRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/user/contribution_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.VoidApiResponse(response); - } - /** - * TODO - */ - async userContributionStatsGet(initOverrides) { - await this.userContributionStatsGetRaw(initOverrides); - } - /** - * TODO - */ - async userProblemTagStatsGetRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/user/problem_tag_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.VoidApiResponse(response); - } - /** - * TODO - */ - async userProblemTagStatsGet(initOverrides) { - await this.userProblemTagStatsGetRaw(initOverrides); - } -} diff --git a/dist/apis/OtherApi.d.ts b/dist/apis/OtherApi.d.ts deleted file mode 100644 index 798a7b8..0000000 --- a/dist/apis/OtherApi.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { SolvedAcStatistics } from '../models/index.js'; -/** - * - */ -export declare class OtherApi extends runtime.BaseAPI { - /** - * solved.ac 통계를 가져옵니다. - * solved.ac 통계 가져오기 - */ - getSiteStatsRaw(initOverrides?: RequestInit): Promise>; - /** - * solved.ac 통계를 가져옵니다. - * solved.ac 통계 가져오기 - */ - getSiteStats(initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/OtherApi.js b/dist/apis/OtherApi.js deleted file mode 100644 index 66375fb..0000000 --- a/dist/apis/OtherApi.js +++ /dev/null @@ -1,42 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class OtherApi extends runtime.BaseAPI { - /** - * solved.ac 통계를 가져옵니다. - * solved.ac 통계 가져오기 - */ - async getSiteStatsRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/site/stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * solved.ac 통계를 가져옵니다. - * solved.ac 통계 가져오기 - */ - async getSiteStats(initOverrides) { - const response = await this.getSiteStatsRaw(initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/ProblemApi.d.ts b/dist/apis/ProblemApi.d.ts deleted file mode 100644 index 04eb218..0000000 --- a/dist/apis/ProblemApi.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { InlineResponse2002, InlineResponse2003, TaggedProblem } from '../models/index.js'; -export interface GetProblemByIdRequest { - problemId: number; -} -export interface GetProblemByIdArrayRequest { - problemIds: string; -} -/** - * - */ -export declare class ProblemApi extends runtime.BaseAPI { - /** - * 문제 개수를 문제 CLASS별로 가져옵니다. - * CLASS별 문제 수 가져오기 - */ - getClassProblemCountRaw(initOverrides?: RequestInit): Promise>>; - /** - * 문제 개수를 문제 CLASS별로 가져옵니다. - * CLASS별 문제 수 가져오기 - */ - getClassProblemCount(initOverrides?: RequestInit): Promise>; - /** - * 해당하는 ID의 문제를 가져옵니다. - * ID로 문제 가져오기 - */ - getProblemByIdRaw(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit): Promise>; - /** - * 해당하는 ID의 문제를 가져옵니다. - * ID로 문제 가져오기 - */ - getProblemById(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit): Promise; - /** - * 해당하는 ID의 문제 목록을 가져옵니다. - * ID 목록으로 문제 목록 가져오기 - */ - getProblemByIdArrayRaw(requestParameters: GetProblemByIdArrayRequest, initOverrides?: RequestInit): Promise>>; - /** - * 해당하는 ID의 문제 목록을 가져옵니다. - * ID 목록으로 문제 목록 가져오기 - */ - getProblemByIdArray(requestParameters: GetProblemByIdArrayRequest, initOverrides?: RequestInit): Promise>; - /** - * 문제 개수를 문제 수준별로 가져옵니다. - * 수준별 문제 수 가져오기 - */ - getProblemLevelRaw(initOverrides?: RequestInit): Promise>>; - /** - * 문제 개수를 문제 수준별로 가져옵니다. - * 수준별 문제 수 가져오기 - */ - getProblemLevel(initOverrides?: RequestInit): Promise>; -} diff --git a/dist/apis/ProblemApi.js b/dist/apis/ProblemApi.js deleted file mode 100644 index 58877d5..0000000 --- a/dist/apis/ProblemApi.js +++ /dev/null @@ -1,123 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class ProblemApi extends runtime.BaseAPI { - /** - * 문제 개수를 문제 CLASS별로 가져옵니다. - * CLASS별 문제 수 가져오기 - */ - async getClassProblemCountRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/problem/class`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 문제 개수를 문제 CLASS별로 가져옵니다. - * CLASS별 문제 수 가져오기 - */ - async getClassProblemCount(initOverrides) { - const response = await this.getClassProblemCountRaw(initOverrides); - return await response.value(); - } - /** - * 해당하는 ID의 문제를 가져옵니다. - * ID로 문제 가져오기 - */ - async getProblemByIdRaw(requestParameters, initOverrides) { - if (requestParameters.problemId === null || requestParameters.problemId === undefined) { - throw new runtime.RequiredError('problemId', 'Required parameter requestParameters.problemId was null or undefined when calling getProblemById.'); - } - const queryParameters = {}; - if (requestParameters.problemId !== undefined) { - queryParameters['problemId'] = requestParameters.problemId; - } - const headerParameters = {}; - const response = await this.request({ - path: `/problem/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 해당하는 ID의 문제를 가져옵니다. - * ID로 문제 가져오기 - */ - async getProblemById(requestParameters, initOverrides) { - const response = await this.getProblemByIdRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 해당하는 ID의 문제 목록을 가져옵니다. - * ID 목록으로 문제 목록 가져오기 - */ - async getProblemByIdArrayRaw(requestParameters, initOverrides) { - if (requestParameters.problemIds === null || requestParameters.problemIds === undefined) { - throw new runtime.RequiredError('problemIds', 'Required parameter requestParameters.problemIds was null or undefined when calling getProblemByIdArray.'); - } - const queryParameters = {}; - if (requestParameters.problemIds !== undefined) { - queryParameters['problemIds'] = requestParameters.problemIds; - } - const headerParameters = {}; - const response = await this.request({ - path: `/problem/lookup`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 해당하는 ID의 문제 목록을 가져옵니다. - * ID 목록으로 문제 목록 가져오기 - */ - async getProblemByIdArray(requestParameters, initOverrides) { - const response = await this.getProblemByIdArrayRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 문제 개수를 문제 수준별로 가져옵니다. - * 수준별 문제 수 가져오기 - */ - async getProblemLevelRaw(initOverrides) { - const queryParameters = {}; - const headerParameters = {}; - const response = await this.request({ - path: `/problem/level`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 문제 개수를 문제 수준별로 가져옵니다. - * 수준별 문제 수 가져오기 - */ - async getProblemLevel(initOverrides) { - const response = await this.getProblemLevelRaw(initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/RankingApi.d.ts b/dist/apis/RankingApi.d.ts deleted file mode 100644 index 14a0583..0000000 --- a/dist/apis/RankingApi.d.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { InlineResponse20010, InlineResponse2004, InlineResponse2005, InlineResponse2006, InlineResponse2007, InlineResponse2008, InlineResponse2009 } from '../models/index.js'; -export interface GetOrganizationRankingRequest { - page?: number; -} -export interface GetRankingByClassRequest { - page?: number; -} -export interface GetRankingByContributionRequest { - page?: number; -} -export interface GetRankingByStreakRequest { - page?: number; -} -export interface GetRankingByTierRequest { - page?: number; -} -export interface GetReverseRivalRankingRequest { - page?: number; -} -export interface GetRivalRankingRequest { - page?: number; -} -/** - * - */ -export declare class RankingApi extends runtime.BaseAPI { - /** - * 레이팅에 따른 조직 순위를 가져옵니다. - * 조직 순위 가져오기 - */ - getOrganizationRankingRaw(requestParameters: GetOrganizationRankingRequest, initOverrides?: RequestInit): Promise>; - /** - * 레이팅에 따른 조직 순위를 가져옵니다. - * 조직 순위 가져오기 - */ - getOrganizationRanking(requestParameters: GetOrganizationRankingRequest, initOverrides?: RequestInit): Promise; - /** - * 사용자 CLASS에 따른 순위를 가져옵니다. - * CLASS 순위 가져오기 - */ - getRankingByClassRaw(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit): Promise>; - /** - * 사용자 CLASS에 따른 순위를 가져옵니다. - * CLASS 순위 가져오기 - */ - getRankingByClass(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit): Promise; - /** - * 기여 횟수에 따른 순위를 가져옵니다. - * 기여 순위 가져오기 - */ - getRankingByContributionRaw(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit): Promise>; - /** - * 기여 횟수에 따른 순위를 가져옵니다. - * 기여 순위 가져오기 - */ - getRankingByContribution(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit): Promise; - /** - * 최장 스트릭에 따른 순위를 가져옵니다. - * 최장 스트릭 순위 가져오기 - */ - getRankingByStreakRaw(requestParameters: GetRankingByStreakRequest, initOverrides?: RequestInit): Promise>; - /** - * 최장 스트릭에 따른 순위를 가져옵니다. - * 최장 스트릭 순위 가져오기 - */ - getRankingByStreak(requestParameters: GetRankingByStreakRequest, initOverrides?: RequestInit): Promise; - /** - * 사용자 티어에 따른 순위를 가져옵니다. - * 티어 순위 가져오기 - */ - getRankingByTierRaw(requestParameters: GetRankingByTierRequest, initOverrides?: RequestInit): Promise>; - /** - * 사용자 티어에 따른 순위를 가져옵니다. - * 티어 순위 가져오기 - */ - getRankingByTier(requestParameters: GetRankingByTierRequest, initOverrides?: RequestInit): Promise; - /** - * 현재 사용자의 역라이벌 티어 순위를 가져옵니다. - * 역라이벌 순위 가져오기 - */ - getReverseRivalRankingRaw(requestParameters: GetReverseRivalRankingRequest, initOverrides?: RequestInit): Promise>; - /** - * 현재 사용자의 역라이벌 티어 순위를 가져옵니다. - * 역라이벌 순위 가져오기 - */ - getReverseRivalRanking(requestParameters: GetReverseRivalRankingRequest, initOverrides?: RequestInit): Promise; - /** - * 현재 사용자의 라이벌 티어 순위를 가져옵니다. - * 라이벌 순위 가져오기 - */ - getRivalRankingRaw(requestParameters: GetRivalRankingRequest, initOverrides?: RequestInit): Promise>; - /** - * 현재 사용자의 라이벌 티어 순위를 가져옵니다. - * 라이벌 순위 가져오기 - */ - getRivalRanking(requestParameters: GetRivalRankingRequest, initOverrides?: RequestInit): Promise; -} diff --git a/dist/apis/RankingApi.js b/dist/apis/RankingApi.js deleted file mode 100644 index 6d072fb..0000000 --- a/dist/apis/RankingApi.js +++ /dev/null @@ -1,201 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class RankingApi extends runtime.BaseAPI { - /** - * 레이팅에 따른 조직 순위를 가져옵니다. - * 조직 순위 가져오기 - */ - async getOrganizationRankingRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/organization`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 레이팅에 따른 조직 순위를 가져옵니다. - * 조직 순위 가져오기 - */ - async getOrganizationRanking(requestParameters, initOverrides) { - const response = await this.getOrganizationRankingRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 사용자 CLASS에 따른 순위를 가져옵니다. - * CLASS 순위 가져오기 - */ - async getRankingByClassRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/class`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 사용자 CLASS에 따른 순위를 가져옵니다. - * CLASS 순위 가져오기 - */ - async getRankingByClass(requestParameters, initOverrides) { - const response = await this.getRankingByClassRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 기여 횟수에 따른 순위를 가져옵니다. - * 기여 순위 가져오기 - */ - async getRankingByContributionRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/contribution`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 기여 횟수에 따른 순위를 가져옵니다. - * 기여 순위 가져오기 - */ - async getRankingByContribution(requestParameters, initOverrides) { - const response = await this.getRankingByContributionRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 최장 스트릭에 따른 순위를 가져옵니다. - * 최장 스트릭 순위 가져오기 - */ - async getRankingByStreakRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/streak`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 최장 스트릭에 따른 순위를 가져옵니다. - * 최장 스트릭 순위 가져오기 - */ - async getRankingByStreak(requestParameters, initOverrides) { - const response = await this.getRankingByStreakRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 사용자 티어에 따른 순위를 가져옵니다. - * 티어 순위 가져오기 - */ - async getRankingByTierRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/tier`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 사용자 티어에 따른 순위를 가져옵니다. - * 티어 순위 가져오기 - */ - async getRankingByTier(requestParameters, initOverrides) { - const response = await this.getRankingByTierRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 현재 사용자의 역라이벌 티어 순위를 가져옵니다. - * 역라이벌 순위 가져오기 - */ - async getReverseRivalRankingRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/reverse_rival`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 현재 사용자의 역라이벌 티어 순위를 가져옵니다. - * 역라이벌 순위 가져오기 - */ - async getReverseRivalRanking(requestParameters, initOverrides) { - const response = await this.getReverseRivalRankingRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 현재 사용자의 라이벌 티어 순위를 가져옵니다. - * 라이벌 순위 가져오기 - */ - async getRivalRankingRaw(requestParameters, initOverrides) { - const queryParameters = {}; - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/ranking/rival`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 현재 사용자의 라이벌 티어 순위를 가져옵니다. - * 라이벌 순위 가져오기 - */ - async getRivalRanking(requestParameters, initOverrides) { - const response = await this.getRivalRankingRaw(requestParameters, initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/SearchApi.d.ts b/dist/apis/SearchApi.d.ts deleted file mode 100644 index a9fe5ba..0000000 --- a/dist/apis/SearchApi.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { InlineResponse20011, InlineResponse20012, InlineResponse20013, InlineResponse20014 } from '../models/index.js'; -export interface GetSearchAutoCompletionRequest { - query: string; -} -export interface SearchProblemRequest { - query: string; - page?: number; - sort?: SearchProblemSortEnum; - direction?: SearchProblemDirectionEnum; -} -export interface SearchProblemTagRequest { - query: string; - page?: number; -} -export interface SearchUserRequest { - query: string; - page?: number; -} -/** - * - */ -export declare class SearchApi extends runtime.BaseAPI { - /** - * 주어진 쿼리에 따라 검색해보고, 자동 완성에 적합하도록 가공한 정보를 돌려줍니다. - * 검색 자동완성 구하기 - */ - getSearchAutoCompletionRaw(requestParameters: GetSearchAutoCompletionRequest, initOverrides?: RequestInit): Promise>; - /** - * 주어진 쿼리에 따라 검색해보고, 자동 완성에 적합하도록 가공한 정보를 돌려줍니다. - * 검색 자동완성 구하기 - */ - getSearchAutoCompletion(requestParameters: GetSearchAutoCompletionRequest, initOverrides?: RequestInit): Promise; - /** - * 주어진 쿼리에 따라 문제를 검색합니다. - * 문제 검색하기 - */ - searchProblemRaw(requestParameters: SearchProblemRequest, initOverrides?: RequestInit): Promise>; - /** - * 주어진 쿼리에 따라 문제를 검색합니다. - * 문제 검색하기 - */ - searchProblem(requestParameters: SearchProblemRequest, initOverrides?: RequestInit): Promise; - /** - * 주어진 쿼리에 따라 문제 태그를 검색합니다. - * 문제 태그 검색하기 - */ - searchProblemTagRaw(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit): Promise>; - /** - * 주어진 쿼리에 따라 문제 태그를 검색합니다. - * 문제 태그 검색하기 - */ - searchProblemTag(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit): Promise; - /** - * 주어진 쿼리에 따라 사용자를 검색합니다. - * 사용자 검색하기 - */ - searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit): Promise>; - /** - * 주어진 쿼리에 따라 사용자를 검색합니다. - * 사용자 검색하기 - */ - searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit): Promise; -} -/** - * @export - * @enum {string} - */ -export declare enum SearchProblemSortEnum { - Id = "id", - Level = "level", - Title = "title", - Solved = "solved", - AverageTry = "average_try", - Random = "random" -} -/** - * @export - * @enum {string} - */ -export declare enum SearchProblemDirectionEnum { - Asc = "asc", - Desc = "desc" -} diff --git a/dist/apis/SearchApi.js b/dist/apis/SearchApi.js deleted file mode 100644 index a43d7ad..0000000 --- a/dist/apis/SearchApi.js +++ /dev/null @@ -1,172 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class SearchApi extends runtime.BaseAPI { - /** - * 주어진 쿼리에 따라 검색해보고, 자동 완성에 적합하도록 가공한 정보를 돌려줍니다. - * 검색 자동완성 구하기 - */ - async getSearchAutoCompletionRaw(requestParameters, initOverrides) { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query', 'Required parameter requestParameters.query was null or undefined when calling getSearchAutoCompletion.'); - } - const queryParameters = {}; - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - const headerParameters = {}; - const response = await this.request({ - path: `/search/suggestion`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 주어진 쿼리에 따라 검색해보고, 자동 완성에 적합하도록 가공한 정보를 돌려줍니다. - * 검색 자동완성 구하기 - */ - async getSearchAutoCompletion(requestParameters, initOverrides) { - const response = await this.getSearchAutoCompletionRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 주어진 쿼리에 따라 문제를 검색합니다. - * 문제 검색하기 - */ - async searchProblemRaw(requestParameters, initOverrides) { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query', 'Required parameter requestParameters.query was null or undefined when calling searchProblem.'); - } - const queryParameters = {}; - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - if (requestParameters.sort !== undefined) { - queryParameters['sort'] = requestParameters.sort; - } - if (requestParameters.direction !== undefined) { - queryParameters['direction'] = requestParameters.direction; - } - const headerParameters = {}; - const response = await this.request({ - path: `/search/problem`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 주어진 쿼리에 따라 문제를 검색합니다. - * 문제 검색하기 - */ - async searchProblem(requestParameters, initOverrides) { - const response = await this.searchProblemRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 주어진 쿼리에 따라 문제 태그를 검색합니다. - * 문제 태그 검색하기 - */ - async searchProblemTagRaw(requestParameters, initOverrides) { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query', 'Required parameter requestParameters.query was null or undefined when calling searchProblemTag.'); - } - const queryParameters = {}; - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/search/tag`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 주어진 쿼리에 따라 문제 태그를 검색합니다. - * 문제 태그 검색하기 - */ - async searchProblemTag(requestParameters, initOverrides) { - const response = await this.searchProblemTagRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 주어진 쿼리에 따라 사용자를 검색합니다. - * 사용자 검색하기 - */ - async searchUserRaw(requestParameters, initOverrides) { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query', 'Required parameter requestParameters.query was null or undefined when calling searchUser.'); - } - const queryParameters = {}; - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - const headerParameters = {}; - const response = await this.request({ - path: `/search/user`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 주어진 쿼리에 따라 사용자를 검색합니다. - * 사용자 검색하기 - */ - async searchUser(requestParameters, initOverrides) { - const response = await this.searchUserRaw(requestParameters, initOverrides); - return await response.value(); - } -} -/** - * @export - * @enum {string} - */ -export var SearchProblemSortEnum; -(function (SearchProblemSortEnum) { - SearchProblemSortEnum["Id"] = "id"; - SearchProblemSortEnum["Level"] = "level"; - SearchProblemSortEnum["Title"] = "title"; - SearchProblemSortEnum["Solved"] = "solved"; - SearchProblemSortEnum["AverageTry"] = "average_try"; - SearchProblemSortEnum["Random"] = "random"; -})(SearchProblemSortEnum || (SearchProblemSortEnum = {})); -/** - * @export - * @enum {string} - */ -export var SearchProblemDirectionEnum; -(function (SearchProblemDirectionEnum) { - SearchProblemDirectionEnum["Asc"] = "asc"; - SearchProblemDirectionEnum["Desc"] = "desc"; -})(SearchProblemDirectionEnum || (SearchProblemDirectionEnum = {})); diff --git a/dist/apis/UserApi.d.ts b/dist/apis/UserApi.d.ts deleted file mode 100644 index 52d5620..0000000 --- a/dist/apis/UserApi.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -import { FullUser, InlineResponse20015, Organization } from '../models/index.js'; -export interface GetUserRequest { - handle: string; -} -export interface GetUserOrganizationsRequest { - handle: string; -} -export interface GetUserProblemStatsRequest { - handle: string; -} -/** - * - */ -export declare class UserApi extends runtime.BaseAPI { - /** - * 사용자의 정보를 가져옵니다. 만약 로그인한 경우, 라이벌 여부도 가져옵니다. - * 사용자 정보 가져오기 - */ - getUserRaw(requestParameters: GetUserRequest, initOverrides?: RequestInit): Promise>; - /** - * 사용자의 정보를 가져옵니다. 만약 로그인한 경우, 라이벌 여부도 가져옵니다. - * 사용자 정보 가져오기 - */ - getUser(requestParameters: GetUserRequest, initOverrides?: RequestInit): Promise; - /** - * 사용자가 속한 조직 목록를 가져옵니다. - * 사용자가 속한 조직 목록 가져오기 - */ - getUserOrganizationsRaw(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit): Promise>>; - /** - * 사용자가 속한 조직 목록를 가져옵니다. - * 사용자가 속한 조직 목록 가져오기 - */ - getUserOrganizations(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit): Promise>; - /** - * 사용자가 푼 문제 개수를 문제 수준별로 가져옵니다. - * 사용자가 푼 문제 개수 수준별로 가져오기 - */ - getUserProblemStatsRaw(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit): Promise>>; - /** - * 사용자가 푼 문제 개수를 문제 수준별로 가져옵니다. - * 사용자가 푼 문제 개수 수준별로 가져오기 - */ - getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit): Promise>; -} diff --git a/dist/apis/UserApi.js b/dist/apis/UserApi.js deleted file mode 100644 index d23aa9c..0000000 --- a/dist/apis/UserApi.js +++ /dev/null @@ -1,106 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -import * as runtime from '../runtime.js'; -/** - * - */ -export class UserApi extends runtime.BaseAPI { - /** - * 사용자의 정보를 가져옵니다. 만약 로그인한 경우, 라이벌 여부도 가져옵니다. - * 사용자 정보 가져오기 - */ - async getUserRaw(requestParameters, initOverrides) { - if (requestParameters.handle === null || requestParameters.handle === undefined) { - throw new runtime.RequiredError('handle', 'Required parameter requestParameters.handle was null or undefined when calling getUser.'); - } - const queryParameters = {}; - if (requestParameters.handle !== undefined) { - queryParameters['handle'] = requestParameters.handle; - } - const headerParameters = {}; - const response = await this.request({ - path: `/user/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 사용자의 정보를 가져옵니다. 만약 로그인한 경우, 라이벌 여부도 가져옵니다. - * 사용자 정보 가져오기 - */ - async getUser(requestParameters, initOverrides) { - const response = await this.getUserRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 사용자가 속한 조직 목록를 가져옵니다. - * 사용자가 속한 조직 목록 가져오기 - */ - async getUserOrganizationsRaw(requestParameters, initOverrides) { - if (requestParameters.handle === null || requestParameters.handle === undefined) { - throw new runtime.RequiredError('handle', 'Required parameter requestParameters.handle was null or undefined when calling getUserOrganizations.'); - } - const queryParameters = {}; - if (requestParameters.handle !== undefined) { - queryParameters['handle'] = requestParameters.handle; - } - const headerParameters = {}; - const response = await this.request({ - path: `/user/organizations`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 사용자가 속한 조직 목록를 가져옵니다. - * 사용자가 속한 조직 목록 가져오기 - */ - async getUserOrganizations(requestParameters, initOverrides) { - const response = await this.getUserOrganizationsRaw(requestParameters, initOverrides); - return await response.value(); - } - /** - * 사용자가 푼 문제 개수를 문제 수준별로 가져옵니다. - * 사용자가 푼 문제 개수 수준별로 가져오기 - */ - async getUserProblemStatsRaw(requestParameters, initOverrides) { - if (requestParameters.handle === null || requestParameters.handle === undefined) { - throw new runtime.RequiredError('handle', 'Required parameter requestParameters.handle was null or undefined when calling getUserProblemStats.'); - } - const queryParameters = {}; - if (requestParameters.handle !== undefined) { - queryParameters['handle'] = requestParameters.handle; - } - const headerParameters = {}; - const response = await this.request({ - path: `/user/problem_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - return new runtime.JSONApiResponse(response); - } - /** - * 사용자가 푼 문제 개수를 문제 수준별로 가져옵니다. - * 사용자가 푼 문제 개수 수준별로 가져오기 - */ - async getUserProblemStats(requestParameters, initOverrides) { - const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides); - return await response.value(); - } -} diff --git a/dist/apis/mod.d.ts b/dist/apis/mod.d.ts deleted file mode 100644 index e899bf1..0000000 --- a/dist/apis/mod.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export * from './AccountApi.js'; -export * from './BackgroundApi.js'; -export * from './BadgeApi.js'; -export * from './CoinsApi.js'; -export * from './DefaultApi.js'; -export * from './OtherApi.js'; -export * from './ProblemApi.js'; -export * from './RankingApi.js'; -export * from './SearchApi.js'; -export * from './UserApi.js'; diff --git a/dist/apis/mod.js b/dist/apis/mod.js deleted file mode 100644 index 455dd63..0000000 --- a/dist/apis/mod.js +++ /dev/null @@ -1,12 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export * from './AccountApi.js'; -export * from './BackgroundApi.js'; -export * from './BadgeApi.js'; -export * from './CoinsApi.js'; -export * from './DefaultApi.js'; -export * from './OtherApi.js'; -export * from './ProblemApi.js'; -export * from './RankingApi.js'; -export * from './SearchApi.js'; -export * from './UserApi.js'; diff --git a/dist/cjs/apis/AccountApi.cjs b/dist/cjs/apis/AccountApi.cjs new file mode 100644 index 0000000..e0368cb --- /dev/null +++ b/dist/cjs/apis/AccountApi.cjs @@ -0,0 +1,132 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AccountApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class AccountApi extends runtime.BaseAPI { + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + async redeemCodeRaw(requestParameters, initOverrides) { + if (requestParameters['redeemCodeRequest'] == null) { + throw new runtime.RequiredError('redeemCodeRequest', 'Required parameter "redeemCodeRequest" was null or undefined when calling redeemCode().'); + } + const queryParameters = {}; + const headerParameters = {}; + headerParameters['Content-Type'] = 'application/json'; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/account/redeem`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters['redeemCodeRequest'], + }, initOverrides); + return new runtime.VoidApiResponse(response); + } + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + async redeemCode(requestParameters, initOverrides) { + await this.redeemCodeRaw(requestParameters, initOverrides); + } + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + async updateAccountSettingsRaw(requestParameters, initOverrides) { + if (requestParameters['updateAccountSettingsRequest'] == null) { + throw new runtime.RequiredError('updateAccountSettingsRequest', 'Required parameter "updateAccountSettingsRequest" was null or undefined when calling updateAccountSettings().'); + } + const queryParameters = {}; + const headerParameters = {}; + headerParameters['Content-Type'] = 'application/json'; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/account/update_settings`, + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: requestParameters['updateAccountSettingsRequest'], + }, initOverrides); + return new runtime.VoidApiResponse(response); + } + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + async updateAccountSettings(requestParameters, initOverrides) { + await this.updateAccountSettingsRaw(requestParameters, initOverrides); + } + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + async verifyAccountCredentialsRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/account/verify_credentials`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + async verifyAccountCredentials(requestParameters = {}, initOverrides) { + const response = await this.verifyAccountCredentialsRaw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.AccountApi = AccountApi; diff --git a/dist/cjs/apis/AccountApi.d.cts b/dist/cjs/apis/AccountApi.d.cts new file mode 100644 index 0000000..52690f0 --- /dev/null +++ b/dist/cjs/apis/AccountApi.d.cts @@ -0,0 +1,59 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { Language, RedeemCodeRequest, UpdateAccountSettingsRequest, VerifyCredentialsCredential } from '../models/index.cjs'; +export interface RedeemCodeOperationRequest { + redeemCodeRequest: RedeemCodeRequest; + xSolvedacLanguage?: Language; +} +export interface UpdateAccountSettingsOperationRequest { + updateAccountSettingsRequest: UpdateAccountSettingsRequest; + xSolvedacLanguage?: Language; +} +export interface VerifyAccountCredentialsRequest { + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class AccountApi extends runtime.BaseAPI { + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + redeemCodeRaw(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + redeemCode(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + updateAccountSettingsRaw(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + updateAccountSettings(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + verifyAccountCredentialsRaw(requestParameters: VerifyAccountCredentialsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + verifyAccountCredentials(requestParameters?: VerifyAccountCredentialsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/BackgroundApi.cjs b/dist/cjs/apis/BackgroundApi.cjs new file mode 100644 index 0000000..dfd4d64 --- /dev/null +++ b/dist/cjs/apis/BackgroundApi.cjs @@ -0,0 +1,78 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BackgroundApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class BackgroundApi extends runtime.BaseAPI { + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackgroundRaw(requestParameters, initOverrides) { + if (requestParameters['backgroundId'] == null) { + throw new runtime.RequiredError('backgroundId', 'Required parameter "backgroundId" was null or undefined when calling getBackground().'); + } + const queryParameters = {}; + if (requestParameters['backgroundId'] != null) { + queryParameters['backgroundId'] = requestParameters['backgroundId']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/background/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackground(requestParameters, initOverrides) { + const response = await this.getBackgroundRaw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.BackgroundApi = BackgroundApi; diff --git a/dist/cjs/apis/BackgroundApi.d.cts b/dist/cjs/apis/BackgroundApi.d.cts new file mode 100644 index 0000000..469d1fd --- /dev/null +++ b/dist/cjs/apis/BackgroundApi.d.cts @@ -0,0 +1,32 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { Background, Language } from '../models/index.cjs'; +export interface GetBackgroundRequest { + backgroundId: string; + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class BackgroundApi extends runtime.BaseAPI { + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + getBackgroundRaw(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + getBackground(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/BadgeApi.cjs b/dist/cjs/apis/BadgeApi.cjs new file mode 100644 index 0000000..4a2d6c6 --- /dev/null +++ b/dist/cjs/apis/BadgeApi.cjs @@ -0,0 +1,78 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BadgeApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class BadgeApi extends runtime.BaseAPI { + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadgeRaw(requestParameters, initOverrides) { + if (requestParameters['badgeId'] == null) { + throw new runtime.RequiredError('badgeId', 'Required parameter "badgeId" was null or undefined when calling getBadge().'); + } + const queryParameters = {}; + if (requestParameters['badgeId'] != null) { + queryParameters['badgeId'] = requestParameters['badgeId']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/badge/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadge(requestParameters, initOverrides) { + const response = await this.getBadgeRaw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.BadgeApi = BadgeApi; diff --git a/dist/cjs/apis/BadgeApi.d.cts b/dist/cjs/apis/BadgeApi.d.cts new file mode 100644 index 0000000..4a483b5 --- /dev/null +++ b/dist/cjs/apis/BadgeApi.d.cts @@ -0,0 +1,32 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { Badge, Language } from '../models/index.cjs'; +export interface GetBadgeRequest { + badgeId: string; + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class BadgeApi extends runtime.BaseAPI { + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + getBadgeRaw(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + getBadge(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/CoinsApi.cjs b/dist/cjs/apis/CoinsApi.cjs new file mode 100644 index 0000000..def38fd --- /dev/null +++ b/dist/cjs/apis/CoinsApi.cjs @@ -0,0 +1,95 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CoinsApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class CoinsApi extends runtime.BaseAPI { + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProductsRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/coins/shop/list`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProducts(requestParameters = {}, initOverrides) { + const response = await this.getCoinShopProductsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRateRaw(initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + const response = await this.request({ + path: `/coins/exchange_rate`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRate(initOverrides) { + const response = await this.getCoinStardustExchangeRateRaw(initOverrides); + return await response.value(); + } +} +exports.CoinsApi = CoinsApi; diff --git a/dist/cjs/apis/CoinsApi.d.cts b/dist/cjs/apis/CoinsApi.d.cts new file mode 100644 index 0000000..1aa2742 --- /dev/null +++ b/dist/cjs/apis/CoinsApi.d.cts @@ -0,0 +1,41 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { CoinShopProduct, GetCoinStardustExchangeRateExchangeRate, Language } from '../models/index.cjs'; +export interface GetCoinShopProductsRequest { + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class CoinsApi extends runtime.BaseAPI { + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + getCoinShopProductsRaw(requestParameters: GetCoinShopProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + getCoinShopProducts(requestParameters?: GetCoinShopProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + getCoinStardustExchangeRateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + getCoinStardustExchangeRate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/OtherApi.cjs b/dist/cjs/apis/OtherApi.cjs new file mode 100644 index 0000000..e9e6f85 --- /dev/null +++ b/dist/cjs/apis/OtherApi.cjs @@ -0,0 +1,69 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OtherApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class OtherApi extends runtime.BaseAPI { + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatisticsRaw(initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + const response = await this.request({ + path: `/site/stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatistics(initOverrides) { + const response = await this.getSiteStatisticsRaw(initOverrides); + return await response.value(); + } +} +exports.OtherApi = OtherApi; diff --git a/dist/cjs/apis/OtherApi.d.cts b/dist/cjs/apis/OtherApi.d.cts new file mode 100644 index 0000000..8dce34c --- /dev/null +++ b/dist/cjs/apis/OtherApi.d.cts @@ -0,0 +1,28 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { SiteStatistics } from '../models/index.cjs'; +/** + * + */ +export declare class OtherApi extends runtime.BaseAPI { + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + getSiteStatisticsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + getSiteStatistics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/ProblemApi.cjs b/dist/cjs/apis/ProblemApi.cjs new file mode 100644 index 0000000..3b7c917 --- /dev/null +++ b/dist/cjs/apis/ProblemApi.cjs @@ -0,0 +1,162 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProblemApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class ProblemApi extends runtime.BaseAPI { + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCountRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCount(requestParameters = {}, initOverrides) { + const response = await this.getClassesProblemCountRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemByIdRaw(requestParameters, initOverrides) { + if (requestParameters['problemId'] == null) { + throw new runtime.RequiredError('problemId', 'Required parameter "problemId" was null or undefined when calling getProblemById().'); + } + const queryParameters = {}; + if (requestParameters['problemId'] != null) { + queryParameters['problemId'] = requestParameters['problemId']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemById(requestParameters, initOverrides) { + const response = await this.getProblemByIdRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdListRaw(requestParameters, initOverrides) { + if (requestParameters['problemIds'] == null) { + throw new runtime.RequiredError('problemIds', 'Required parameter "problemIds" was null or undefined when calling getProblemsByIdList().'); + } + const queryParameters = {}; + if (requestParameters['problemIds'] != null) { + queryParameters['problemIds'] = requestParameters['problemIds'].join(runtime.COLLECTION_FORMATS["csv"]); + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/lookup`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdList(requestParameters, initOverrides) { + const response = await this.getProblemsByIdListRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevelRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/level`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevel(requestParameters = {}, initOverrides) { + const response = await this.getProblemsCountGroupByLevelRaw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.ProblemApi = ProblemApi; diff --git a/dist/cjs/apis/ProblemApi.d.cts b/dist/cjs/apis/ProblemApi.d.cts new file mode 100644 index 0000000..ad7aa1b --- /dev/null +++ b/dist/cjs/apis/ProblemApi.d.cts @@ -0,0 +1,72 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { GetClassesProblemCountClassEntry, GetProblemsByIdList200Response, GetProblemsCountGroupByLevelLevelEntry, Language, Problem } from '../models/index.cjs'; +export interface GetClassesProblemCountRequest { + xSolvedacLanguage?: Language; +} +export interface GetProblemByIdRequest { + problemId: number; + xSolvedacLanguage?: Language; +} +export interface GetProblemsByIdListRequest { + problemIds: Array; + xSolvedacLanguage?: Language; +} +export interface GetProblemsCountGroupByLevelRequest { + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class ProblemApi extends runtime.BaseAPI { + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + getClassesProblemCountRaw(requestParameters: GetClassesProblemCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + getClassesProblemCount(requestParameters?: GetClassesProblemCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + getProblemByIdRaw(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + getProblemById(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + getProblemsByIdListRaw(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + getProblemsByIdList(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + getProblemsCountGroupByLevelRaw(requestParameters: GetProblemsCountGroupByLevelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + getProblemsCountGroupByLevel(requestParameters?: GetProblemsCountGroupByLevelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; +} diff --git a/dist/cjs/apis/RankingApi.cjs b/dist/cjs/apis/RankingApi.cjs new file mode 100644 index 0000000..cb20b2c --- /dev/null +++ b/dist/cjs/apis/RankingApi.cjs @@ -0,0 +1,249 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RankingApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class RankingApi extends runtime.BaseAPI { + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['type'] != null) { + queryParameters['type'] = requestParameters['type']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + const response = await this.request({ + path: `/ranking/organization`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRating(requestParameters = {}, initOverrides) { + const response = await this.getOrganizationRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClassRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClass(requestParameters = {}, initOverrides) { + const response = await this.getRankingByClassRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContributionRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/contribution`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContribution(requestParameters = {}, initOverrides) { + const response = await this.getRankingByContributionRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreakRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/streak`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreak(requestParameters = {}, initOverrides) { + const response = await this.getRankingByMaxStreakRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/tier`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRating(requestParameters = {}, initOverrides) { + const response = await this.getRankingBySolveACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/reverse_rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRating(requestParameters = {}, initOverrides) { + const response = await this.getReverseRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRating(requestParameters = {}, initOverrides) { + const response = await this.getRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.RankingApi = RankingApi; diff --git a/dist/cjs/apis/RankingApi.d.cts b/dist/cjs/apis/RankingApi.d.cts new file mode 100644 index 0000000..3ff49f2 --- /dev/null +++ b/dist/cjs/apis/RankingApi.d.cts @@ -0,0 +1,116 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { GetOrganizationRankingByACRating200Response, GetRankingByClass200Response, Language, OrganizationType } from '../models/index.cjs'; +export interface GetOrganizationRankingByACRatingRequest { + type?: OrganizationType; + page?: number; +} +export interface GetRankingByClassRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRankingByContributionRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRankingByMaxStreakRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRankingBySolveACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetReverseRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} +/** + * + */ +export declare class RankingApi extends runtime.BaseAPI { + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + getOrganizationRankingByACRatingRaw(requestParameters: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + getOrganizationRankingByACRating(requestParameters?: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + getRankingByClassRaw(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + getRankingByClass(requestParameters?: GetRankingByClassRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + getRankingByContributionRaw(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + getRankingByContribution(requestParameters?: GetRankingByContributionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + getRankingByMaxStreakRaw(requestParameters: GetRankingByMaxStreakRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + getRankingByMaxStreak(requestParameters?: GetRankingByMaxStreakRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + getRankingBySolveACRatingRaw(requestParameters: GetRankingBySolveACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + getRankingBySolveACRating(requestParameters?: GetRankingBySolveACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + getReverseRivalRankingByACRatingRaw(requestParameters: GetReverseRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + getReverseRivalRankingByACRating(requestParameters?: GetReverseRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + getRivalRankingByACRatingRaw(requestParameters: GetRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + getRivalRankingByACRating(requestParameters?: GetRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/SearchApi.cjs b/dist/cjs/apis/SearchApi.cjs new file mode 100644 index 0000000..06c631e --- /dev/null +++ b/dist/cjs/apis/SearchApi.cjs @@ -0,0 +1,195 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SearchApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class SearchApi extends runtime.BaseAPI { + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletionsRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling getSearchAutoCompletions().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/suggestion`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletions(requestParameters, initOverrides) { + const response = await this.getSearchAutoCompletionsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblemRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling searchProblem().'); + } + if (requestParameters['direction'] == null) { + throw new runtime.RequiredError('direction', 'Required parameter "direction" was null or undefined when calling searchProblem().'); + } + if (requestParameters['sort'] == null) { + throw new runtime.RequiredError('sort', 'Required parameter "sort" was null or undefined when calling searchProblem().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + if (requestParameters['direction'] != null) { + queryParameters['direction'] = requestParameters['direction']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + if (requestParameters['sort'] != null) { + queryParameters['sort'] = requestParameters['sort']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/problem`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblem(requestParameters, initOverrides) { + const response = await this.searchProblemRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTagRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling searchProblemTag().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/tag`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTag(requestParameters, initOverrides) { + const response = await this.searchProblemTagRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUserRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling searchUser().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/user`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUser(requestParameters, initOverrides) { + const response = await this.searchUserRaw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.SearchApi = SearchApi; diff --git a/dist/cjs/apis/SearchApi.d.cts b/dist/cjs/apis/SearchApi.d.cts new file mode 100644 index 0000000..b76400e --- /dev/null +++ b/dist/cjs/apis/SearchApi.d.cts @@ -0,0 +1,79 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { GetProblemsByIdList200Response, GetSearchAutoCompletionsSuggestion, Language, SearchProblemQueryDirection, SearchProblemQuerySort, SearchProblemTag200Response, SearchUser200Response } from '../models/index.cjs'; +export interface GetSearchAutoCompletionsRequest { + query: string; + xSolvedacLanguage?: Language; +} +export interface SearchProblemRequest { + query: string; + direction: SearchProblemQueryDirection; + sort: SearchProblemQuerySort; + xSolvedacLanguage?: Language; + page?: number; +} +export interface SearchProblemTagRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} +export interface SearchUserRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} +/** + * + */ +export declare class SearchApi extends runtime.BaseAPI { + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + getSearchAutoCompletionsRaw(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + getSearchAutoCompletions(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + searchProblemRaw(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + searchProblem(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + searchProblemTagRaw(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + searchProblemTag(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/UserApi.cjs b/dist/cjs/apis/UserApi.cjs new file mode 100644 index 0000000..b1349f3 --- /dev/null +++ b/dist/cjs/apis/UserApi.cjs @@ -0,0 +1,168 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UserApi = void 0; +const runtime = __importStar(require("../runtime.cjs")); +/** + * + */ +class UserApi extends runtime.BaseAPI { + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandleRaw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserByHandle().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/user/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandle(requestParameters, initOverrides) { + const response = await this.getUserByHandleRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizationsRaw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserOrganizations().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + const response = await this.request({ + path: `/user/organizations`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizations(requestParameters, initOverrides) { + const response = await this.getUserOrganizationsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStatsRaw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserProblemStats().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + const response = await this.request({ + path: `/user/problem_stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStats(requestParameters, initOverrides) { + const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100Raw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserTop100().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/user/top_100`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100(requestParameters, initOverrides) { + const response = await this.getUserTop100Raw(requestParameters, initOverrides); + return await response.value(); + } +} +exports.UserApi = UserApi; diff --git a/dist/cjs/apis/UserApi.d.cts b/dist/cjs/apis/UserApi.d.cts new file mode 100644 index 0000000..62204a2 --- /dev/null +++ b/dist/cjs/apis/UserApi.d.cts @@ -0,0 +1,72 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.cjs'; +import type { GetProblemsByIdList200Response, GetUserProblemStatsProblemStat, Language, Organization, SocialUser } from '../models/index.cjs'; +export interface GetUserByHandleRequest { + handle: string; + xSolvedacLanguage?: Language; +} +export interface GetUserOrganizationsRequest { + handle: string; +} +export interface GetUserProblemStatsRequest { + handle: string; +} +export interface GetUserTop100Request { + handle: string; + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class UserApi extends runtime.BaseAPI { + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + getUserByHandleRaw(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + getUserByHandle(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + getUserOrganizationsRaw(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + getUserOrganizations(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + getUserProblemStatsRaw(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + getUserTop100Raw(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + getUserTop100(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/cjs/apis/index.cjs b/dist/cjs/apis/index.cjs new file mode 100644 index 0000000..e7ed71b --- /dev/null +++ b/dist/cjs/apis/index.cjs @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* tslint:disable */ +/* eslint-disable */ +__exportStar(require("./AccountApi.cjs"), exports); +__exportStar(require("./BackgroundApi.cjs"), exports); +__exportStar(require("./BadgeApi.cjs"), exports); +__exportStar(require("./CoinsApi.cjs"), exports); +__exportStar(require("./OtherApi.cjs"), exports); +__exportStar(require("./ProblemApi.cjs"), exports); +__exportStar(require("./RankingApi.cjs"), exports); +__exportStar(require("./SearchApi.cjs"), exports); +__exportStar(require("./UserApi.cjs"), exports); diff --git a/dist/cjs/apis/index.d.cts b/dist/cjs/apis/index.d.cts new file mode 100644 index 0000000..851f723 --- /dev/null +++ b/dist/cjs/apis/index.d.cts @@ -0,0 +1,9 @@ +export * from './AccountApi.cjs'; +export * from './BackgroundApi.cjs'; +export * from './BadgeApi.cjs'; +export * from './CoinsApi.cjs'; +export * from './OtherApi.cjs'; +export * from './ProblemApi.cjs'; +export * from './RankingApi.cjs'; +export * from './SearchApi.cjs'; +export * from './UserApi.cjs'; diff --git a/dist/cjs/index.cjs b/dist/cjs/index.cjs new file mode 100644 index 0000000..25d4ceb --- /dev/null +++ b/dist/cjs/index.cjs @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* tslint:disable */ +/* eslint-disable */ +__exportStar(require("./runtime.cjs"), exports); +__exportStar(require("./apis/index.cjs"), exports); +__exportStar(require("./models/index.cjs"), exports); diff --git a/dist/cjs/index.d.cts b/dist/cjs/index.d.cts new file mode 100644 index 0000000..21edd7a --- /dev/null +++ b/dist/cjs/index.d.cts @@ -0,0 +1,3 @@ +export * from './runtime.cjs'; +export * from './apis/index.cjs'; +export * from './models/index.cjs'; diff --git a/dist/cjs/models/index.cjs b/dist/cjs/models/index.cjs new file mode 100644 index 0000000..111d8ba --- /dev/null +++ b/dist/cjs/models/index.cjs @@ -0,0 +1,498 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VerifyCredentialsUserWithSettingsClassDecorationEnum = exports.VerifyCredentialsUserWithSettingsClassEnum = exports.VerifyCredentialsUserSettingsShowMovieBackgroundEnum = exports.VerifyCredentialsUserSettingsShowIllustBackgroundEnum = exports.VerifyCredentialsUserSettingsSiteLanguageEnum = exports.VerifyCredentialsUserSettingsProHideAdsEnum = exports.VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = exports.VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = exports.VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = exports.VerifyCredentialsUserSettingsTwitterPostHandleEnum = exports.VerifyCredentialsUserSettingsScreenThemeEnum = exports.VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = exports.UserClassDecorationEnum = exports.UserClassEnum = exports.SolveTier = exports.SocialUserClassDecorationEnum = exports.SocialUserClassEnum = exports.SearchProblemQuerySort = exports.SearchProblemQueryDirection = exports.RivalUserClassDecorationEnum = exports.RivalUserClassEnum = exports.ProblemLevel = exports.OrganizationType = exports.Language = exports.GetSearchAutoCompletionsUserEntryClassDecorationEnum = exports.GetSearchAutoCompletionsUserEntryClassEnum = exports.GetClassesProblemCountClassEntryClassEnum = exports.CoinShopProductPriceUnitEnum = exports.BadgeTier = exports.BadgeCategory = exports.BackgroundCategory = exports.ArenaTier = void 0; +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +exports.ArenaTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13 +}; +/** + * 배경 획득 유형 분류입니다. + * @export + */ +exports.BackgroundCategory = { + Event: 'event', + Arena: 'arena', + Achievement: 'achievement', + Season: 'season', + Contest: 'contest' +}; +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +exports.BadgeCategory = { + Achievement: 'achievement', + Season: 'season', + Event: 'event', + Contest: 'contest' +}; +/** + * 뱃지의 등급입니다. + * @export + */ +exports.BadgeTier = { + Bronze: 'bronze', + Silver: 'silver', + Gold: 'gold', + Master: 'master' +}; +/** + * @export + */ +exports.CoinShopProductPriceUnitEnum = { + Coins: 'coins', + Stardusts: 'stardusts' +}; +/** + * @export + */ +exports.GetClassesProblemCountClassEntryClassEnum = { + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +exports.GetSearchAutoCompletionsUserEntryClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +exports.GetSearchAutoCompletionsUserEntryClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +exports.Language = { + Ko: 'ko', + En: 'en', + Ja: 'ja' +}; +/** + * 단체 유형입니다. + * @export + */ +exports.OrganizationType = { + University: 'university', + Company: 'company', + Community: 'community', + HighSchool: 'high_school', + MiddleSchool: 'middle_school', + ElementarySchool: 'elementary_school', + Undefined: 'undefined' +}; +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +exports.ProblemLevel = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30 +}; +/** + * @export + */ +exports.RivalUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +exports.RivalUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * 검색 결과 정렬 방향 + * @export + */ +exports.SearchProblemQueryDirection = { + Asc: 'asc', + Desc: 'desc' +}; +/** + * 검색 결과 정렬 기준 + * @export + */ +exports.SearchProblemQuerySort = { + Id: 'id', + Level: 'level', + Title: 'title', + Solved: 'solved', + AverageTry: 'average_try', + Random: 'random' +}; +/** + * @export + */ +exports.SocialUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +exports.SocialUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +exports.SolveTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30, + NUMBER_31: 31 +}; +/** + * @export + */ +exports.UserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +exports.UserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsScreenThemeEnum = { + Default: 'default' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsTwitterPostHandleEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsProHideAdsEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsSiteLanguageEnum = { + Ko: 'ko' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsShowIllustBackgroundEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserSettingsShowMovieBackgroundEnum = { + True: 'true' +}; +/** + * @export + */ +exports.VerifyCredentialsUserWithSettingsClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +exports.VerifyCredentialsUserWithSettingsClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; diff --git a/dist/cjs/models/index.d.cts b/dist/cjs/models/index.d.cts new file mode 100644 index 0000000..e19e4ba --- /dev/null +++ b/dist/cjs/models/index.d.cts @@ -0,0 +1,2750 @@ +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +export declare const ArenaTier: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; + readonly NUMBER_11: 11; + readonly NUMBER_12: 12; + readonly NUMBER_13: 13; +}; +export type ArenaTier = typeof ArenaTier[keyof typeof ArenaTier]; +/** + * 사용자가 획득할 수 있는 배경입니다. + * @export + * @interface Background + */ +export interface Background { + /** + * 배경의 고유 ID입니다. + * @type {string} + * @memberof Background + */ + backgroundId: string; + /** + * 배경 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Background + */ + backgroundImageUrl: string; + /** + * 일러스트 배경 보기가 꺼져있을 때 보여줄 수 있는 대안 배경 사진으로 가는 하이퍼링크입니다. + * 일러스트를 포함하지 않은 배경이거나, 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + fallbackBackgroundImageUrl?: string; + /** + * 움직이는 배경이 켜져있을 때 보여줄 수 있는 배경 영상으로 가는 하이퍼링크입니다. + * 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + backgroundVideoUrl?: string; + /** + * 배경을 획득한 사용자 수입니다. + * @type {number} + * @memberof Background + */ + unlockedUserCount: number; + /** + * 배경의 표시 이름입니다. + * @type {string} + * @memberof Background + */ + displayName: string; + /** + * 배경의 설명입니다. + * @type {string} + * @memberof Background + */ + displayDescription: string; + /** + * 배경을 얻는 조건입니다. + * 조건이 숨겨진 경우, 해당 값이 내려오지 않습니다. + * @type {string} + * @memberof Background + */ + conditions?: string; + /** + * 배경 획득 조건이 숨겨져 있는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + hiddenConditions: boolean; + /** + * 일러스트 배경인지 여부입니다. + * @type {boolean} + * @memberof Background + */ + isIllust: boolean; + /** + * 배경 획득 유형 분류입니다. + * @type {BackgroundCategory} + * @memberof Background + */ + backgroundCategory: BackgroundCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + solvedCompanyRights: boolean; + /** + * 배경을 작업한 작가 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof Background + */ + authors: Array; +} +/** + * 배경을 작업한 작가입니다. + * @export + * @interface BackgroundAuthor + */ +export interface BackgroundAuthor { + /** + * 작가 고유 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorId: string; + /** + * 수행한 역할입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + role: string; + /** + * 작가 홈페이지로 가는 하이퍼링크입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorUrl?: string; + /** + * 작가의 solved.ac 핸들입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + handle?: string; + /** + * 작가의 Twitter ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + twitter?: string; + /** + * 작가의 인스타그램 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + instagram?: string; + /** + * 작가의 표시 이름입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + displayName: string; +} +/** + * 배경 획득 유형 분류입니다. + * @export + */ +export declare const BackgroundCategory: { + readonly Event: "event"; + readonly Arena: "arena"; + readonly Achievement: "achievement"; + readonly Season: "season"; + readonly Contest: "contest"; +}; +export type BackgroundCategory = typeof BackgroundCategory[keyof typeof BackgroundCategory]; +/** + * 사용자가 획득할 수 있는 뱃지입니다. + * @export + * @interface Badge + */ +export interface Badge { + /** + * 뱃지의 고유 ID입니다. + * @type {string} + * @memberof Badge + */ + badgeId: string; + /** + * 뱃지 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Badge + */ + badgeImageUrl: string; + /** + * 뱃지가 표시되는 이름입니다. + * @type {string} + * @memberof Badge + */ + displayName: string; + /** + * 뱃지의 설명입니다. + * @type {string} + * @memberof Badge + */ + displayDescription: string; + /** + * 뱃지를 획득한 사용자 수입니다. + * @type {number} + * @memberof Badge + */ + unlockedUserCount: number; + /** + * + * @type {BadgeTier} + * @memberof Badge + */ + badgeTier: BadgeTier; + /** + * + * @type {BadgeCategory} + * @memberof Badge + */ + badgeCategory: BadgeCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Badge + */ + solvedCompanyRights: boolean; + /** + * 뱃지가 만들어진 시각입니다. + * @type {string} + * @memberof Badge + */ + createdAt: string; +} +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +export declare const BadgeCategory: { + readonly Achievement: "achievement"; + readonly Season: "season"; + readonly Event: "event"; + readonly Contest: "contest"; +}; +export type BadgeCategory = typeof BadgeCategory[keyof typeof BadgeCategory]; +/** + * 뱃지의 등급입니다. + * @export + */ +export declare const BadgeTier: { + readonly Bronze: "bronze"; + readonly Silver: "silver"; + readonly Gold: "gold"; + readonly Master: "master"; +}; +export type BadgeTier = typeof BadgeTier[keyof typeof BadgeTier]; +/** + * 코인샵에서 판매하고 있는 상품입니다. + * @export + * @interface CoinShopProduct + */ +export interface CoinShopProduct { + /** + * 재고(Stock Keeping Unit) ID입니다. + * @type {number} + * @memberof CoinShopProduct + */ + skuId: number; + /** + * + * @type {Item} + * @memberof CoinShopProduct + */ + item: Item; + /** + * 1회 구매 시 획득하는 아이템 개수입니다. + * @type {number} + * @memberof CoinShopProduct + */ + units: number; + /** + * 가격입니다. + * 코인의 경우 나누기 100을 해야 표시 가격이 됩니다. + * @type {number} + * @memberof CoinShopProduct + */ + price: number; + /** + * 가격 단위입니다. + * @type {string} + * @memberof CoinShopProduct + */ + priceUnit: CoinShopProductPriceUnitEnum; + /** + * 아이템 사용 시간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemUseTimeLimited: boolean; + /** + * 아이템 구매 기간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemSellTimeLimited: boolean; +} +/** + * @export + */ +export declare const CoinShopProductPriceUnitEnum: { + readonly Coins: "coins"; + readonly Stardusts: "stardusts"; +}; +export type CoinShopProductPriceUnitEnum = typeof CoinShopProductPriceUnitEnum[keyof typeof CoinShopProductPriceUnitEnum]; +/** + * 난이도 투표 등에 사용할 수 있는 이모티콘입니다. + * @export + * @interface Emoticon + */ +export interface Emoticon { + /** + * 고유 식별자입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof Emoticon + */ + displayName: string; +} +/** + * + * @export + * @interface GetClassesProblemCountClassEntry + */ +export interface GetClassesProblemCountClassEntry { + /** + * 클래스 숫자입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + _class: GetClassesProblemCountClassEntryClassEnum; + /** + * 총 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + total: number; + /** + * 에센셜 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + essentials: number; + /** + * 취득에 필요한 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + criteria: number; +} +/** + * @export + */ +export declare const GetClassesProblemCountClassEntryClassEnum: { + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type GetClassesProblemCountClassEntryClassEnum = typeof GetClassesProblemCountClassEntryClassEnum[keyof typeof GetClassesProblemCountClassEntryClassEnum]; +/** + * + * @export + * @interface GetCoinStardustExchangeRateExchangeRate + */ +export interface GetCoinStardustExchangeRateExchangeRate { + /** + * 1 코인을 별조각으로 바꾸는 환율입니다. + * 별조각을 코인으로 환전할 때에는 수수료가 1%(소수점은 내림) 붙습니다. + * @type {number} + * @memberof GetCoinStardustExchangeRateExchangeRate + */ + rate: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200Response + */ +export interface GetOrganizationRankingByACRating200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetOrganizationRankingByACRating200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200ResponseItemsInner + */ +export interface GetOrganizationRankingByACRating200ResponseItemsInner { + /** + * ID입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + color: string; + /** + * 순위입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rank: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetProblemsByIdList200Response + */ +export interface GetProblemsByIdList200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetProblemsByIdList200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetProblemsByIdList200Response + */ + items: Array; +} +/** + * + * @export + * @interface GetProblemsCountGroupByLevelLevelEntry + */ +export interface GetProblemsCountGroupByLevelLevelEntry { + /** + * + * @type {ProblemLevel} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + level: ProblemLevel; + /** + * 문제 수입니다. + * @type {number} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + count: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetRankingByClass200Response + */ +export interface GetRankingByClass200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetRankingByClass200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetRankingByClass200Response + */ + items: Array; +} +/** + * 고급 검색 관련 자동 완성입니다. + * @export + * @interface GetSearchAutoCompletionsAutoCompleteEntry + */ +export interface GetSearchAutoCompletionsAutoCompleteEntry { + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + description: string; +} +/** + * 요악한 문제 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemEntry + */ +export interface GetSearchAutoCompletionsBriefProblemEntry { + /** + * 문제 ID입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + id: number; + /** + * 문제 제목입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + title: string; + /** + * + * @type {ProblemLevel} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + level: ProblemLevel; + /** + * 푼 사람 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + solved: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + description: string; +} +/** + * 요약한 태그 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemTagEntry + */ +export interface GetSearchAutoCompletionsBriefProblemTagEntry { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + key: string; + /** + * 태그 이름입니다. + * 사용자 언어에 따라 번역되지 않습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + name: string; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + problemCount: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + description: string; +} +/** + * + * @export + * @interface GetSearchAutoCompletionsSuggestion + */ +export interface GetSearchAutoCompletionsSuggestion { + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + autocomplete: Array; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problems: Array; + /** + * 검색 결과로 나올 총 문제 수입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problemCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tags: Array; + /** + * 검색 결과로 나올 총 태그 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tagCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + users: Array; + /** + * 검색 결과로 나올 총 사용자 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + userCount: number; +} +/** + * 사용자 정보입니다. + * @export + * @interface GetSearchAutoCompletionsUserEntry + */ +export interface GetSearchAutoCompletionsUserEntry { + /** + * 사용자명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + _class: GetSearchAutoCompletionsUserEntryClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + classDecoration: GetSearchAutoCompletionsUserEntryClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rank: number; +} +/** + * @export + */ +export declare const GetSearchAutoCompletionsUserEntryClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type GetSearchAutoCompletionsUserEntryClassEnum = typeof GetSearchAutoCompletionsUserEntryClassEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassEnum]; +/** + * @export + */ +export declare const GetSearchAutoCompletionsUserEntryClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum]; +/** + * + * @export + * @interface GetUserProblemStatsProblemStat + */ +export interface GetUserProblemStatsProblemStat { + /** + * + * @type {ProblemLevel} + * @memberof GetUserProblemStatsProblemStat + */ + level: ProblemLevel; + /** + * solved.ac에 등록된 해당 수준 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + total: number; + /** + * 사용자가 푼 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + solved: number; + /** + * 사용자가 부분 성공한 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + partial: number; + /** + * 사용자가 시도해 본 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + tried: number; +} +/** + * 사용자가 사용할 수 있는 아이템입니다. + * @export + * @interface Item + */ +export interface Item { + /** + * ID입니다. + * @type {string} + * @memberof Item + */ + itemId: string; + /** + * 아이템 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Item + */ + itemImageUrl: string; + /** + * 최대 소유 가능 개수입니다. + * 사람에 따라 다를 수 있습니다. + * @type {number} + * @memberof Item + */ + inventoryMaxUnits: number; + /** + * 사용 가능 여부입니다. + * @type {boolean} + * @memberof Item + */ + usable: boolean; + /** + * 국제화된 이름입니다. + * @type {string} + * @memberof Item + */ + displayName: string; + /** + * 국제화된 설명입니다. + * @type {string} + * @memberof Item + */ + displayDescription: string; +} +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +export declare const Language: { + readonly Ko: "ko"; + readonly En: "en"; + readonly Ja: "ja"; +}; +export type Language = typeof Language[keyof typeof Language]; +/** + * solved.ac에 등록한 단체입니다. + * @export + * @interface Organization + */ +export interface Organization { + /** + * ID입니다. + * @type {number} + * @memberof Organization + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof Organization + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof Organization + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof Organization + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof Organization + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof Organization + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof Organization + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof Organization + */ + color: string; +} +/** + * 단체 유형입니다. + * @export + */ +export declare const OrganizationType: { + readonly University: "university"; + readonly Company: "company"; + readonly Community: "community"; + readonly HighSchool: "high_school"; + readonly MiddleSchool: "middle_school"; + readonly ElementarySchool: "elementary_school"; + readonly Undefined: "undefined"; +}; +export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType]; +/** + * 문제 정보입니다. + * @export + * @interface Problem + */ +export interface Problem { + /** + * 백준 문제 번호로, 문제마다 고유합니다. + * @type {number} + * @memberof Problem + */ + problemId: number; + /** + * 한국어 문제 제목입니다. + * HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. + * @type {string} + * @memberof Problem + */ + titleKo: string; + /** + * 언어별 문제 제목 목록입니다. + * @type {Array} + * @memberof Problem + */ + titles: Array; + /** + * 채점 가능 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isSolvable: boolean; + /** + * 부분 점수/서브태스크 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isPartial: boolean; + /** + * 맞은 사람 수입니다. + * @type {number} + * @memberof Problem + */ + acceptedUserCount: number; + /** + * + * @type {ProblemLevel} + * @memberof Problem + */ + level: ProblemLevel; + /** + * 난이도 기여자 수입니다. + * @type {number} + * @memberof Problem + */ + votedUserCount: number; + /** + * 새싹 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + sprout: boolean; + /** + * 레이팅을 주지 않는지 여부입니다. + * @type {boolean} + * @memberof Problem + */ + givesNoRating: boolean; + /** + * 난이도 기여 제한 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isLevelLocked: boolean; + /** + * 평균 시도 횟수입니다. + * @type {number} + * @memberof Problem + */ + averageTries: number; + /** + * 공식 문제 여부입니다. + * 번외 문제 등은 비공식 문제로 분류됩니다. + * @type {boolean} + * @memberof Problem + */ + official: boolean; + /** + * 태그 목록입니다. + * @type {Array} + * @memberof Problem + */ + tags: Array; + /** + * + * @type {any} + * @memberof Problem + */ + metadata: any | null; +} +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +export declare const ProblemLevel: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; + readonly NUMBER_11: 11; + readonly NUMBER_12: 12; + readonly NUMBER_13: 13; + readonly NUMBER_14: 14; + readonly NUMBER_15: 15; + readonly NUMBER_16: 16; + readonly NUMBER_17: 17; + readonly NUMBER_18: 18; + readonly NUMBER_19: 19; + readonly NUMBER_20: 20; + readonly NUMBER_21: 21; + readonly NUMBER_22: 22; + readonly NUMBER_23: 23; + readonly NUMBER_24: 24; + readonly NUMBER_25: 25; + readonly NUMBER_26: 26; + readonly NUMBER_27: 27; + readonly NUMBER_28: 28; + readonly NUMBER_29: 29; + readonly NUMBER_30: 30; +}; +export type ProblemLevel = typeof ProblemLevel[keyof typeof ProblemLevel]; +/** + * + * @export + * @interface ProblemTag + */ +export interface ProblemTag { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof ProblemTag + */ + key: string; + /** + * + * @type {boolean} + * @memberof ProblemTag + */ + isMeta: boolean; + /** + * 백준 온라인 저지에서 쓰는 태그 ID입니다. + * @type {number} + * @memberof ProblemTag + */ + bojTagId: number; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof ProblemTag + */ + problemCount: number; + /** + * 언어별 태그 이름 목록입니다. + * @type {Array} + * @memberof ProblemTag + */ + displayNames: Array; + /** + * 별명 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof ProblemTag + */ + aliases: Array; +} +/** + * 태그의 별칭을 나타냅니다. + * @export + * @interface ProblemTagAlias + */ +export interface ProblemTagAlias { + /** + * 별칭입니다 + * @type {string} + * @memberof ProblemTagAlias + */ + alias: string; +} +/** + * + * @export + * @interface ProblemTagNameTranslated + */ +export interface ProblemTagNameTranslated { + /** + * 태그 이름이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTagNameTranslated + */ + language: Language; + /** + * 이름입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + name: string; + /** + * 짧은 이름입니다. + * 따로 없을 경우 `name`과 같은 값입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + _short: string; +} +/** + * 언어별 문제 제목입니다. + * @export + * @interface ProblemTitleTranslated + */ +export interface ProblemTitleTranslated { + /** + * 문제 제목이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTitleTranslated + */ + language: Language; + /** + * 문제 제목이 작성된 언어의 이름입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + languageDisplayName: string; + /** + * 문제 제목입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + title: string; + /** + * 원본과 동일한지 여부입니다. + * @type {boolean} + * @memberof ProblemTitleTranslated + */ + isOriginal: boolean; +} +/** + * + * @export + * @interface RedeemCodeRequest + */ +export interface RedeemCodeRequest { + /** + * 리딤 코드입니다. + * @type {string} + * @memberof RedeemCodeRequest + */ + code: string; +} +/** + * + * @export + * @interface RivalUser + */ +export interface RivalUser { + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof RivalUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof RivalUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof RivalUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof RivalUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof RivalUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof RivalUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof RivalUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof RivalUser + */ + _class: RivalUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof RivalUser + */ + classDecoration: RivalUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof RivalUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof RivalUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof RivalUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof RivalUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof RivalUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof RivalUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof RivalUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof RivalUser + */ + rank: number; +} +/** + * @export + */ +export declare const RivalUserClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type RivalUserClassEnum = typeof RivalUserClassEnum[keyof typeof RivalUserClassEnum]; +/** + * @export + */ +export declare const RivalUserClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type RivalUserClassDecorationEnum = typeof RivalUserClassDecorationEnum[keyof typeof RivalUserClassDecorationEnum]; +/** + * 검색 결과 정렬 방향 + * @export + */ +export declare const SearchProblemQueryDirection: { + readonly Asc: "asc"; + readonly Desc: "desc"; +}; +export type SearchProblemQueryDirection = typeof SearchProblemQueryDirection[keyof typeof SearchProblemQueryDirection]; +/** + * 검색 결과 정렬 기준 + * @export + */ +export declare const SearchProblemQuerySort: { + readonly Id: "id"; + readonly Level: "level"; + readonly Title: "title"; + readonly Solved: "solved"; + readonly AverageTry: "average_try"; + readonly Random: "random"; +}; +export type SearchProblemQuerySort = typeof SearchProblemQuerySort[keyof typeof SearchProblemQuerySort]; +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchProblemTag200Response + */ +export interface SearchProblemTag200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchProblemTag200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchProblemTag200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchUser200Response + */ +export interface SearchUser200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchUser200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchUser200Response + */ + items: Array; +} +/** + * solved.ac 사이트의 통계 정보입니다. + * @export + * @interface SiteStatistics + */ +export interface SiteStatistics { + /** + * 여태까지 색인된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemCount: number; + /** + * 여태까지 난이도가 기여된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemVotedCount: number; + /** + * 여태까지 등록한 사용자 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + userCount: number; + /** + * 여태까지 난이도에 기여한 사용자 수입니다 + * @type {number} + * @memberof SiteStatistics + */ + contributorCount: number; + /** + * 여태까지 이루어진 난이도 기여의 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + contributionCount: number; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface SocialUser + */ +export interface SocialUser { + /** + * 로그인한 사용자가 해당 사용자를 차단했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + blocked: boolean; + /** + * 로그인한 사용자가 해당 사용자에게 차단당했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + reverseBlocked: boolean; + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof SocialUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof SocialUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof SocialUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof SocialUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof SocialUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof SocialUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof SocialUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof SocialUser + */ + _class: SocialUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof SocialUser + */ + classDecoration: SocialUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof SocialUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof SocialUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof SocialUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof SocialUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof SocialUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof SocialUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof SocialUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof SocialUser + */ + rank: number; +} +/** + * @export + */ +export declare const SocialUserClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type SocialUserClassEnum = typeof SocialUserClassEnum[keyof typeof SocialUserClassEnum]; +/** + * @export + */ +export declare const SocialUserClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type SocialUserClassDecorationEnum = typeof SocialUserClassDecorationEnum[keyof typeof SocialUserClassDecorationEnum]; +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +export declare const SolveTier: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; + readonly NUMBER_11: 11; + readonly NUMBER_12: 12; + readonly NUMBER_13: 13; + readonly NUMBER_14: 14; + readonly NUMBER_15: 15; + readonly NUMBER_16: 16; + readonly NUMBER_17: 17; + readonly NUMBER_18: 18; + readonly NUMBER_19: 19; + readonly NUMBER_20: 20; + readonly NUMBER_21: 21; + readonly NUMBER_22: 22; + readonly NUMBER_23: 23; + readonly NUMBER_24: 24; + readonly NUMBER_25: 25; + readonly NUMBER_26: 26; + readonly NUMBER_27: 27; + readonly NUMBER_28: 28; + readonly NUMBER_29: 29; + readonly NUMBER_30: 30; + readonly NUMBER_31: 31; +}; +export type SolveTier = typeof SolveTier[keyof typeof SolveTier]; +/** + * + * @export + * @interface UpdateAccountSettingsRequest + */ +export interface UpdateAccountSettingsRequest { + /** + * 업데이트할 설정의 이름입니다. + * @type {string} + * @memberof UpdateAccountSettingsRequest + */ + key?: string; + /** + * 업데이트할 설정의 새로운 값입니다. + * @type {any} + * @memberof UpdateAccountSettingsRequest + */ + value?: any; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface User + */ +export interface User { + /** + * 사용자명입니다. + * @type {string} + * @memberof User + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof User + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof User + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof User + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof User + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof User + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof User + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof User + */ + _class: UserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof User + */ + classDecoration: UserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof User + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof User + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof User + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof User + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof User + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof User + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof User + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof User + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof User + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof User + */ + rank: number; +} +/** + * @export + */ +export declare const UserClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type UserClassEnum = typeof UserClassEnum[keyof typeof UserClassEnum]; +/** + * @export + */ +export declare const UserClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum]; +/** + * 사용자 동의 여부입니다. + * @export + * @interface VerifyCredentialsAgreements + */ +export interface VerifyCredentialsAgreements { + /** + * 동의한 약관 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + tos: string; + /** + * 동의한 개인정보 처리방침 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + privacy: string; +} +/** + * + * @export + * @interface VerifyCredentialsCredential + */ +export interface VerifyCredentialsCredential { + /** + * + * @type {VerifyCredentialsUserWithSettings} + * @memberof VerifyCredentialsCredential + */ + user: VerifyCredentialsUserWithSettings; + /** + * + * @type {VerifyCredentialsAgreements} + * @memberof VerifyCredentialsCredential + */ + aggredOn: VerifyCredentialsAgreements; + /** + * 보유할 수 있는 모든 이모티콘에 대해 이모티콘 정보에 덧붙여 보유 여부를 함께 담은 목록입니다. + * @type {Array} + * @memberof VerifyCredentialsCredential + */ + emoticons: Array; + /** + * + * @type {any} + * @memberof VerifyCredentialsCredential + */ + bookmarks: any | null; + /** + * 받은 알림 수입니다. + * @type {number} + * @memberof VerifyCredentialsCredential + */ + notificationCount: number; + /** + * 마지막으로 솔브드 상태가 변한 시각입니다. + * @type {string} + * @memberof VerifyCredentialsCredential + */ + lastSolvedStateChangedAt: string; +} +/** + * + * @export + * @interface VerifyCredentialsEmoticonUnlockStatus + */ +export interface VerifyCredentialsEmoticonUnlockStatus { + /** + * 해금 여부입니다. + * @type {boolean} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + unlocked: boolean; + /** + * 고유 식별자입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + displayName: string; +} +/** + * + * @export + * @interface VerifyCredentialsUserSettings + */ +export interface VerifyCredentialsUserSettings { + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnProblemSolve: VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + screenTheme: VerifyCredentialsUserSettingsScreenThemeEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostHandle: VerifyCredentialsUserSettingsTwitterPostHandleEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnRatingIncrease: VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnTierIncrease: VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnClassIncrease: VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + proHideAds: VerifyCredentialsUserSettingsProHideAdsEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + siteLanguage: VerifyCredentialsUserSettingsSiteLanguageEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showIllustBackground: VerifyCredentialsUserSettingsShowIllustBackgroundEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showMovieBackground: VerifyCredentialsUserSettingsShowMovieBackgroundEnum; +} +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsScreenThemeEnum: { + readonly Default: "default"; +}; +export type VerifyCredentialsUserSettingsScreenThemeEnum = typeof VerifyCredentialsUserSettingsScreenThemeEnum[keyof typeof VerifyCredentialsUserSettingsScreenThemeEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostHandleEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostHandleEnum = typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsProHideAdsEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsProHideAdsEnum = typeof VerifyCredentialsUserSettingsProHideAdsEnum[keyof typeof VerifyCredentialsUserSettingsProHideAdsEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsSiteLanguageEnum: { + readonly Ko: "ko"; +}; +export type VerifyCredentialsUserSettingsSiteLanguageEnum = typeof VerifyCredentialsUserSettingsSiteLanguageEnum[keyof typeof VerifyCredentialsUserSettingsSiteLanguageEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsShowIllustBackgroundEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsShowIllustBackgroundEnum = typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsShowMovieBackgroundEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsShowMovieBackgroundEnum = typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum]; +/** + * + * @export + * @interface VerifyCredentialsUserWithSettings + */ +export interface VerifyCredentialsUserWithSettings { + /** + * 설정입니다. + * @type {VerifyCredentialsUserSettings} + * @memberof VerifyCredentialsUserWithSettings + */ + settings: VerifyCredentialsUserSettings; + /** + * 사용 중인 이메일 주소입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + email: string; + /** + * 사용자명입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + _class: VerifyCredentialsUserWithSettingsClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + classDecoration: VerifyCredentialsUserWithSettingsClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof VerifyCredentialsUserWithSettings + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rank: number; +} +/** + * @export + */ +export declare const VerifyCredentialsUserWithSettingsClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type VerifyCredentialsUserWithSettingsClassEnum = typeof VerifyCredentialsUserWithSettingsClassEnum[keyof typeof VerifyCredentialsUserWithSettingsClassEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserWithSettingsClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type VerifyCredentialsUserWithSettingsClassDecorationEnum = typeof VerifyCredentialsUserWithSettingsClassDecorationEnum[keyof typeof VerifyCredentialsUserWithSettingsClassDecorationEnum]; diff --git a/dist/cjs/runtime.cjs b/dist/cjs/runtime.cjs new file mode 100644 index 0000000..d6f3fb0 --- /dev/null +++ b/dist/cjs/runtime.cjs @@ -0,0 +1,316 @@ +"use strict"; +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TextApiResponse = exports.BlobApiResponse = exports.VoidApiResponse = exports.JSONApiResponse = exports.canConsumeForm = exports.querystring = exports.COLLECTION_FORMATS = exports.RequiredError = exports.FetchError = exports.ResponseError = exports.BaseAPI = exports.DefaultConfig = exports.Configuration = exports.BASE_PATH = void 0; +exports.BASE_PATH = "https://solved.ac/api/v3".replace(/\/+$/, ""); +class Configuration { + constructor(configuration = {}) { + this.configuration = configuration; + } + set config(configuration) { + this.configuration = configuration; + } + get basePath() { + return this.configuration.basePath != null ? this.configuration.basePath : exports.BASE_PATH; + } + get fetchApi() { + return this.configuration.fetchApi; + } + get middleware() { + return this.configuration.middleware || []; + } + get queryParamsStringify() { + return this.configuration.queryParamsStringify || querystring; + } + get username() { + return this.configuration.username; + } + get password() { + return this.configuration.password; + } + get apiKey() { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + get accessToken() { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + get headers() { + return this.configuration.headers; + } + get credentials() { + return this.configuration.credentials; + } +} +exports.Configuration = Configuration; +exports.DefaultConfig = new Configuration(); +/** + * This is the base class for all generated API classes. + */ +class BaseAPI { + constructor(configuration = exports.DefaultConfig) { + this.configuration = configuration; + this.fetchApi = async (url, init) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre(Object.assign({ fetch: this.fetchApi }, fetchParams)) || fetchParams; + } + } + let response = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } + catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } + else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + }) || response; + } + } + return response; + }; + this.middleware = configuration.middleware; + } + withMiddleware(...middlewares) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + withPreMiddleware(...preMiddlewares) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + withPostMiddleware(...postMiddlewares) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + isJsonMime(mime) { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + async request(context, initOverrides) { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && (response.status >= 200 && response.status < 300)) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + async createFetchParams(context, initOverrides) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + const headers = Object.assign({}, this.configuration.headers, context.headers); + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + const initOverrideFn = typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + const overriddenInit = Object.assign(Object.assign({}, initParams), (await initOverrideFn({ + init: initParams, + context, + }))); + let body; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } + else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } + else { + body = overriddenInit.body; + } + const init = Object.assign(Object.assign({}, overriddenInit), { body }); + return { url, init }; + } + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + clone() { + const constructor = this.constructor; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +} +exports.BaseAPI = BaseAPI; +BaseAPI.jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); +; +function isBlob(value) { + return typeof Blob !== 'undefined' && value instanceof Blob; +} +function isFormData(value) { + return typeof FormData !== "undefined" && value instanceof FormData; +} +class ResponseError extends Error { + constructor(response, msg) { + super(msg); + this.response = response; + this.name = "ResponseError"; + } +} +exports.ResponseError = ResponseError; +class FetchError extends Error { + constructor(cause, msg) { + super(msg); + this.cause = cause; + this.name = "FetchError"; + } +} +exports.FetchError = FetchError; +class RequiredError extends Error { + constructor(field, msg) { + super(msg); + this.field = field; + this.name = "RequiredError"; + } +} +exports.RequiredError = RequiredError; +exports.COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; +function querystring(params, prefix = '') { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} +exports.querystring = querystring; +function querystringSingleKey(key, value, keyPrefix = '') { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} +function canConsumeForm(consumes) { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} +exports.canConsumeForm = canConsumeForm; +class JSONApiResponse { + constructor(raw, transformer = (jsonValue) => jsonValue) { + this.raw = raw; + this.transformer = transformer; + } + async value() { + return this.transformer(await this.raw.json()); + } +} +exports.JSONApiResponse = JSONApiResponse; +class VoidApiResponse { + constructor(raw) { + this.raw = raw; + } + async value() { + return undefined; + } +} +exports.VoidApiResponse = VoidApiResponse; +class BlobApiResponse { + constructor(raw) { + this.raw = raw; + } + async value() { + return await this.raw.blob(); + } + ; +} +exports.BlobApiResponse = BlobApiResponse; +class TextApiResponse { + constructor(raw) { + this.raw = raw; + } + async value() { + return await this.raw.text(); + } + ; +} +exports.TextApiResponse = TextApiResponse; diff --git a/dist/cjs/runtime.d.cts b/dist/cjs/runtime.d.cts new file mode 100644 index 0000000..afaf8f9 --- /dev/null +++ b/dist/cjs/runtime.d.cts @@ -0,0 +1,180 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +export declare const BASE_PATH: string; +export interface ConfigurationParameters { + basePath?: string; + fetchApi?: FetchAPI; + middleware?: Middleware[]; + queryParamsStringify?: (params: HTTPQuery) => string; + username?: string; + password?: string; + apiKey?: string | Promise | ((name: string) => string | Promise); + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); + headers?: HTTPHeaders; + credentials?: RequestCredentials; +} +export declare class Configuration { + private configuration; + constructor(configuration?: ConfigurationParameters); + set config(configuration: Configuration); + get basePath(): string; + get fetchApi(): FetchAPI | undefined; + get middleware(): Middleware[]; + get queryParamsStringify(): (params: HTTPQuery) => string; + get username(): string | undefined; + get password(): string | undefined; + get apiKey(): ((name: string) => string | Promise) | undefined; + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined; + get headers(): HTTPHeaders | undefined; + get credentials(): RequestCredentials | undefined; +} +export declare const DefaultConfig: Configuration; +/** + * This is the base class for all generated API classes. + */ +export declare class BaseAPI { + protected configuration: Configuration; + private static readonly jsonRegex; + private middleware; + constructor(configuration?: Configuration); + withMiddleware(this: T, ...middlewares: Middleware[]): T; + withPreMiddleware(this: T, ...preMiddlewares: Array): T; + withPostMiddleware(this: T, ...postMiddlewares: Array): T; + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean; + protected request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise; + private createFetchParams; + private fetchApi; + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone; +} +export declare class ResponseError extends Error { + response: Response; + name: "ResponseError"; + constructor(response: Response, msg?: string); +} +export declare class FetchError extends Error { + cause: Error; + name: "FetchError"; + constructor(cause: Error, msg?: string); +} +export declare class RequiredError extends Error { + field: string; + name: "RequiredError"; + constructor(field: string, msg?: string); +} +export declare const COLLECTION_FORMATS: { + csv: string; + ssv: string; + tsv: string; + pipes: string; +}; +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; +export type Json = any; +export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; +export type HTTPHeaders = { + [key: string]: string; +}; +export type HTTPQuery = { + [key: string]: string | number | null | boolean | Array | Set | HTTPQuery; +}; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { + headers?: HTTPHeaders; + method: HTTPMethod; + credentials?: RequestCredentials; + body?: HTTPBody; +}; +export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; +export type InitOverrideFunction = (requestContext: { + init: HTTPRequestInit; + context: RequestOpts; +}) => Promise; +export interface FetchParams { + url: string; + init: RequestInit; +} +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} +export declare function querystring(params: HTTPQuery, prefix?: string): string; +export declare function canConsumeForm(consumes: Consume[]): boolean; +export interface Consume { + contentType: string; +} +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} +export interface ApiResponse { + raw: Response; + value(): Promise; +} +export interface ResponseTransformer { + (json: any): T; +} +export declare class JSONApiResponse { + raw: Response; + private transformer; + constructor(raw: Response, transformer?: ResponseTransformer); + value(): Promise; +} +export declare class VoidApiResponse { + raw: Response; + constructor(raw: Response); + value(): Promise; +} +export declare class BlobApiResponse { + raw: Response; + constructor(raw: Response); + value(): Promise; +} +export declare class TextApiResponse { + raw: Response; + constructor(raw: Response); + value(): Promise; +} diff --git a/dist/esm/apis/AccountApi.d.ts b/dist/esm/apis/AccountApi.d.ts new file mode 100644 index 0000000..4d8aa3e --- /dev/null +++ b/dist/esm/apis/AccountApi.d.ts @@ -0,0 +1,59 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { Language, RedeemCodeRequest, UpdateAccountSettingsRequest, VerifyCredentialsCredential } from '../models/index.js'; +export interface RedeemCodeOperationRequest { + redeemCodeRequest: RedeemCodeRequest; + xSolvedacLanguage?: Language; +} +export interface UpdateAccountSettingsOperationRequest { + updateAccountSettingsRequest: UpdateAccountSettingsRequest; + xSolvedacLanguage?: Language; +} +export interface VerifyAccountCredentialsRequest { + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class AccountApi extends runtime.BaseAPI { + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + redeemCodeRaw(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + redeemCode(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + updateAccountSettingsRaw(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + updateAccountSettings(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + verifyAccountCredentialsRaw(requestParameters: VerifyAccountCredentialsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + verifyAccountCredentials(requestParameters?: VerifyAccountCredentialsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/apis/AccountApi.js b/dist/esm/apis/AccountApi.js similarity index 60% rename from dist/apis/AccountApi.js rename to dist/esm/apis/AccountApi.js index e3daf3d..f3a3232 100644 --- a/dist/apis/AccountApi.js +++ b/dist/esm/apis/AccountApi.js @@ -2,10 +2,10 @@ /* eslint-disable */ /** * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech @@ -21,18 +21,21 @@ export class AccountApi extends runtime.BaseAPI { * 코드 교환하기 */ async redeemCodeRaw(requestParameters, initOverrides) { - if (requestParameters.inlineObject === null || requestParameters.inlineObject === undefined) { - throw new runtime.RequiredError('inlineObject', 'Required parameter requestParameters.inlineObject was null or undefined when calling redeemCode.'); + if (requestParameters['redeemCodeRequest'] == null) { + throw new runtime.RequiredError('redeemCodeRequest', 'Required parameter "redeemCodeRequest" was null or undefined when calling redeemCode().'); } const queryParameters = {}; const headerParameters = {}; headerParameters['Content-Type'] = 'application/json'; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } const response = await this.request({ path: `/account/redeem`, method: 'POST', headers: headerParameters, query: queryParameters, - body: requestParameters.inlineObject, + body: requestParameters['redeemCodeRequest'], }, initOverrides); return new runtime.VoidApiResponse(response); } @@ -48,18 +51,21 @@ export class AccountApi extends runtime.BaseAPI { * 계정 설정 변경하기 */ async updateAccountSettingsRaw(requestParameters, initOverrides) { - if (requestParameters.inlineObject1 === null || requestParameters.inlineObject1 === undefined) { - throw new runtime.RequiredError('inlineObject1', 'Required parameter requestParameters.inlineObject1 was null or undefined when calling updateAccountSettings.'); + if (requestParameters['updateAccountSettingsRequest'] == null) { + throw new runtime.RequiredError('updateAccountSettingsRequest', 'Required parameter "updateAccountSettingsRequest" was null or undefined when calling updateAccountSettings().'); } const queryParameters = {}; const headerParameters = {}; headerParameters['Content-Type'] = 'application/json'; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } const response = await this.request({ path: `/account/update_settings`, method: 'PATCH', headers: headerParameters, query: queryParameters, - body: requestParameters.inlineObject1, + body: requestParameters['updateAccountSettingsRequest'], }, initOverrides); return new runtime.VoidApiResponse(response); } @@ -74,9 +80,12 @@ export class AccountApi extends runtime.BaseAPI { * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. * 로그인 정보 가져오기 */ - async verifyAccountCredentialsRaw(initOverrides) { + async verifyAccountCredentialsRaw(requestParameters, initOverrides) { const queryParameters = {}; const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } const response = await this.request({ path: `/account/verify_credentials`, method: 'GET', @@ -89,8 +98,8 @@ export class AccountApi extends runtime.BaseAPI { * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. * 로그인 정보 가져오기 */ - async verifyAccountCredentials(initOverrides) { - const response = await this.verifyAccountCredentialsRaw(initOverrides); + async verifyAccountCredentials(requestParameters = {}, initOverrides) { + const response = await this.verifyAccountCredentialsRaw(requestParameters, initOverrides); return await response.value(); } } diff --git a/dist/esm/apis/BackgroundApi.d.ts b/dist/esm/apis/BackgroundApi.d.ts new file mode 100644 index 0000000..4a5e64b --- /dev/null +++ b/dist/esm/apis/BackgroundApi.d.ts @@ -0,0 +1,32 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { Background, Language } from '../models/index.js'; +export interface GetBackgroundRequest { + backgroundId: string; + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class BackgroundApi extends runtime.BaseAPI { + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + getBackgroundRaw(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + getBackground(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/BackgroundApi.js b/dist/esm/apis/BackgroundApi.js new file mode 100644 index 0000000..03bdc2d --- /dev/null +++ b/dist/esm/apis/BackgroundApi.js @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class BackgroundApi extends runtime.BaseAPI { + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackgroundRaw(requestParameters, initOverrides) { + if (requestParameters['backgroundId'] == null) { + throw new runtime.RequiredError('backgroundId', 'Required parameter "backgroundId" was null or undefined when calling getBackground().'); + } + const queryParameters = {}; + if (requestParameters['backgroundId'] != null) { + queryParameters['backgroundId'] = requestParameters['backgroundId']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/background/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackground(requestParameters, initOverrides) { + const response = await this.getBackgroundRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/BadgeApi.d.ts b/dist/esm/apis/BadgeApi.d.ts new file mode 100644 index 0000000..786fa57 --- /dev/null +++ b/dist/esm/apis/BadgeApi.d.ts @@ -0,0 +1,32 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { Badge, Language } from '../models/index.js'; +export interface GetBadgeRequest { + badgeId: string; + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class BadgeApi extends runtime.BaseAPI { + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + getBadgeRaw(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + getBadge(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/BadgeApi.js b/dist/esm/apis/BadgeApi.js new file mode 100644 index 0000000..72bc43b --- /dev/null +++ b/dist/esm/apis/BadgeApi.js @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class BadgeApi extends runtime.BaseAPI { + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadgeRaw(requestParameters, initOverrides) { + if (requestParameters['badgeId'] == null) { + throw new runtime.RequiredError('badgeId', 'Required parameter "badgeId" was null or undefined when calling getBadge().'); + } + const queryParameters = {}; + if (requestParameters['badgeId'] != null) { + queryParameters['badgeId'] = requestParameters['badgeId']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/badge/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadge(requestParameters, initOverrides) { + const response = await this.getBadgeRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/CoinsApi.d.ts b/dist/esm/apis/CoinsApi.d.ts new file mode 100644 index 0000000..d3bf56f --- /dev/null +++ b/dist/esm/apis/CoinsApi.d.ts @@ -0,0 +1,41 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { CoinShopProduct, GetCoinStardustExchangeRateExchangeRate, Language } from '../models/index.js'; +export interface GetCoinShopProductsRequest { + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class CoinsApi extends runtime.BaseAPI { + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + getCoinShopProductsRaw(requestParameters: GetCoinShopProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + getCoinShopProducts(requestParameters?: GetCoinShopProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + getCoinStardustExchangeRateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + getCoinStardustExchangeRate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/CoinsApi.js b/dist/esm/apis/CoinsApi.js new file mode 100644 index 0000000..2e2abd3 --- /dev/null +++ b/dist/esm/apis/CoinsApi.js @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class CoinsApi extends runtime.BaseAPI { + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProductsRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/coins/shop/list`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProducts(requestParameters = {}, initOverrides) { + const response = await this.getCoinShopProductsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRateRaw(initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + const response = await this.request({ + path: `/coins/exchange_rate`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRate(initOverrides) { + const response = await this.getCoinStardustExchangeRateRaw(initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/OtherApi.d.ts b/dist/esm/apis/OtherApi.d.ts new file mode 100644 index 0000000..638c0fc --- /dev/null +++ b/dist/esm/apis/OtherApi.d.ts @@ -0,0 +1,28 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { SiteStatistics } from '../models/index.js'; +/** + * + */ +export declare class OtherApi extends runtime.BaseAPI { + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + getSiteStatisticsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + getSiteStatistics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/OtherApi.js b/dist/esm/apis/OtherApi.js new file mode 100644 index 0000000..9e4461d --- /dev/null +++ b/dist/esm/apis/OtherApi.js @@ -0,0 +1,42 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class OtherApi extends runtime.BaseAPI { + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatisticsRaw(initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + const response = await this.request({ + path: `/site/stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatistics(initOverrides) { + const response = await this.getSiteStatisticsRaw(initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/ProblemApi.d.ts b/dist/esm/apis/ProblemApi.d.ts new file mode 100644 index 0000000..96d5721 --- /dev/null +++ b/dist/esm/apis/ProblemApi.d.ts @@ -0,0 +1,72 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { GetClassesProblemCountClassEntry, GetProblemsByIdList200Response, GetProblemsCountGroupByLevelLevelEntry, Language, Problem } from '../models/index.js'; +export interface GetClassesProblemCountRequest { + xSolvedacLanguage?: Language; +} +export interface GetProblemByIdRequest { + problemId: number; + xSolvedacLanguage?: Language; +} +export interface GetProblemsByIdListRequest { + problemIds: Array; + xSolvedacLanguage?: Language; +} +export interface GetProblemsCountGroupByLevelRequest { + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class ProblemApi extends runtime.BaseAPI { + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + getClassesProblemCountRaw(requestParameters: GetClassesProblemCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + getClassesProblemCount(requestParameters?: GetClassesProblemCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + getProblemByIdRaw(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + getProblemById(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + getProblemsByIdListRaw(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + getProblemsByIdList(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + getProblemsCountGroupByLevelRaw(requestParameters: GetProblemsCountGroupByLevelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + getProblemsCountGroupByLevel(requestParameters?: GetProblemsCountGroupByLevelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; +} diff --git a/dist/esm/apis/ProblemApi.js b/dist/esm/apis/ProblemApi.js new file mode 100644 index 0000000..f2c4878 --- /dev/null +++ b/dist/esm/apis/ProblemApi.js @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class ProblemApi extends runtime.BaseAPI { + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCountRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCount(requestParameters = {}, initOverrides) { + const response = await this.getClassesProblemCountRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemByIdRaw(requestParameters, initOverrides) { + if (requestParameters['problemId'] == null) { + throw new runtime.RequiredError('problemId', 'Required parameter "problemId" was null or undefined when calling getProblemById().'); + } + const queryParameters = {}; + if (requestParameters['problemId'] != null) { + queryParameters['problemId'] = requestParameters['problemId']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemById(requestParameters, initOverrides) { + const response = await this.getProblemByIdRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdListRaw(requestParameters, initOverrides) { + if (requestParameters['problemIds'] == null) { + throw new runtime.RequiredError('problemIds', 'Required parameter "problemIds" was null or undefined when calling getProblemsByIdList().'); + } + const queryParameters = {}; + if (requestParameters['problemIds'] != null) { + queryParameters['problemIds'] = requestParameters['problemIds'].join(runtime.COLLECTION_FORMATS["csv"]); + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/lookup`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdList(requestParameters, initOverrides) { + const response = await this.getProblemsByIdListRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevelRaw(requestParameters, initOverrides) { + const queryParameters = {}; + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/problem/level`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevel(requestParameters = {}, initOverrides) { + const response = await this.getProblemsCountGroupByLevelRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/RankingApi.d.ts b/dist/esm/apis/RankingApi.d.ts new file mode 100644 index 0000000..1cc6933 --- /dev/null +++ b/dist/esm/apis/RankingApi.d.ts @@ -0,0 +1,116 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { GetOrganizationRankingByACRating200Response, GetRankingByClass200Response, Language, OrganizationType } from '../models/index.js'; +export interface GetOrganizationRankingByACRatingRequest { + type?: OrganizationType; + page?: number; +} +export interface GetRankingByClassRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRankingByContributionRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRankingByMaxStreakRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRankingBySolveACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetReverseRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} +export interface GetRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} +/** + * + */ +export declare class RankingApi extends runtime.BaseAPI { + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + getOrganizationRankingByACRatingRaw(requestParameters: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + getOrganizationRankingByACRating(requestParameters?: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + getRankingByClassRaw(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + getRankingByClass(requestParameters?: GetRankingByClassRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + getRankingByContributionRaw(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + getRankingByContribution(requestParameters?: GetRankingByContributionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + getRankingByMaxStreakRaw(requestParameters: GetRankingByMaxStreakRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + getRankingByMaxStreak(requestParameters?: GetRankingByMaxStreakRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + getRankingBySolveACRatingRaw(requestParameters: GetRankingBySolveACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + getRankingBySolveACRating(requestParameters?: GetRankingBySolveACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + getReverseRivalRankingByACRatingRaw(requestParameters: GetReverseRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + getReverseRivalRankingByACRating(requestParameters?: GetReverseRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + getRivalRankingByACRatingRaw(requestParameters: GetRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + getRivalRankingByACRating(requestParameters?: GetRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/RankingApi.js b/dist/esm/apis/RankingApi.js new file mode 100644 index 0000000..597a0b6 --- /dev/null +++ b/dist/esm/apis/RankingApi.js @@ -0,0 +1,222 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class RankingApi extends runtime.BaseAPI { + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['type'] != null) { + queryParameters['type'] = requestParameters['type']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + const response = await this.request({ + path: `/ranking/organization`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRating(requestParameters = {}, initOverrides) { + const response = await this.getOrganizationRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClassRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClass(requestParameters = {}, initOverrides) { + const response = await this.getRankingByClassRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContributionRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/contribution`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContribution(requestParameters = {}, initOverrides) { + const response = await this.getRankingByContributionRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreakRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/streak`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreak(requestParameters = {}, initOverrides) { + const response = await this.getRankingByMaxStreakRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/tier`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRating(requestParameters = {}, initOverrides) { + const response = await this.getRankingBySolveACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/reverse_rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRating(requestParameters = {}, initOverrides) { + const response = await this.getReverseRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRatingRaw(requestParameters, initOverrides) { + const queryParameters = {}; + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/ranking/rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRating(requestParameters = {}, initOverrides) { + const response = await this.getRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/SearchApi.d.ts b/dist/esm/apis/SearchApi.d.ts new file mode 100644 index 0000000..c3398b6 --- /dev/null +++ b/dist/esm/apis/SearchApi.d.ts @@ -0,0 +1,79 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { GetProblemsByIdList200Response, GetSearchAutoCompletionsSuggestion, Language, SearchProblemQueryDirection, SearchProblemQuerySort, SearchProblemTag200Response, SearchUser200Response } from '../models/index.js'; +export interface GetSearchAutoCompletionsRequest { + query: string; + xSolvedacLanguage?: Language; +} +export interface SearchProblemRequest { + query: string; + direction: SearchProblemQueryDirection; + sort: SearchProblemQuerySort; + xSolvedacLanguage?: Language; + page?: number; +} +export interface SearchProblemTagRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} +export interface SearchUserRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} +/** + * + */ +export declare class SearchApi extends runtime.BaseAPI { + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + getSearchAutoCompletionsRaw(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + getSearchAutoCompletions(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + searchProblemRaw(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + searchProblem(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + searchProblemTagRaw(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + searchProblemTag(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/SearchApi.js b/dist/esm/apis/SearchApi.js new file mode 100644 index 0000000..1fd187f --- /dev/null +++ b/dist/esm/apis/SearchApi.js @@ -0,0 +1,168 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class SearchApi extends runtime.BaseAPI { + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletionsRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling getSearchAutoCompletions().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/suggestion`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletions(requestParameters, initOverrides) { + const response = await this.getSearchAutoCompletionsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblemRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling searchProblem().'); + } + if (requestParameters['direction'] == null) { + throw new runtime.RequiredError('direction', 'Required parameter "direction" was null or undefined when calling searchProblem().'); + } + if (requestParameters['sort'] == null) { + throw new runtime.RequiredError('sort', 'Required parameter "sort" was null or undefined when calling searchProblem().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + if (requestParameters['direction'] != null) { + queryParameters['direction'] = requestParameters['direction']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + if (requestParameters['sort'] != null) { + queryParameters['sort'] = requestParameters['sort']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/problem`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblem(requestParameters, initOverrides) { + const response = await this.searchProblemRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTagRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling searchProblemTag().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/tag`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTag(requestParameters, initOverrides) { + const response = await this.searchProblemTagRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUserRaw(requestParameters, initOverrides) { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError('query', 'Required parameter "query" was null or undefined when calling searchUser().'); + } + const queryParameters = {}; + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/search/user`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUser(requestParameters, initOverrides) { + const response = await this.searchUserRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/dist/esm/apis/UserApi.d.ts b/dist/esm/apis/UserApi.d.ts new file mode 100644 index 0000000..b242ffa --- /dev/null +++ b/dist/esm/apis/UserApi.d.ts @@ -0,0 +1,72 @@ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +import type { GetProblemsByIdList200Response, GetUserProblemStatsProblemStat, Language, Organization, SocialUser } from '../models/index.js'; +export interface GetUserByHandleRequest { + handle: string; + xSolvedacLanguage?: Language; +} +export interface GetUserOrganizationsRequest { + handle: string; +} +export interface GetUserProblemStatsRequest { + handle: string; +} +export interface GetUserTop100Request { + handle: string; + xSolvedacLanguage?: Language; +} +/** + * + */ +export declare class UserApi extends runtime.BaseAPI { + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + getUserByHandleRaw(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + getUserByHandle(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + getUserOrganizationsRaw(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + getUserOrganizations(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + getUserProblemStatsRaw(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + getUserTop100Raw(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + getUserTop100(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; +} diff --git a/dist/esm/apis/UserApi.js b/dist/esm/apis/UserApi.js new file mode 100644 index 0000000..648e7e4 --- /dev/null +++ b/dist/esm/apis/UserApi.js @@ -0,0 +1,141 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import * as runtime from '../runtime.js'; +/** + * + */ +export class UserApi extends runtime.BaseAPI { + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandleRaw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserByHandle().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/user/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandle(requestParameters, initOverrides) { + const response = await this.getUserByHandleRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizationsRaw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserOrganizations().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + const response = await this.request({ + path: `/user/organizations`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizations(requestParameters, initOverrides) { + const response = await this.getUserOrganizationsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStatsRaw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserProblemStats().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + const response = await this.request({ + path: `/user/problem_stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStats(requestParameters, initOverrides) { + const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides); + return await response.value(); + } + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100Raw(requestParameters, initOverrides) { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserTop100().'); + } + const queryParameters = {}; + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + const headerParameters = {}; + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + const response = await this.request({ + path: `/user/top_100`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + return new runtime.JSONApiResponse(response); + } + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100(requestParameters, initOverrides) { + const response = await this.getUserTop100Raw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/dist/apis/index.d.ts b/dist/esm/apis/index.d.ts similarity index 89% rename from dist/apis/index.d.ts rename to dist/esm/apis/index.d.ts index e899bf1..00ebfa1 100644 --- a/dist/apis/index.d.ts +++ b/dist/esm/apis/index.d.ts @@ -2,7 +2,6 @@ export * from './AccountApi.js'; export * from './BackgroundApi.js'; export * from './BadgeApi.js'; export * from './CoinsApi.js'; -export * from './DefaultApi.js'; export * from './OtherApi.js'; export * from './ProblemApi.js'; export * from './RankingApi.js'; diff --git a/dist/apis/index.js b/dist/esm/apis/index.js similarity index 90% rename from dist/apis/index.js rename to dist/esm/apis/index.js index 455dd63..1854d90 100644 --- a/dist/apis/index.js +++ b/dist/esm/apis/index.js @@ -4,7 +4,6 @@ export * from './AccountApi.js'; export * from './BackgroundApi.js'; export * from './BadgeApi.js'; export * from './CoinsApi.js'; -export * from './DefaultApi.js'; export * from './OtherApi.js'; export * from './ProblemApi.js'; export * from './RankingApi.js'; diff --git a/dist/index.d.ts b/dist/esm/index.d.ts similarity index 100% rename from dist/index.d.ts rename to dist/esm/index.d.ts diff --git a/dist/index.js b/dist/esm/index.js similarity index 100% rename from dist/index.js rename to dist/esm/index.js diff --git a/dist/esm/models/index.d.ts b/dist/esm/models/index.d.ts new file mode 100644 index 0000000..e19e4ba --- /dev/null +++ b/dist/esm/models/index.d.ts @@ -0,0 +1,2750 @@ +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +export declare const ArenaTier: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; + readonly NUMBER_11: 11; + readonly NUMBER_12: 12; + readonly NUMBER_13: 13; +}; +export type ArenaTier = typeof ArenaTier[keyof typeof ArenaTier]; +/** + * 사용자가 획득할 수 있는 배경입니다. + * @export + * @interface Background + */ +export interface Background { + /** + * 배경의 고유 ID입니다. + * @type {string} + * @memberof Background + */ + backgroundId: string; + /** + * 배경 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Background + */ + backgroundImageUrl: string; + /** + * 일러스트 배경 보기가 꺼져있을 때 보여줄 수 있는 대안 배경 사진으로 가는 하이퍼링크입니다. + * 일러스트를 포함하지 않은 배경이거나, 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + fallbackBackgroundImageUrl?: string; + /** + * 움직이는 배경이 켜져있을 때 보여줄 수 있는 배경 영상으로 가는 하이퍼링크입니다. + * 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + backgroundVideoUrl?: string; + /** + * 배경을 획득한 사용자 수입니다. + * @type {number} + * @memberof Background + */ + unlockedUserCount: number; + /** + * 배경의 표시 이름입니다. + * @type {string} + * @memberof Background + */ + displayName: string; + /** + * 배경의 설명입니다. + * @type {string} + * @memberof Background + */ + displayDescription: string; + /** + * 배경을 얻는 조건입니다. + * 조건이 숨겨진 경우, 해당 값이 내려오지 않습니다. + * @type {string} + * @memberof Background + */ + conditions?: string; + /** + * 배경 획득 조건이 숨겨져 있는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + hiddenConditions: boolean; + /** + * 일러스트 배경인지 여부입니다. + * @type {boolean} + * @memberof Background + */ + isIllust: boolean; + /** + * 배경 획득 유형 분류입니다. + * @type {BackgroundCategory} + * @memberof Background + */ + backgroundCategory: BackgroundCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + solvedCompanyRights: boolean; + /** + * 배경을 작업한 작가 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof Background + */ + authors: Array; +} +/** + * 배경을 작업한 작가입니다. + * @export + * @interface BackgroundAuthor + */ +export interface BackgroundAuthor { + /** + * 작가 고유 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorId: string; + /** + * 수행한 역할입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + role: string; + /** + * 작가 홈페이지로 가는 하이퍼링크입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorUrl?: string; + /** + * 작가의 solved.ac 핸들입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + handle?: string; + /** + * 작가의 Twitter ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + twitter?: string; + /** + * 작가의 인스타그램 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + instagram?: string; + /** + * 작가의 표시 이름입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + displayName: string; +} +/** + * 배경 획득 유형 분류입니다. + * @export + */ +export declare const BackgroundCategory: { + readonly Event: "event"; + readonly Arena: "arena"; + readonly Achievement: "achievement"; + readonly Season: "season"; + readonly Contest: "contest"; +}; +export type BackgroundCategory = typeof BackgroundCategory[keyof typeof BackgroundCategory]; +/** + * 사용자가 획득할 수 있는 뱃지입니다. + * @export + * @interface Badge + */ +export interface Badge { + /** + * 뱃지의 고유 ID입니다. + * @type {string} + * @memberof Badge + */ + badgeId: string; + /** + * 뱃지 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Badge + */ + badgeImageUrl: string; + /** + * 뱃지가 표시되는 이름입니다. + * @type {string} + * @memberof Badge + */ + displayName: string; + /** + * 뱃지의 설명입니다. + * @type {string} + * @memberof Badge + */ + displayDescription: string; + /** + * 뱃지를 획득한 사용자 수입니다. + * @type {number} + * @memberof Badge + */ + unlockedUserCount: number; + /** + * + * @type {BadgeTier} + * @memberof Badge + */ + badgeTier: BadgeTier; + /** + * + * @type {BadgeCategory} + * @memberof Badge + */ + badgeCategory: BadgeCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Badge + */ + solvedCompanyRights: boolean; + /** + * 뱃지가 만들어진 시각입니다. + * @type {string} + * @memberof Badge + */ + createdAt: string; +} +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +export declare const BadgeCategory: { + readonly Achievement: "achievement"; + readonly Season: "season"; + readonly Event: "event"; + readonly Contest: "contest"; +}; +export type BadgeCategory = typeof BadgeCategory[keyof typeof BadgeCategory]; +/** + * 뱃지의 등급입니다. + * @export + */ +export declare const BadgeTier: { + readonly Bronze: "bronze"; + readonly Silver: "silver"; + readonly Gold: "gold"; + readonly Master: "master"; +}; +export type BadgeTier = typeof BadgeTier[keyof typeof BadgeTier]; +/** + * 코인샵에서 판매하고 있는 상품입니다. + * @export + * @interface CoinShopProduct + */ +export interface CoinShopProduct { + /** + * 재고(Stock Keeping Unit) ID입니다. + * @type {number} + * @memberof CoinShopProduct + */ + skuId: number; + /** + * + * @type {Item} + * @memberof CoinShopProduct + */ + item: Item; + /** + * 1회 구매 시 획득하는 아이템 개수입니다. + * @type {number} + * @memberof CoinShopProduct + */ + units: number; + /** + * 가격입니다. + * 코인의 경우 나누기 100을 해야 표시 가격이 됩니다. + * @type {number} + * @memberof CoinShopProduct + */ + price: number; + /** + * 가격 단위입니다. + * @type {string} + * @memberof CoinShopProduct + */ + priceUnit: CoinShopProductPriceUnitEnum; + /** + * 아이템 사용 시간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemUseTimeLimited: boolean; + /** + * 아이템 구매 기간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemSellTimeLimited: boolean; +} +/** + * @export + */ +export declare const CoinShopProductPriceUnitEnum: { + readonly Coins: "coins"; + readonly Stardusts: "stardusts"; +}; +export type CoinShopProductPriceUnitEnum = typeof CoinShopProductPriceUnitEnum[keyof typeof CoinShopProductPriceUnitEnum]; +/** + * 난이도 투표 등에 사용할 수 있는 이모티콘입니다. + * @export + * @interface Emoticon + */ +export interface Emoticon { + /** + * 고유 식별자입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof Emoticon + */ + displayName: string; +} +/** + * + * @export + * @interface GetClassesProblemCountClassEntry + */ +export interface GetClassesProblemCountClassEntry { + /** + * 클래스 숫자입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + _class: GetClassesProblemCountClassEntryClassEnum; + /** + * 총 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + total: number; + /** + * 에센셜 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + essentials: number; + /** + * 취득에 필요한 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + criteria: number; +} +/** + * @export + */ +export declare const GetClassesProblemCountClassEntryClassEnum: { + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type GetClassesProblemCountClassEntryClassEnum = typeof GetClassesProblemCountClassEntryClassEnum[keyof typeof GetClassesProblemCountClassEntryClassEnum]; +/** + * + * @export + * @interface GetCoinStardustExchangeRateExchangeRate + */ +export interface GetCoinStardustExchangeRateExchangeRate { + /** + * 1 코인을 별조각으로 바꾸는 환율입니다. + * 별조각을 코인으로 환전할 때에는 수수료가 1%(소수점은 내림) 붙습니다. + * @type {number} + * @memberof GetCoinStardustExchangeRateExchangeRate + */ + rate: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200Response + */ +export interface GetOrganizationRankingByACRating200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetOrganizationRankingByACRating200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200ResponseItemsInner + */ +export interface GetOrganizationRankingByACRating200ResponseItemsInner { + /** + * ID입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + color: string; + /** + * 순위입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rank: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetProblemsByIdList200Response + */ +export interface GetProblemsByIdList200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetProblemsByIdList200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetProblemsByIdList200Response + */ + items: Array; +} +/** + * + * @export + * @interface GetProblemsCountGroupByLevelLevelEntry + */ +export interface GetProblemsCountGroupByLevelLevelEntry { + /** + * + * @type {ProblemLevel} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + level: ProblemLevel; + /** + * 문제 수입니다. + * @type {number} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + count: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetRankingByClass200Response + */ +export interface GetRankingByClass200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetRankingByClass200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetRankingByClass200Response + */ + items: Array; +} +/** + * 고급 검색 관련 자동 완성입니다. + * @export + * @interface GetSearchAutoCompletionsAutoCompleteEntry + */ +export interface GetSearchAutoCompletionsAutoCompleteEntry { + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + description: string; +} +/** + * 요악한 문제 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemEntry + */ +export interface GetSearchAutoCompletionsBriefProblemEntry { + /** + * 문제 ID입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + id: number; + /** + * 문제 제목입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + title: string; + /** + * + * @type {ProblemLevel} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + level: ProblemLevel; + /** + * 푼 사람 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + solved: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + description: string; +} +/** + * 요약한 태그 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemTagEntry + */ +export interface GetSearchAutoCompletionsBriefProblemTagEntry { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + key: string; + /** + * 태그 이름입니다. + * 사용자 언어에 따라 번역되지 않습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + name: string; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + problemCount: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + description: string; +} +/** + * + * @export + * @interface GetSearchAutoCompletionsSuggestion + */ +export interface GetSearchAutoCompletionsSuggestion { + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + autocomplete: Array; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problems: Array; + /** + * 검색 결과로 나올 총 문제 수입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problemCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tags: Array; + /** + * 검색 결과로 나올 총 태그 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tagCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + users: Array; + /** + * 검색 결과로 나올 총 사용자 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + userCount: number; +} +/** + * 사용자 정보입니다. + * @export + * @interface GetSearchAutoCompletionsUserEntry + */ +export interface GetSearchAutoCompletionsUserEntry { + /** + * 사용자명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + _class: GetSearchAutoCompletionsUserEntryClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + classDecoration: GetSearchAutoCompletionsUserEntryClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rank: number; +} +/** + * @export + */ +export declare const GetSearchAutoCompletionsUserEntryClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type GetSearchAutoCompletionsUserEntryClassEnum = typeof GetSearchAutoCompletionsUserEntryClassEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassEnum]; +/** + * @export + */ +export declare const GetSearchAutoCompletionsUserEntryClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum]; +/** + * + * @export + * @interface GetUserProblemStatsProblemStat + */ +export interface GetUserProblemStatsProblemStat { + /** + * + * @type {ProblemLevel} + * @memberof GetUserProblemStatsProblemStat + */ + level: ProblemLevel; + /** + * solved.ac에 등록된 해당 수준 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + total: number; + /** + * 사용자가 푼 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + solved: number; + /** + * 사용자가 부분 성공한 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + partial: number; + /** + * 사용자가 시도해 본 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + tried: number; +} +/** + * 사용자가 사용할 수 있는 아이템입니다. + * @export + * @interface Item + */ +export interface Item { + /** + * ID입니다. + * @type {string} + * @memberof Item + */ + itemId: string; + /** + * 아이템 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Item + */ + itemImageUrl: string; + /** + * 최대 소유 가능 개수입니다. + * 사람에 따라 다를 수 있습니다. + * @type {number} + * @memberof Item + */ + inventoryMaxUnits: number; + /** + * 사용 가능 여부입니다. + * @type {boolean} + * @memberof Item + */ + usable: boolean; + /** + * 국제화된 이름입니다. + * @type {string} + * @memberof Item + */ + displayName: string; + /** + * 국제화된 설명입니다. + * @type {string} + * @memberof Item + */ + displayDescription: string; +} +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +export declare const Language: { + readonly Ko: "ko"; + readonly En: "en"; + readonly Ja: "ja"; +}; +export type Language = typeof Language[keyof typeof Language]; +/** + * solved.ac에 등록한 단체입니다. + * @export + * @interface Organization + */ +export interface Organization { + /** + * ID입니다. + * @type {number} + * @memberof Organization + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof Organization + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof Organization + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof Organization + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof Organization + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof Organization + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof Organization + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof Organization + */ + color: string; +} +/** + * 단체 유형입니다. + * @export + */ +export declare const OrganizationType: { + readonly University: "university"; + readonly Company: "company"; + readonly Community: "community"; + readonly HighSchool: "high_school"; + readonly MiddleSchool: "middle_school"; + readonly ElementarySchool: "elementary_school"; + readonly Undefined: "undefined"; +}; +export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType]; +/** + * 문제 정보입니다. + * @export + * @interface Problem + */ +export interface Problem { + /** + * 백준 문제 번호로, 문제마다 고유합니다. + * @type {number} + * @memberof Problem + */ + problemId: number; + /** + * 한국어 문제 제목입니다. + * HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. + * @type {string} + * @memberof Problem + */ + titleKo: string; + /** + * 언어별 문제 제목 목록입니다. + * @type {Array} + * @memberof Problem + */ + titles: Array; + /** + * 채점 가능 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isSolvable: boolean; + /** + * 부분 점수/서브태스크 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isPartial: boolean; + /** + * 맞은 사람 수입니다. + * @type {number} + * @memberof Problem + */ + acceptedUserCount: number; + /** + * + * @type {ProblemLevel} + * @memberof Problem + */ + level: ProblemLevel; + /** + * 난이도 기여자 수입니다. + * @type {number} + * @memberof Problem + */ + votedUserCount: number; + /** + * 새싹 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + sprout: boolean; + /** + * 레이팅을 주지 않는지 여부입니다. + * @type {boolean} + * @memberof Problem + */ + givesNoRating: boolean; + /** + * 난이도 기여 제한 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isLevelLocked: boolean; + /** + * 평균 시도 횟수입니다. + * @type {number} + * @memberof Problem + */ + averageTries: number; + /** + * 공식 문제 여부입니다. + * 번외 문제 등은 비공식 문제로 분류됩니다. + * @type {boolean} + * @memberof Problem + */ + official: boolean; + /** + * 태그 목록입니다. + * @type {Array} + * @memberof Problem + */ + tags: Array; + /** + * + * @type {any} + * @memberof Problem + */ + metadata: any | null; +} +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +export declare const ProblemLevel: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; + readonly NUMBER_11: 11; + readonly NUMBER_12: 12; + readonly NUMBER_13: 13; + readonly NUMBER_14: 14; + readonly NUMBER_15: 15; + readonly NUMBER_16: 16; + readonly NUMBER_17: 17; + readonly NUMBER_18: 18; + readonly NUMBER_19: 19; + readonly NUMBER_20: 20; + readonly NUMBER_21: 21; + readonly NUMBER_22: 22; + readonly NUMBER_23: 23; + readonly NUMBER_24: 24; + readonly NUMBER_25: 25; + readonly NUMBER_26: 26; + readonly NUMBER_27: 27; + readonly NUMBER_28: 28; + readonly NUMBER_29: 29; + readonly NUMBER_30: 30; +}; +export type ProblemLevel = typeof ProblemLevel[keyof typeof ProblemLevel]; +/** + * + * @export + * @interface ProblemTag + */ +export interface ProblemTag { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof ProblemTag + */ + key: string; + /** + * + * @type {boolean} + * @memberof ProblemTag + */ + isMeta: boolean; + /** + * 백준 온라인 저지에서 쓰는 태그 ID입니다. + * @type {number} + * @memberof ProblemTag + */ + bojTagId: number; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof ProblemTag + */ + problemCount: number; + /** + * 언어별 태그 이름 목록입니다. + * @type {Array} + * @memberof ProblemTag + */ + displayNames: Array; + /** + * 별명 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof ProblemTag + */ + aliases: Array; +} +/** + * 태그의 별칭을 나타냅니다. + * @export + * @interface ProblemTagAlias + */ +export interface ProblemTagAlias { + /** + * 별칭입니다 + * @type {string} + * @memberof ProblemTagAlias + */ + alias: string; +} +/** + * + * @export + * @interface ProblemTagNameTranslated + */ +export interface ProblemTagNameTranslated { + /** + * 태그 이름이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTagNameTranslated + */ + language: Language; + /** + * 이름입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + name: string; + /** + * 짧은 이름입니다. + * 따로 없을 경우 `name`과 같은 값입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + _short: string; +} +/** + * 언어별 문제 제목입니다. + * @export + * @interface ProblemTitleTranslated + */ +export interface ProblemTitleTranslated { + /** + * 문제 제목이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTitleTranslated + */ + language: Language; + /** + * 문제 제목이 작성된 언어의 이름입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + languageDisplayName: string; + /** + * 문제 제목입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + title: string; + /** + * 원본과 동일한지 여부입니다. + * @type {boolean} + * @memberof ProblemTitleTranslated + */ + isOriginal: boolean; +} +/** + * + * @export + * @interface RedeemCodeRequest + */ +export interface RedeemCodeRequest { + /** + * 리딤 코드입니다. + * @type {string} + * @memberof RedeemCodeRequest + */ + code: string; +} +/** + * + * @export + * @interface RivalUser + */ +export interface RivalUser { + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof RivalUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof RivalUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof RivalUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof RivalUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof RivalUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof RivalUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof RivalUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof RivalUser + */ + _class: RivalUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof RivalUser + */ + classDecoration: RivalUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof RivalUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof RivalUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof RivalUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof RivalUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof RivalUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof RivalUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof RivalUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof RivalUser + */ + rank: number; +} +/** + * @export + */ +export declare const RivalUserClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type RivalUserClassEnum = typeof RivalUserClassEnum[keyof typeof RivalUserClassEnum]; +/** + * @export + */ +export declare const RivalUserClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type RivalUserClassDecorationEnum = typeof RivalUserClassDecorationEnum[keyof typeof RivalUserClassDecorationEnum]; +/** + * 검색 결과 정렬 방향 + * @export + */ +export declare const SearchProblemQueryDirection: { + readonly Asc: "asc"; + readonly Desc: "desc"; +}; +export type SearchProblemQueryDirection = typeof SearchProblemQueryDirection[keyof typeof SearchProblemQueryDirection]; +/** + * 검색 결과 정렬 기준 + * @export + */ +export declare const SearchProblemQuerySort: { + readonly Id: "id"; + readonly Level: "level"; + readonly Title: "title"; + readonly Solved: "solved"; + readonly AverageTry: "average_try"; + readonly Random: "random"; +}; +export type SearchProblemQuerySort = typeof SearchProblemQuerySort[keyof typeof SearchProblemQuerySort]; +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchProblemTag200Response + */ +export interface SearchProblemTag200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchProblemTag200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchProblemTag200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchUser200Response + */ +export interface SearchUser200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchUser200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchUser200Response + */ + items: Array; +} +/** + * solved.ac 사이트의 통계 정보입니다. + * @export + * @interface SiteStatistics + */ +export interface SiteStatistics { + /** + * 여태까지 색인된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemCount: number; + /** + * 여태까지 난이도가 기여된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemVotedCount: number; + /** + * 여태까지 등록한 사용자 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + userCount: number; + /** + * 여태까지 난이도에 기여한 사용자 수입니다 + * @type {number} + * @memberof SiteStatistics + */ + contributorCount: number; + /** + * 여태까지 이루어진 난이도 기여의 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + contributionCount: number; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface SocialUser + */ +export interface SocialUser { + /** + * 로그인한 사용자가 해당 사용자를 차단했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + blocked: boolean; + /** + * 로그인한 사용자가 해당 사용자에게 차단당했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + reverseBlocked: boolean; + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof SocialUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof SocialUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof SocialUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof SocialUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof SocialUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof SocialUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof SocialUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof SocialUser + */ + _class: SocialUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof SocialUser + */ + classDecoration: SocialUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof SocialUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof SocialUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof SocialUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof SocialUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof SocialUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof SocialUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof SocialUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof SocialUser + */ + rank: number; +} +/** + * @export + */ +export declare const SocialUserClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type SocialUserClassEnum = typeof SocialUserClassEnum[keyof typeof SocialUserClassEnum]; +/** + * @export + */ +export declare const SocialUserClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type SocialUserClassDecorationEnum = typeof SocialUserClassDecorationEnum[keyof typeof SocialUserClassDecorationEnum]; +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +export declare const SolveTier: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; + readonly NUMBER_11: 11; + readonly NUMBER_12: 12; + readonly NUMBER_13: 13; + readonly NUMBER_14: 14; + readonly NUMBER_15: 15; + readonly NUMBER_16: 16; + readonly NUMBER_17: 17; + readonly NUMBER_18: 18; + readonly NUMBER_19: 19; + readonly NUMBER_20: 20; + readonly NUMBER_21: 21; + readonly NUMBER_22: 22; + readonly NUMBER_23: 23; + readonly NUMBER_24: 24; + readonly NUMBER_25: 25; + readonly NUMBER_26: 26; + readonly NUMBER_27: 27; + readonly NUMBER_28: 28; + readonly NUMBER_29: 29; + readonly NUMBER_30: 30; + readonly NUMBER_31: 31; +}; +export type SolveTier = typeof SolveTier[keyof typeof SolveTier]; +/** + * + * @export + * @interface UpdateAccountSettingsRequest + */ +export interface UpdateAccountSettingsRequest { + /** + * 업데이트할 설정의 이름입니다. + * @type {string} + * @memberof UpdateAccountSettingsRequest + */ + key?: string; + /** + * 업데이트할 설정의 새로운 값입니다. + * @type {any} + * @memberof UpdateAccountSettingsRequest + */ + value?: any; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface User + */ +export interface User { + /** + * 사용자명입니다. + * @type {string} + * @memberof User + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof User + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof User + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof User + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof User + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof User + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof User + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof User + */ + _class: UserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof User + */ + classDecoration: UserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof User + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof User + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof User + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof User + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof User + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof User + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof User + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof User + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof User + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof User + */ + rank: number; +} +/** + * @export + */ +export declare const UserClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type UserClassEnum = typeof UserClassEnum[keyof typeof UserClassEnum]; +/** + * @export + */ +export declare const UserClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum]; +/** + * 사용자 동의 여부입니다. + * @export + * @interface VerifyCredentialsAgreements + */ +export interface VerifyCredentialsAgreements { + /** + * 동의한 약관 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + tos: string; + /** + * 동의한 개인정보 처리방침 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + privacy: string; +} +/** + * + * @export + * @interface VerifyCredentialsCredential + */ +export interface VerifyCredentialsCredential { + /** + * + * @type {VerifyCredentialsUserWithSettings} + * @memberof VerifyCredentialsCredential + */ + user: VerifyCredentialsUserWithSettings; + /** + * + * @type {VerifyCredentialsAgreements} + * @memberof VerifyCredentialsCredential + */ + aggredOn: VerifyCredentialsAgreements; + /** + * 보유할 수 있는 모든 이모티콘에 대해 이모티콘 정보에 덧붙여 보유 여부를 함께 담은 목록입니다. + * @type {Array} + * @memberof VerifyCredentialsCredential + */ + emoticons: Array; + /** + * + * @type {any} + * @memberof VerifyCredentialsCredential + */ + bookmarks: any | null; + /** + * 받은 알림 수입니다. + * @type {number} + * @memberof VerifyCredentialsCredential + */ + notificationCount: number; + /** + * 마지막으로 솔브드 상태가 변한 시각입니다. + * @type {string} + * @memberof VerifyCredentialsCredential + */ + lastSolvedStateChangedAt: string; +} +/** + * + * @export + * @interface VerifyCredentialsEmoticonUnlockStatus + */ +export interface VerifyCredentialsEmoticonUnlockStatus { + /** + * 해금 여부입니다. + * @type {boolean} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + unlocked: boolean; + /** + * 고유 식별자입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + displayName: string; +} +/** + * + * @export + * @interface VerifyCredentialsUserSettings + */ +export interface VerifyCredentialsUserSettings { + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnProblemSolve: VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + screenTheme: VerifyCredentialsUserSettingsScreenThemeEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostHandle: VerifyCredentialsUserSettingsTwitterPostHandleEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnRatingIncrease: VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnTierIncrease: VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnClassIncrease: VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + proHideAds: VerifyCredentialsUserSettingsProHideAdsEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + siteLanguage: VerifyCredentialsUserSettingsSiteLanguageEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showIllustBackground: VerifyCredentialsUserSettingsShowIllustBackgroundEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showMovieBackground: VerifyCredentialsUserSettingsShowMovieBackgroundEnum; +} +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsScreenThemeEnum: { + readonly Default: "default"; +}; +export type VerifyCredentialsUserSettingsScreenThemeEnum = typeof VerifyCredentialsUserSettingsScreenThemeEnum[keyof typeof VerifyCredentialsUserSettingsScreenThemeEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostHandleEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostHandleEnum = typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsProHideAdsEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsProHideAdsEnum = typeof VerifyCredentialsUserSettingsProHideAdsEnum[keyof typeof VerifyCredentialsUserSettingsProHideAdsEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsSiteLanguageEnum: { + readonly Ko: "ko"; +}; +export type VerifyCredentialsUserSettingsSiteLanguageEnum = typeof VerifyCredentialsUserSettingsSiteLanguageEnum[keyof typeof VerifyCredentialsUserSettingsSiteLanguageEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsShowIllustBackgroundEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsShowIllustBackgroundEnum = typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserSettingsShowMovieBackgroundEnum: { + readonly True: "true"; +}; +export type VerifyCredentialsUserSettingsShowMovieBackgroundEnum = typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum]; +/** + * + * @export + * @interface VerifyCredentialsUserWithSettings + */ +export interface VerifyCredentialsUserWithSettings { + /** + * 설정입니다. + * @type {VerifyCredentialsUserSettings} + * @memberof VerifyCredentialsUserWithSettings + */ + settings: VerifyCredentialsUserSettings; + /** + * 사용 중인 이메일 주소입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + email: string; + /** + * 사용자명입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + _class: VerifyCredentialsUserWithSettingsClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + classDecoration: VerifyCredentialsUserWithSettingsClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof VerifyCredentialsUserWithSettings + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rank: number; +} +/** + * @export + */ +export declare const VerifyCredentialsUserWithSettingsClassEnum: { + readonly NUMBER_0: 0; + readonly NUMBER_1: 1; + readonly NUMBER_2: 2; + readonly NUMBER_3: 3; + readonly NUMBER_4: 4; + readonly NUMBER_5: 5; + readonly NUMBER_6: 6; + readonly NUMBER_7: 7; + readonly NUMBER_8: 8; + readonly NUMBER_9: 9; + readonly NUMBER_10: 10; +}; +export type VerifyCredentialsUserWithSettingsClassEnum = typeof VerifyCredentialsUserWithSettingsClassEnum[keyof typeof VerifyCredentialsUserWithSettingsClassEnum]; +/** + * @export + */ +export declare const VerifyCredentialsUserWithSettingsClassDecorationEnum: { + readonly None: "none"; + readonly Silver: "silver"; + readonly Gold: "gold"; +}; +export type VerifyCredentialsUserWithSettingsClassDecorationEnum = typeof VerifyCredentialsUserWithSettingsClassDecorationEnum[keyof typeof VerifyCredentialsUserWithSettingsClassDecorationEnum]; diff --git a/dist/esm/models/index.js b/dist/esm/models/index.js new file mode 100644 index 0000000..297ec62 --- /dev/null +++ b/dist/esm/models/index.js @@ -0,0 +1,495 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +export const ArenaTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13 +}; +/** + * 배경 획득 유형 분류입니다. + * @export + */ +export const BackgroundCategory = { + Event: 'event', + Arena: 'arena', + Achievement: 'achievement', + Season: 'season', + Contest: 'contest' +}; +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +export const BadgeCategory = { + Achievement: 'achievement', + Season: 'season', + Event: 'event', + Contest: 'contest' +}; +/** + * 뱃지의 등급입니다. + * @export + */ +export const BadgeTier = { + Bronze: 'bronze', + Silver: 'silver', + Gold: 'gold', + Master: 'master' +}; +/** + * @export + */ +export const CoinShopProductPriceUnitEnum = { + Coins: 'coins', + Stardusts: 'stardusts' +}; +/** + * @export + */ +export const GetClassesProblemCountClassEntryClassEnum = { + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +export const Language = { + Ko: 'ko', + En: 'en', + Ja: 'ja' +}; +/** + * 단체 유형입니다. + * @export + */ +export const OrganizationType = { + University: 'university', + Company: 'company', + Community: 'community', + HighSchool: 'high_school', + MiddleSchool: 'middle_school', + ElementarySchool: 'elementary_school', + Undefined: 'undefined' +}; +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +export const ProblemLevel = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30 +}; +/** + * @export + */ +export const RivalUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +export const RivalUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * 검색 결과 정렬 방향 + * @export + */ +export const SearchProblemQueryDirection = { + Asc: 'asc', + Desc: 'desc' +}; +/** + * 검색 결과 정렬 기준 + * @export + */ +export const SearchProblemQuerySort = { + Id: 'id', + Level: 'level', + Title: 'title', + Solved: 'solved', + AverageTry: 'average_try', + Random: 'random' +}; +/** + * @export + */ +export const SocialUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +export const SocialUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +export const SolveTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30, + NUMBER_31: 31 +}; +/** + * @export + */ +export const UserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +export const UserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsScreenThemeEnum = { + Default: 'default' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostHandleEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsProHideAdsEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsSiteLanguageEnum = { + Ko: 'ko' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowIllustBackgroundEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowMovieBackgroundEnum = { + True: 'true' +}; +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +}; +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +}; diff --git a/dist/runtime.d.ts b/dist/esm/runtime.d.ts similarity index 61% rename from dist/runtime.d.ts rename to dist/esm/runtime.d.ts index f927b4c..afaf8f9 100644 --- a/dist/runtime.d.ts +++ b/dist/esm/runtime.d.ts @@ -1,26 +1,66 @@ /** * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ export declare const BASE_PATH: string; +export interface ConfigurationParameters { + basePath?: string; + fetchApi?: FetchAPI; + middleware?: Middleware[]; + queryParamsStringify?: (params: HTTPQuery) => string; + username?: string; + password?: string; + apiKey?: string | Promise | ((name: string) => string | Promise); + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); + headers?: HTTPHeaders; + credentials?: RequestCredentials; +} +export declare class Configuration { + private configuration; + constructor(configuration?: ConfigurationParameters); + set config(configuration: Configuration); + get basePath(): string; + get fetchApi(): FetchAPI | undefined; + get middleware(): Middleware[]; + get queryParamsStringify(): (params: HTTPQuery) => string; + get username(): string | undefined; + get password(): string | undefined; + get apiKey(): ((name: string) => string | Promise) | undefined; + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined; + get headers(): HTTPHeaders | undefined; + get credentials(): RequestCredentials | undefined; +} +export declare const DefaultConfig: Configuration; /** * This is the base class for all generated API classes. */ export declare class BaseAPI { protected configuration: Configuration; + private static readonly jsonRegex; private middleware; constructor(configuration?: Configuration); withMiddleware(this: T, ...middlewares: Middleware[]): T; withPreMiddleware(this: T, ...preMiddlewares: Array): T; withPostMiddleware(this: T, ...postMiddlewares: Array): T; - protected request(context: RequestOpts, initOverrides?: RequestInit): Promise; + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean; + protected request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise; private createFetchParams; private fetchApi; /** @@ -29,6 +69,16 @@ export declare class BaseAPI { */ private clone; } +export declare class ResponseError extends Error { + response: Response; + name: "ResponseError"; + constructor(response: Response, msg?: string); +} +export declare class FetchError extends Error { + cause: Error; + name: "FetchError"; + constructor(cause: Error, msg?: string); +} export declare class RequiredError extends Error { field: string; name: "RequiredError"; @@ -41,42 +91,26 @@ export declare const COLLECTION_FORMATS: { pipes: string; }; export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; -export interface ConfigurationParameters { - basePath?: string; - fetchApi?: FetchAPI; - middleware?: Middleware[]; - queryParamsStringify?: (params: HTTPQuery) => string; - username?: string; - password?: string; - apiKey?: string | ((name: string) => string); - accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); - headers?: HTTPHeaders; - credentials?: RequestCredentials; -} -export declare class Configuration { - private configuration; - constructor(configuration?: ConfigurationParameters); - get basePath(): string; - get fetchApi(): FetchAPI | undefined; - get middleware(): Middleware[]; - get queryParamsStringify(): (params: HTTPQuery) => string; - get username(): string | undefined; - get password(): string | undefined; - get apiKey(): ((name: string) => string) | undefined; - get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined; - get headers(): HTTPHeaders | undefined; - get credentials(): RequestCredentials | undefined; -} export type Json = any; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; export type HTTPHeaders = { [key: string]: string; }; export type HTTPQuery = { - [key: string]: string | number | null | boolean | Array | HTTPQuery; + [key: string]: string | number | null | boolean | Array | Set | HTTPQuery; }; export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { + headers?: HTTPHeaders; + method: HTTPMethod; + credentials?: RequestCredentials; + body?: HTTPBody; +}; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; +export type InitOverrideFunction = (requestContext: { + init: HTTPRequestInit; + context: RequestOpts; +}) => Promise; export interface FetchParams { url: string; init: RequestInit; @@ -88,9 +122,7 @@ export interface RequestOpts { query?: HTTPQuery; body?: HTTPBody; } -export declare function exists(json: any, key: string): boolean; export declare function querystring(params: HTTPQuery, prefix?: string): string; -export declare function mapValues(data: any, fn: (item: any) => any): {}; export declare function canConsumeForm(consumes: Consume[]): boolean; export interface Consume { contentType: string; @@ -106,9 +138,17 @@ export interface ResponseContext { init: RequestInit; response: Response; } +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} export interface Middleware { pre?(context: RequestContext): Promise; post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; } export interface ApiResponse { raw: Response; diff --git a/dist/esm/runtime.js b/dist/esm/runtime.js new file mode 100644 index 0000000..d298f7f --- /dev/null +++ b/dist/esm/runtime.js @@ -0,0 +1,302 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +export const BASE_PATH = "https://solved.ac/api/v3".replace(/\/+$/, ""); +export class Configuration { + constructor(configuration = {}) { + this.configuration = configuration; + } + set config(configuration) { + this.configuration = configuration; + } + get basePath() { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + get fetchApi() { + return this.configuration.fetchApi; + } + get middleware() { + return this.configuration.middleware || []; + } + get queryParamsStringify() { + return this.configuration.queryParamsStringify || querystring; + } + get username() { + return this.configuration.username; + } + get password() { + return this.configuration.password; + } + get apiKey() { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + get accessToken() { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + get headers() { + return this.configuration.headers; + } + get credentials() { + return this.configuration.credentials; + } +} +export const DefaultConfig = new Configuration(); +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + constructor(configuration = DefaultConfig) { + this.configuration = configuration; + this.fetchApi = async (url, init) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre(Object.assign({ fetch: this.fetchApi }, fetchParams)) || fetchParams; + } + } + let response = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } + catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } + else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + }) || response; + } + } + return response; + }; + this.middleware = configuration.middleware; + } + withMiddleware(...middlewares) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + withPreMiddleware(...preMiddlewares) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + withPostMiddleware(...postMiddlewares) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + isJsonMime(mime) { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + async request(context, initOverrides) { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && (response.status >= 200 && response.status < 300)) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + async createFetchParams(context, initOverrides) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + const headers = Object.assign({}, this.configuration.headers, context.headers); + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + const initOverrideFn = typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + const overriddenInit = Object.assign(Object.assign({}, initParams), (await initOverrideFn({ + init: initParams, + context, + }))); + let body; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } + else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } + else { + body = overriddenInit.body; + } + const init = Object.assign(Object.assign({}, overriddenInit), { body }); + return { url, init }; + } + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + clone() { + const constructor = this.constructor; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +} +BaseAPI.jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); +; +function isBlob(value) { + return typeof Blob !== 'undefined' && value instanceof Blob; +} +function isFormData(value) { + return typeof FormData !== "undefined" && value instanceof FormData; +} +export class ResponseError extends Error { + constructor(response, msg) { + super(msg); + this.response = response; + this.name = "ResponseError"; + } +} +export class FetchError extends Error { + constructor(cause, msg) { + super(msg); + this.cause = cause; + this.name = "FetchError"; + } +} +export class RequiredError extends Error { + constructor(field, msg) { + super(msg); + this.field = field; + this.name = "RequiredError"; + } +} +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; +export function querystring(params, prefix = '') { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} +function querystringSingleKey(key, value, keyPrefix = '') { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} +export function canConsumeForm(consumes) { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} +export class JSONApiResponse { + constructor(raw, transformer = (jsonValue) => jsonValue) { + this.raw = raw; + this.transformer = transformer; + } + async value() { + return this.transformer(await this.raw.json()); + } +} +export class VoidApiResponse { + constructor(raw) { + this.raw = raw; + } + async value() { + return undefined; + } +} +export class BlobApiResponse { + constructor(raw) { + this.raw = raw; + } + async value() { + return await this.raw.blob(); + } + ; +} +export class TextApiResponse { + constructor(raw) { + this.raw = raw; + } + async value() { + return await this.raw.text(); + } + ; +} diff --git a/dist/mod.d.ts b/dist/mod.d.ts deleted file mode 100644 index 4bd0551..0000000 --- a/dist/mod.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './runtime.js'; -export * from './apis/index.js'; -export * from './models/index.js'; diff --git a/dist/mod.js b/dist/mod.js deleted file mode 100644 index 89656b9..0000000 --- a/dist/mod.js +++ /dev/null @@ -1,5 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export * from './runtime.js'; -export * from './apis/index.js'; -export * from './models/index.js'; diff --git a/dist/models/index.d.ts b/dist/models/index.d.ts deleted file mode 100644 index 4ca11de..0000000 --- a/dist/models/index.d.ts +++ /dev/null @@ -1,1972 +0,0 @@ -/** - * 사용자가 사용할 수 있는 배경입니다. - * @export - * @interface Background - */ -export interface Background { - /** - * 배경의 ID입니다. - * @type {string} - * @memberof Background - */ - backgroundId: string; - /** - * 배경 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundImageUrl: string; - /** - * 배경 사진이 없을 때 대체로 사용할 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - fallbackBackgroundImageUrl?: string | null; - /** - * 배경 비디오로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundVideoUrl?: string | null; - /** - * 해당 배경을 획득한 사용자의 수입니다. - * @type {number} - * @memberof Background - */ - unlockedUserCount: number; - /** - * 배경의 이름입니다. - * @type {string} - * @memberof Background - */ - displayName: string; - /** - * 배경의 설명입니다. - * @type {string} - * @memberof Background - */ - displayDescription: string; - /** - * 해당 배경을 얻을 수 있는 조건입니다. - * @type {string} - * @memberof Background - */ - conditions: string; - /** - * 해당 배경을 얻을 수 있는 조건이 숨겨져 있는지 여부입니다. - * @type {boolean} - * @memberof Background - */ - hiddenConditions: boolean; - /** - * 해당 배경이 일러스트인지 여부입니다. - * @type {boolean} - * @memberof Background - */ - isIllust: boolean; - /** - * 해당 배경을 만든 사람들의 정보입니다. - * @type {Array} - * @memberof Background - */ - authors: Array; -} -/** - * - * @export - * @interface BackgroundAuthors - */ -export interface BackgroundAuthors { - /** - * 작가의 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorId?: string; - /** - * 작가의 역할입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - role?: string; - /** - * 작가의 홈페이지로 가는 하이퍼링크입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorUrl?: string | null; - /** - * 작가의 사용자 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - handle?: string; - /** - * 작가의 트위터 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - twitter?: string | null; - /** - * 작가의 인스타그램 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - instagram?: string | null; - /** - * 작가의 이름입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - displayName?: string; -} -/** - * 사용자가 사용할 수 있는 뱃지입니다. - * @export - * @interface Badge - */ -export interface Badge { - /** - * 뱃지의 ID입니다. - * @type {string} - * @memberof Badge - */ - badgeId: string; - /** - * 뱃지 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Badge - */ - badgeImageUrl: string; - /** - * 뱃지의 이름입니다. - * @type {string} - * @memberof Badge - */ - displayName: string; - /** - * 뱃지의 설명입니다. - * @type {string} - * @memberof Badge - */ - displayDescription: string; - /** - * - * @type {BadgeTier} - * @memberof Badge - */ - badgeTier?: BadgeTier; - /** - * - * @type {BadgeCategory} - * @memberof Badge - */ - badgeCategory?: BadgeCategory; -} -/** - * 뱃지 종류입니다. - * @export - * @enum {string} - */ -export declare enum BadgeCategory { - Achievement = "achievement", - Season = "season", - Event = "event", - Contest = "contest" -} -/** - * 뱃지 티어입니다. - * @export - * @enum {string} - */ -export declare enum BadgeTier { - Bronze = "bronze", - Silver = "silver", - Gold = "gold", - Master = "master" -} -/** - * 클래스 치장입니다. - * @export - * @enum {string} - */ -export declare enum ClassDecoration { - None = "none", - Silver = "silver", - Gold = "gold" -} -/** - * 코인샵에서 판매하고 있는 상품입니다. - * @export - * @interface CoinshopProduct - */ -export interface CoinshopProduct { - /** - * 상품의 ID입니다. - * @type {number} - * @memberof CoinshopProduct - */ - skuId: number; - /** - * - * @type {Item} - * @memberof CoinshopProduct - */ - item?: Item; - /** - * 1회 구매에 획득하는 개수입니다. - * @type {number} - * @memberof CoinshopProduct - */ - units?: number; - /** - * 가격입니다. 별조각의 경우 나누기 100을 해야 표시 가격이 됩니다. - * @type {number} - * @memberof CoinshopProduct - */ - price?: number; - /** - * 가격의 단위입니다. - * @type {string} - * @memberof CoinshopProduct - */ - priceUnit?: CoinshopProductPriceUnitEnum; - /** - * 아이템 사용 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemUseTimeLimited?: boolean; - /** - * 아이템 구매 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemSellTimeLimited?: boolean; -} -/** -* @export -* @enum {string} -*/ -export declare enum CoinshopProductPriceUnitEnum { - Coins = "coins", - Stardusts = "stardusts" -} -/** - * 사용자 정보입니다. - * @export - * @interface FullUser - */ -export interface FullUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof FullUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof FullUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof FullUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof FullUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof FullUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof FullUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof FullUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof FullUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof FullUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof FullUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof FullUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof FullUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof FullUser - */ - rank: number; - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isReverseRival?: boolean; -} -/** - * - * @export - * @interface FullUserAllOf - */ -export interface FullUserAllOf { - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isReverseRival?: boolean; -} -/** - * 난이도 아이콘 표시 정책입니다. - * @export - * @enum {string} - */ -export declare enum IconScheme { - Default = "default", - HideWarn = "hide-warn", - Hide = "hide" -} -/** - * - * @export - * @interface InlineObject - */ -export interface InlineObject { - /** - * 리딤 코드입니다. - * @type {string} - * @memberof InlineObject - */ - code?: string; -} -/** - * - * @export - * @interface InlineObject1 - */ -export interface InlineObject1 { - /** - * 업데이트할 설정의 이름입니다. - * @type {string} - * @memberof InlineObject1 - */ - key?: string; - /** - * 업데이트할 설정의 새로운 값입니다. - * @type {object} - * @memberof InlineObject1 - */ - value?: object; -} -/** - * - * @export - * @interface InlineResponse200 - */ -export interface InlineResponse200 { - /** - * 계정의 사용자 정보입니다. - * @type {User & object} - * @memberof InlineResponse200 - */ - user?: User & object; - /** - * 해당 계정의 사용자가 푼 문제 정보입니다. - * @type {Array} - * @memberof InlineResponse200 - */ - solved?: Array; -} -/** - * - * @export - * @interface InlineResponse2001 - */ -export interface InlineResponse2001 { - /** - * 코인 → 별조각 환율입니다. 수수료 1%는 제외되어 있습니다. - * @type {number} - * @memberof InlineResponse2001 - */ - rate?: number; -} -/** - * - * @export - * @interface InlineResponse20010 - */ -export interface InlineResponse20010 { - /** - * 순위가 배정된 조직의 수입니다. - * @type {number} - * @memberof InlineResponse20010 - */ - count?: number; - /** - * 레이팅 순위로 정렬된 조직 목록입니다. - * @type {Array} - * @memberof InlineResponse20010 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20011 - */ -export interface InlineResponse20011 { - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20011 - */ - count?: number; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20011 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20012 - */ -export interface InlineResponse20012 { - /** - * - * @type {Array} - * @memberof InlineResponse20012 - */ - autocomplete?: Array; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - problems?: Array; - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - problemCount?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - users?: Array; - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - userCount?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - tags?: Array; - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - tagCount?: number; -} -/** - * - * @export - * @interface InlineResponse20012Autocomplete - */ -export interface InlineResponse20012Autocomplete { - /** - * 자동완성 제목입니다. 해당 값으로 자동완성됩니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - caption?: string; - /** - * 자동완성 요소에 대한 설명입니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - description?: string; -} -/** - * - * @export - * @interface InlineResponse20013 - */ -export interface InlineResponse20013 { - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20013 - */ - count?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20013 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20014 - */ -export interface InlineResponse20014 { - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20014 - */ - count?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20014 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20015 - */ -export interface InlineResponse20015 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse20015 - */ - level?: number; - /** - * solved.ac에 등록된 해당 레벨의 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - total?: number; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - solved?: number; - /** - * 사용자가 부분 성공한 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - partial?: number; - /** - * 사용자가 시도해본 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - tried?: number; - /** - * 사용자가 해당 레벨에서 획득한 경험치의 합입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - exp?: number; -} -/** - * - * @export - * @interface InlineResponse2002 - */ -export interface InlineResponse2002 { - /** - * - * @type {number} - * @memberof InlineResponse2002 - */ - _class?: number; - /** - * 이 CLASS에 속한 에센셜이 아닌 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - total?: number; - /** - * 이 CLASS에 속한 에센셜 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - essentials?: number; - /** - * 이 CLASS를 취득하기 위한 최소 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - criteria?: number; -} -/** - * - * @export - * @interface InlineResponse2003 - */ -export interface InlineResponse2003 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse2003 - */ - level?: number; - /** - * 이 문제 수준인 문제 수입니다. - * @type {number} - * @memberof InlineResponse2003 - */ - count?: number; -} -/** - * - * @export - * @interface InlineResponse2004 - */ -export interface InlineResponse2004 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2004 - */ - count?: number; - /** - * 티어 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2004 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2005 - */ -export interface InlineResponse2005 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2005 - */ - count?: number; - /** - * CLASS 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2005 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2006 - */ -export interface InlineResponse2006 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2006 - */ - count?: number; - /** - * 최장 스트릭 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2006 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2007 - */ -export interface InlineResponse2007 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2007 - */ - count?: number; - /** - * 기여 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2007 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2008 - */ -export interface InlineResponse2008 { - /** - * 순위가 배정된 라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2008 - */ - count?: number; - /** - * 티어 순위로 정렬된 라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2008 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2009 - */ -export interface InlineResponse2009 { - /** - * 순위가 배정된 역라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2009 - */ - count?: number; - /** - * 티어 순위로 정렬된 역라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2009 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse200Solved - */ -export interface InlineResponse200Solved { - /** - * 문제 ID입니다. - * @type {number} - * @memberof InlineResponse200Solved - */ - id?: number; - /** - * 현재 문제 풀이 상태입니다. 알려진 값은 다음이 있습니다. - * `"solved"`, `"tried"` - * @type {string} - * @memberof InlineResponse200Solved - */ - status?: string; -} -/** - * 사용자가 사용할 수 있는 아이템입니다. - * @export - * @interface Item - */ -export interface Item { - /** - * 아이템의 ID입니다. - * @type {string} - * @memberof Item - */ - itemId: string; - /** - * 아이템 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Item - */ - itemImageUrl: string; - /** - * 최대 소유 가능 개수입니다. 호출자에 따라 달라질 수 있습니다. - * @type {number} - * @memberof Item - */ - inventoryMaxUnits: number; - /** - * 아이템 사용 가능 여부입니다. - * @type {boolean} - * @memberof Item - */ - usable: boolean; - /** - * 아이템의 이름입니다. - * @type {string} - * @memberof Item - */ - displayName: string; - /** - * 아이템의 설명입니다. - * @type {string} - * @memberof Item - */ - displayDescription: string; -} -/** - * 언어입니다. - * @export - * @enum {string} - */ -export declare enum Language { - Ko = "ko", - En = "en" -} -/** - * - * @export - * @interface Organization - */ -export interface Organization { - /** - * 조직의 ID입니다. - * @type {number} - * @memberof Organization - */ - organizationId?: number; - /** - * 조직의 이름입니다. - * @type {string} - * @memberof Organization - */ - name?: string; - /** - * 조직의 구분입니다. - * @type {string} - * @memberof Organization - */ - type?: OrganizationTypeEnum; - /** - * 조직의 레이팅입니다. - * @type {number} - * @memberof Organization - */ - rating?: number; - /** - * 조직에 포함된 사용자의 수입니다. - * @type {number} - * @memberof Organization - */ - userCount?: number; - /** - * 조직의 총 난이도 기여 수입니다. - * @type {number} - * @memberof Organization - */ - voteCount?: number; - /** - * 조직의 총 푼 문제 수입니다. - * @type {number} - * @memberof Organization - */ - solvedCount?: number; - /** - * 조직의 색깔입니다. - * @type {string} - * @memberof Organization - */ - color?: string; -} -/** -* @export -* @enum {string} -*/ -export declare enum OrganizationTypeEnum { - Community = "community", - University = "university", - Company = "company", - HighSchool = "high_school" -} -/** - * 문제 정보입니다. - * @export - * @interface Problem - */ -export interface Problem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof Problem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof Problem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof Problem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof Problem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof Problem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof Problem - */ - averageTries?: number; -} -/** - * - * @export - * @interface ProblemTag - */ -export interface ProblemTag { - /** - * 태그의 ID입니다. - * @type {string} - * @memberof ProblemTag - */ - key?: string; - /** - * - * @type {boolean} - * @memberof ProblemTag - */ - isMeta?: boolean; - /** - * 백준에서 사용되는 이 태그의 ID입니다. - * @type {number} - * @memberof ProblemTag - */ - bojTagId?: number; - /** - * 이 태그를 포함하는 문제의 수입니다. - * @type {number} - * @memberof ProblemTag - */ - problemCount?: number; - /** - * 언어별 태그의 이름 목록입니다. - * @type {Array} - * @memberof ProblemTag - */ - displayNames?: Array; - /** - * 태그의 별칭입니다. - * @type {Array} - * @memberof ProblemTag - */ - aliases?: Array; -} -/** - * - * @export - * @interface ProblemTagAliases - */ -export interface ProblemTagAliases { - /** - * 별칭입니다. - * @type {string} - * @memberof ProblemTagAliases - */ - alias?: string; -} -/** - * - * @export - * @interface ProblemTagDisplayNames - */ -export interface ProblemTagDisplayNames { - /** - * - * @type {Language} - * @memberof ProblemTagDisplayNames - */ - language?: Language; - /** - * 태그의 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - name?: string; - /** - * 태그의 짧은 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - _short?: string; -} -/** - * 사용자 정보입니다. - * @export - * @interface RankedUser - */ -export interface RankedUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof RankedUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof RankedUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof RankedUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof RankedUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof RankedUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof RankedUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof RankedUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof RankedUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof RankedUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof RankedUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof RankedUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof RankedUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUser - */ - rank: number; -} -/** - * - * @export - * @interface RankedUserAllOf - */ -export interface RankedUserAllOf { - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUserAllOf - */ - rank?: number; -} -/** - * 사용자의 solved.ac 설정 정보입니다. - * @export - * @interface Settings - */ -export interface Settings { - /** - * 사이트 디자인 테마입니다. - * @type {string} - * @memberof Settings - */ - screenTheme?: SettingsScreenThemeEnum; - /** - * - * @type {Language} - * @memberof Settings - */ - tagDisplayLanguage?: Language; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeSolved?: IconScheme; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeNotSolved?: IconScheme; - /** - * 문제 목록의 기본 정렬 순서입니다. - * @type {string} - * @memberof Settings - */ - problemSortBy?: SettingsProblemSortByEnum; - /** - * 트윗에 핸들을 포함하는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostHandle?: boolean; - /** - * CLASS가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnClassIncrease?: boolean; - /** - * 문제를 처음 해결했을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnProblemSolve?: boolean; - /** - * AC 레이팅이 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnRatingIncrease?: boolean; - /** - * 티어가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnTierIncrease?: boolean; -} -/** -* @export -* @enum {string} -*/ -export declare enum SettingsScreenThemeEnum { - Default = "default", - Light = "light", - Dark = "dark", - Black = "black" -} /** -* @export -* @enum {string} -*/ -export declare enum SettingsProblemSortByEnum { - Id = "id", - Level = "level", - Title = "title", - Solved = "solved", - AverageTry = "average_try", - Random = "random" -} -/** - * - * @export - * @interface SolvedAcStatistics - */ -export interface SolvedAcStatistics { - /** - * 여태까지 색인된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemCount?: number; - /** - * 여태까지 난이도가 기여된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemVotedCount?: number; - /** - * 여태까지 등록한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - userCount?: number; - /** - * 여태까지 난이도에 기여한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributorCount?: number; - /** - * 여태까지 이루어진 난이도 기여의 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributionCount?: number; -} -/** - * 문제 정보입니다. - * @export - * @interface TaggedProblem - */ -export interface TaggedProblem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof TaggedProblem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof TaggedProblem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof TaggedProblem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof TaggedProblem - */ - averageTries?: number; - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblem - */ - tags?: Array; -} -/** - * - * @export - * @interface TaggedProblemAllOf - */ -export interface TaggedProblemAllOf { - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblemAllOf - */ - tags?: Array; -} -/** - * 사용자 정보입니다. - * @export - * @interface User - */ -export interface User { - /** - * 사용자명입니다. - * @type {string} - * @memberof User - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof User - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof User - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof User - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof User - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof User - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof User - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof User - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof User - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof User - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof User - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof User - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof User - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof User - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof User - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof User - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof User - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof User - */ - rank: number; -} diff --git a/dist/models/index.js b/dist/models/index.js deleted file mode 100644 index 5ccf876..0000000 --- a/dist/models/index.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * 뱃지 종류입니다. - * @export - * @enum {string} - */ -export var BadgeCategory; -(function (BadgeCategory) { - BadgeCategory["Achievement"] = "achievement"; - BadgeCategory["Season"] = "season"; - BadgeCategory["Event"] = "event"; - BadgeCategory["Contest"] = "contest"; -})(BadgeCategory || (BadgeCategory = {})); -/** - * 뱃지 티어입니다. - * @export - * @enum {string} - */ -export var BadgeTier; -(function (BadgeTier) { - BadgeTier["Bronze"] = "bronze"; - BadgeTier["Silver"] = "silver"; - BadgeTier["Gold"] = "gold"; - BadgeTier["Master"] = "master"; -})(BadgeTier || (BadgeTier = {})); -/** - * 클래스 치장입니다. - * @export - * @enum {string} - */ -export var ClassDecoration; -(function (ClassDecoration) { - ClassDecoration["None"] = "none"; - ClassDecoration["Silver"] = "silver"; - ClassDecoration["Gold"] = "gold"; -})(ClassDecoration || (ClassDecoration = {})); -/** -* @export -* @enum {string} -*/ -export var CoinshopProductPriceUnitEnum; -(function (CoinshopProductPriceUnitEnum) { - CoinshopProductPriceUnitEnum["Coins"] = "coins"; - CoinshopProductPriceUnitEnum["Stardusts"] = "stardusts"; -})(CoinshopProductPriceUnitEnum || (CoinshopProductPriceUnitEnum = {})); -/** - * 난이도 아이콘 표시 정책입니다. - * @export - * @enum {string} - */ -export var IconScheme; -(function (IconScheme) { - IconScheme["Default"] = "default"; - IconScheme["HideWarn"] = "hide-warn"; - IconScheme["Hide"] = "hide"; -})(IconScheme || (IconScheme = {})); -/** - * 언어입니다. - * @export - * @enum {string} - */ -export var Language; -(function (Language) { - Language["Ko"] = "ko"; - Language["En"] = "en"; -})(Language || (Language = {})); -/** -* @export -* @enum {string} -*/ -export var OrganizationTypeEnum; -(function (OrganizationTypeEnum) { - OrganizationTypeEnum["Community"] = "community"; - OrganizationTypeEnum["University"] = "university"; - OrganizationTypeEnum["Company"] = "company"; - OrganizationTypeEnum["HighSchool"] = "high_school"; -})(OrganizationTypeEnum || (OrganizationTypeEnum = {})); -/** -* @export -* @enum {string} -*/ -export var SettingsScreenThemeEnum; -(function (SettingsScreenThemeEnum) { - SettingsScreenThemeEnum["Default"] = "default"; - SettingsScreenThemeEnum["Light"] = "light"; - SettingsScreenThemeEnum["Dark"] = "dark"; - SettingsScreenThemeEnum["Black"] = "black"; -})(SettingsScreenThemeEnum || (SettingsScreenThemeEnum = {})); /** -* @export -* @enum {string} -*/ -export var SettingsProblemSortByEnum; -(function (SettingsProblemSortByEnum) { - SettingsProblemSortByEnum["Id"] = "id"; - SettingsProblemSortByEnum["Level"] = "level"; - SettingsProblemSortByEnum["Title"] = "title"; - SettingsProblemSortByEnum["Solved"] = "solved"; - SettingsProblemSortByEnum["AverageTry"] = "average_try"; - SettingsProblemSortByEnum["Random"] = "random"; -})(SettingsProblemSortByEnum || (SettingsProblemSortByEnum = {})); diff --git a/dist/models/mod.d.ts b/dist/models/mod.d.ts deleted file mode 100644 index f60b479..0000000 --- a/dist/models/mod.d.ts +++ /dev/null @@ -1,1966 +0,0 @@ -/** - * 사용자가 사용할 수 있는 배경입니다. - * @export - * @interface Background - */ -export interface Background { - /** - * 배경의 ID입니다. - * @type {string} - * @memberof Background - */ - backgroundId: string; - /** - * 배경 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundImageUrl: string; - /** - * 배경 사진이 없을 때 대체로 사용할 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - fallbackBackgroundImageUrl?: string | null; - /** - * 배경 비디오로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundVideoUrl?: string | null; - /** - * 해당 배경을 획득한 사용자의 수입니다. - * @type {number} - * @memberof Background - */ - unlockedUserCount: number; - /** - * 배경의 이름입니다. - * @type {string} - * @memberof Background - */ - displayName: string; - /** - * 배경의 설명입니다. - * @type {string} - * @memberof Background - */ - displayDescription: string; - /** - * 해당 배경을 얻을 수 있는 조건입니다. - * @type {string} - * @memberof Background - */ - conditions: string; - /** - * 해당 배경을 얻을 수 있는 조건이 숨겨져 있는지 여부입니다. - * @type {boolean} - * @memberof Background - */ - hiddenConditions: boolean; - /** - * 해당 배경이 일러스트인지 여부입니다. - * @type {boolean} - * @memberof Background - */ - isIllust: boolean; - /** - * 해당 배경을 만든 사람들의 정보입니다. - * @type {Array} - * @memberof Background - */ - authors: Array; -} -/** - * - * @export - * @interface BackgroundAuthors - */ -export interface BackgroundAuthors { - /** - * 작가의 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorId?: string; - /** - * 작가의 역할입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - role?: string; - /** - * 작가의 홈페이지로 가는 하이퍼링크입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorUrl?: string | null; - /** - * 작가의 사용자 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - handle?: string; - /** - * 작가의 트위터 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - twitter?: string | null; - /** - * 작가의 인스타그램 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - instagram?: string | null; - /** - * 작가의 이름입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - displayName?: string; -} -/** - * 사용자가 사용할 수 있는 뱃지입니다. - * @export - * @interface Badge - */ -export interface Badge { - /** - * 뱃지의 ID입니다. - * @type {string} - * @memberof Badge - */ - badgeId: string; - /** - * 뱃지 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Badge - */ - badgeImageUrl: string; - /** - * 뱃지의 이름입니다. - * @type {string} - * @memberof Badge - */ - displayName: string; - /** - * 뱃지의 설명입니다. - * @type {string} - * @memberof Badge - */ - displayDescription: string; - /** - * - * @type {BadgeTier} - * @memberof Badge - */ - badgeTier?: BadgeTier; - /** - * - * @type {BadgeCategory} - * @memberof Badge - */ - badgeCategory?: BadgeCategory; -} -/** - * 뱃지 종류입니다. - * @export - * @enum {string} - */ -export declare enum BadgeCategory { - Achievement = "achievement", - Season = "season", - Event = "event", - Contest = "contest" -} -/** - * 뱃지 티어입니다. - * @export - * @enum {string} - */ -export declare enum BadgeTier { - Bronze = "bronze", - Silver = "silver", - Gold = "gold", - Master = "master" -} -/** - * 클래스 치장입니다. - * @export - * @enum {string} - */ -export declare enum ClassDecoration { - None = "none", - Silver = "silver", - Gold = "gold" -} -/** - * 코인샵에서 판매하고 있는 상품입니다. - * @export - * @interface CoinshopProduct - */ -export interface CoinshopProduct { - /** - * 상품의 ID입니다. - * @type {number} - * @memberof CoinshopProduct - */ - skuId: number; - /** - * - * @type {Item} - * @memberof CoinshopProduct - */ - item?: Item; - /** - * 1회 구매에 획득하는 개수입니다. - * @type {number} - * @memberof CoinshopProduct - */ - units?: number; - /** - * 가격입니다. 별조각의 경우 나누기 100을 해야 표시 가격이 됩니다. - * @type {number} - * @memberof CoinshopProduct - */ - price?: number; - /** - * 가격의 단위입니다. - * @type {string} - * @memberof CoinshopProduct - */ - priceUnit?: CoinshopProductPriceUnitEnum; - /** - * 아이템 사용 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemUseTimeLimited?: boolean; - /** - * 아이템 구매 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemSellTimeLimited?: boolean; -} -/** -* @export -* @enum {string} -*/ -export declare enum CoinshopProductPriceUnitEnum { - Coins = "coins", - Stardusts = "stardusts" -} -/** - * 사용자 정보입니다. - * @export - * @interface FullUser - */ -export interface FullUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof FullUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof FullUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof FullUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof FullUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof FullUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof FullUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof FullUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof FullUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof FullUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof FullUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof FullUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof FullUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof FullUser - */ - rank: number; - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isReverseRival?: boolean; -} -/** - * - * @export - * @interface FullUserAllOf - */ -export interface FullUserAllOf { - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isReverseRival?: boolean; -} -/** - * 난이도 아이콘 표시 정책입니다. - * @export - * @enum {string} - */ -export declare enum IconScheme { - Default = "default", - HideWarn = "hide-warn", - Hide = "hide" -} -/** - * - * @export - * @interface InlineObject - */ -export interface InlineObject { - /** - * 리딤 코드입니다. - * @type {string} - * @memberof InlineObject - */ - code?: string; -} -/** - * - * @export - * @interface InlineObject1 - */ -export interface InlineObject1 { - /** - * 업데이트할 설정의 이름입니다. - * @type {string} - * @memberof InlineObject1 - */ - key?: string; - /** - * 업데이트할 설정의 새로운 값입니다. - * @type {object} - * @memberof InlineObject1 - */ - value?: object; -} -/** - * - * @export - * @interface InlineResponse200 - */ -export interface InlineResponse200 { - /** - * 계정의 사용자 정보입니다. - * @type {User & object} - * @memberof InlineResponse200 - */ - user?: User & object; - /** - * 해당 계정의 사용자가 푼 문제 정보입니다. - * @type {Array} - * @memberof InlineResponse200 - */ - solved?: Array; -} -/** - * - * @export - * @interface InlineResponse2001 - */ -export interface InlineResponse2001 { - /** - * 코인 → 별조각 환율입니다. 수수료 1%는 제외되어 있습니다. - * @type {number} - * @memberof InlineResponse2001 - */ - rate?: number; -} -/** - * - * @export - * @interface InlineResponse20010 - */ -export interface InlineResponse20010 { - /** - * 순위가 배정된 조직의 수입니다. - * @type {number} - * @memberof InlineResponse20010 - */ - count?: number; - /** - * 레이팅 순위로 정렬된 조직 목록입니다. - * @type {Array} - * @memberof InlineResponse20010 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20011 - */ -export interface InlineResponse20011 { - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20011 - */ - count?: number; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20011 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20012 - */ -export interface InlineResponse20012 { - /** - * - * @type {Array} - * @memberof InlineResponse20012 - */ - autocomplete?: Array; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - problems?: Array; - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - problemCount?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - users?: Array; - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - userCount?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - tags?: Array; - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - tagCount?: number; -} -/** - * - * @export - * @interface InlineResponse20012Autocomplete - */ -export interface InlineResponse20012Autocomplete { - /** - * 자동완성 제목입니다. 해당 값으로 자동완성됩니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - caption?: string; - /** - * 자동완성 요소에 대한 설명입니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - description?: string; -} -/** - * - * @export - * @interface InlineResponse20013 - */ -export interface InlineResponse20013 { - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20013 - */ - count?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20013 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20014 - */ -export interface InlineResponse20014 { - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20014 - */ - count?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20014 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20015 - */ -export interface InlineResponse20015 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse20015 - */ - level?: number; - /** - * solved.ac에 등록된 해당 레벨의 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - total?: number; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - solved?: number; - /** - * 사용자가 부분 성공한 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - partial?: number; - /** - * 사용자가 시도해본 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - tried?: number; - /** - * 사용자가 해당 레벨에서 획득한 경험치의 합입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - exp?: number; -} -/** - * - * @export - * @interface InlineResponse2002 - */ -export interface InlineResponse2002 { - /** - * - * @type {number} - * @memberof InlineResponse2002 - */ - _class?: number; - /** - * 이 CLASS에 속한 에센셜이 아닌 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - total?: number; - /** - * 이 CLASS에 속한 에센셜 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - essential?: number; -} -/** - * - * @export - * @interface InlineResponse2003 - */ -export interface InlineResponse2003 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse2003 - */ - level?: number; - /** - * 이 문제 수준인 문제 수입니다. - * @type {number} - * @memberof InlineResponse2003 - */ - count?: number; -} -/** - * - * @export - * @interface InlineResponse2004 - */ -export interface InlineResponse2004 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2004 - */ - count?: number; - /** - * 티어 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2004 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2005 - */ -export interface InlineResponse2005 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2005 - */ - count?: number; - /** - * CLASS 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2005 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2006 - */ -export interface InlineResponse2006 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2006 - */ - count?: number; - /** - * 최장 스트릭 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2006 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2007 - */ -export interface InlineResponse2007 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2007 - */ - count?: number; - /** - * 기여 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2007 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2008 - */ -export interface InlineResponse2008 { - /** - * 순위가 배정된 라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2008 - */ - count?: number; - /** - * 티어 순위로 정렬된 라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2008 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2009 - */ -export interface InlineResponse2009 { - /** - * 순위가 배정된 역라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2009 - */ - count?: number; - /** - * 티어 순위로 정렬된 역라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2009 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse200Solved - */ -export interface InlineResponse200Solved { - /** - * 문제 ID입니다. - * @type {number} - * @memberof InlineResponse200Solved - */ - id?: number; - /** - * 현재 문제 풀이 상태입니다. 알려진 값은 다음이 있습니다. - * `"solved"`, `"tried"` - * @type {string} - * @memberof InlineResponse200Solved - */ - status?: string; -} -/** - * 사용자가 사용할 수 있는 아이템입니다. - * @export - * @interface Item - */ -export interface Item { - /** - * 아이템의 ID입니다. - * @type {string} - * @memberof Item - */ - itemId: string; - /** - * 아이템 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Item - */ - itemImageUrl: string; - /** - * 최대 소유 가능 개수입니다. 호출자에 따라 달라질 수 있습니다. - * @type {number} - * @memberof Item - */ - inventoryMaxUnits: number; - /** - * 아이템 사용 가능 여부입니다. - * @type {boolean} - * @memberof Item - */ - usable: boolean; - /** - * 아이템의 이름입니다. - * @type {string} - * @memberof Item - */ - displayName: string; - /** - * 아이템의 설명입니다. - * @type {string} - * @memberof Item - */ - displayDescription: string; -} -/** - * 언어입니다. - * @export - * @enum {string} - */ -export declare enum Language { - Ko = "ko", - En = "en" -} -/** - * - * @export - * @interface Organization - */ -export interface Organization { - /** - * 조직의 ID입니다. - * @type {number} - * @memberof Organization - */ - organizationId?: number; - /** - * 조직의 이름입니다. - * @type {string} - * @memberof Organization - */ - name?: string; - /** - * 조직의 구분입니다. - * @type {string} - * @memberof Organization - */ - type?: OrganizationTypeEnum; - /** - * 조직의 레이팅입니다. - * @type {number} - * @memberof Organization - */ - rating?: number; - /** - * 조직에 포함된 사용자의 수입니다. - * @type {number} - * @memberof Organization - */ - userCount?: number; - /** - * 조직의 총 난이도 기여 수입니다. - * @type {number} - * @memberof Organization - */ - voteCount?: number; - /** - * 조직의 총 푼 문제 수입니다. - * @type {number} - * @memberof Organization - */ - solvedCount?: number; - /** - * 조직의 색깔입니다. - * @type {string} - * @memberof Organization - */ - color?: string; -} -/** -* @export -* @enum {string} -*/ -export declare enum OrganizationTypeEnum { - Community = "community", - University = "university", - Company = "company", - HighSchool = "high_school" -} -/** - * 문제 정보입니다. - * @export - * @interface Problem - */ -export interface Problem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof Problem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof Problem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof Problem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof Problem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof Problem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof Problem - */ - averageTries?: number; -} -/** - * - * @export - * @interface ProblemTag - */ -export interface ProblemTag { - /** - * 태그의 ID입니다. - * @type {string} - * @memberof ProblemTag - */ - key?: string; - /** - * - * @type {boolean} - * @memberof ProblemTag - */ - isMeta?: boolean; - /** - * 백준에서 사용되는 이 태그의 ID입니다. - * @type {number} - * @memberof ProblemTag - */ - bojTagId?: number; - /** - * 이 태그를 포함하는 문제의 수입니다. - * @type {number} - * @memberof ProblemTag - */ - problemCount?: number; - /** - * 언어별 태그의 이름 목록입니다. - * @type {Array} - * @memberof ProblemTag - */ - displayNames?: Array; - /** - * 태그의 별칭입니다. - * @type {Array} - * @memberof ProblemTag - */ - aliases?: Array; -} -/** - * - * @export - * @interface ProblemTagAliases - */ -export interface ProblemTagAliases { - /** - * 별칭입니다. - * @type {string} - * @memberof ProblemTagAliases - */ - alias?: string; -} -/** - * - * @export - * @interface ProblemTagDisplayNames - */ -export interface ProblemTagDisplayNames { - /** - * - * @type {Language} - * @memberof ProblemTagDisplayNames - */ - language?: Language; - /** - * 태그의 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - name?: string; - /** - * 태그의 짧은 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - _short?: string; -} -/** - * 사용자 정보입니다. - * @export - * @interface RankedUser - */ -export interface RankedUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof RankedUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof RankedUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof RankedUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof RankedUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof RankedUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof RankedUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof RankedUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof RankedUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof RankedUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof RankedUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof RankedUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof RankedUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUser - */ - rank: number; -} -/** - * - * @export - * @interface RankedUserAllOf - */ -export interface RankedUserAllOf { - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUserAllOf - */ - rank?: number; -} -/** - * 사용자의 solved.ac 설정 정보입니다. - * @export - * @interface Settings - */ -export interface Settings { - /** - * 사이트 디자인 테마입니다. - * @type {string} - * @memberof Settings - */ - screenTheme?: SettingsScreenThemeEnum; - /** - * - * @type {Language} - * @memberof Settings - */ - tagDisplayLanguage?: Language; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeSolved?: IconScheme; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeNotSolved?: IconScheme; - /** - * 문제 목록의 기본 정렬 순서입니다. - * @type {string} - * @memberof Settings - */ - problemSortBy?: SettingsProblemSortByEnum; - /** - * 트윗에 핸들을 포함하는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostHandle?: boolean; - /** - * CLASS가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnClassIncrease?: boolean; - /** - * 문제를 처음 해결했을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnProblemSolve?: boolean; - /** - * AC 레이팅이 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnRatingIncrease?: boolean; - /** - * 티어가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnTierIncrease?: boolean; -} -/** -* @export -* @enum {string} -*/ -export declare enum SettingsScreenThemeEnum { - Default = "default", - Light = "light", - Dark = "dark", - Black = "black" -} /** -* @export -* @enum {string} -*/ -export declare enum SettingsProblemSortByEnum { - Id = "id", - Level = "level", - Title = "title", - Solved = "solved", - AverageTry = "average_try", - Random = "random" -} -/** - * - * @export - * @interface SolvedAcStatistics - */ -export interface SolvedAcStatistics { - /** - * 여태까지 색인된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemCount?: number; - /** - * 여태까지 난이도가 기여된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemVotedCount?: number; - /** - * 여태까지 등록한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - userCount?: number; - /** - * 여태까지 난이도에 기여한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributorCount?: number; - /** - * 여태까지 이루어진 난이도 기여의 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributionCount?: number; -} -/** - * 문제 정보입니다. - * @export - * @interface TaggedProblem - */ -export interface TaggedProblem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof TaggedProblem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof TaggedProblem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof TaggedProblem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof TaggedProblem - */ - averageTries?: number; - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblem - */ - tags?: Array; -} -/** - * - * @export - * @interface TaggedProblemAllOf - */ -export interface TaggedProblemAllOf { - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblemAllOf - */ - tags?: Array; -} -/** - * 사용자 정보입니다. - * @export - * @interface User - */ -export interface User { - /** - * 사용자명입니다. - * @type {string} - * @memberof User - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof User - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof User - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof User - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof User - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof User - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof User - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof User - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof User - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof User - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof User - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof User - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof User - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof User - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof User - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof User - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof User - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof User - */ - rank: number; -} diff --git a/dist/models/mod.js b/dist/models/mod.js deleted file mode 100644 index 5ccf876..0000000 --- a/dist/models/mod.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * 뱃지 종류입니다. - * @export - * @enum {string} - */ -export var BadgeCategory; -(function (BadgeCategory) { - BadgeCategory["Achievement"] = "achievement"; - BadgeCategory["Season"] = "season"; - BadgeCategory["Event"] = "event"; - BadgeCategory["Contest"] = "contest"; -})(BadgeCategory || (BadgeCategory = {})); -/** - * 뱃지 티어입니다. - * @export - * @enum {string} - */ -export var BadgeTier; -(function (BadgeTier) { - BadgeTier["Bronze"] = "bronze"; - BadgeTier["Silver"] = "silver"; - BadgeTier["Gold"] = "gold"; - BadgeTier["Master"] = "master"; -})(BadgeTier || (BadgeTier = {})); -/** - * 클래스 치장입니다. - * @export - * @enum {string} - */ -export var ClassDecoration; -(function (ClassDecoration) { - ClassDecoration["None"] = "none"; - ClassDecoration["Silver"] = "silver"; - ClassDecoration["Gold"] = "gold"; -})(ClassDecoration || (ClassDecoration = {})); -/** -* @export -* @enum {string} -*/ -export var CoinshopProductPriceUnitEnum; -(function (CoinshopProductPriceUnitEnum) { - CoinshopProductPriceUnitEnum["Coins"] = "coins"; - CoinshopProductPriceUnitEnum["Stardusts"] = "stardusts"; -})(CoinshopProductPriceUnitEnum || (CoinshopProductPriceUnitEnum = {})); -/** - * 난이도 아이콘 표시 정책입니다. - * @export - * @enum {string} - */ -export var IconScheme; -(function (IconScheme) { - IconScheme["Default"] = "default"; - IconScheme["HideWarn"] = "hide-warn"; - IconScheme["Hide"] = "hide"; -})(IconScheme || (IconScheme = {})); -/** - * 언어입니다. - * @export - * @enum {string} - */ -export var Language; -(function (Language) { - Language["Ko"] = "ko"; - Language["En"] = "en"; -})(Language || (Language = {})); -/** -* @export -* @enum {string} -*/ -export var OrganizationTypeEnum; -(function (OrganizationTypeEnum) { - OrganizationTypeEnum["Community"] = "community"; - OrganizationTypeEnum["University"] = "university"; - OrganizationTypeEnum["Company"] = "company"; - OrganizationTypeEnum["HighSchool"] = "high_school"; -})(OrganizationTypeEnum || (OrganizationTypeEnum = {})); -/** -* @export -* @enum {string} -*/ -export var SettingsScreenThemeEnum; -(function (SettingsScreenThemeEnum) { - SettingsScreenThemeEnum["Default"] = "default"; - SettingsScreenThemeEnum["Light"] = "light"; - SettingsScreenThemeEnum["Dark"] = "dark"; - SettingsScreenThemeEnum["Black"] = "black"; -})(SettingsScreenThemeEnum || (SettingsScreenThemeEnum = {})); /** -* @export -* @enum {string} -*/ -export var SettingsProblemSortByEnum; -(function (SettingsProblemSortByEnum) { - SettingsProblemSortByEnum["Id"] = "id"; - SettingsProblemSortByEnum["Level"] = "level"; - SettingsProblemSortByEnum["Title"] = "title"; - SettingsProblemSortByEnum["Solved"] = "solved"; - SettingsProblemSortByEnum["AverageTry"] = "average_try"; - SettingsProblemSortByEnum["Random"] = "random"; -})(SettingsProblemSortByEnum || (SettingsProblemSortByEnum = {})); diff --git a/dist/runtime.js b/dist/runtime.js deleted file mode 100644 index 80148f3..0000000 --- a/dist/runtime.js +++ /dev/null @@ -1,236 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ -export const BASE_PATH = "https://solved.ac/api/v3".replace(/\/+$/, ""); -const isBlob = (value) => typeof Blob !== 'undefined' && value instanceof Blob; -/** - * This is the base class for all generated API classes. - */ -export class BaseAPI { - configuration; - middleware; - constructor(configuration = new Configuration()) { - this.configuration = configuration; - this.middleware = configuration.middleware; - } - withMiddleware(...middlewares) { - const next = this.clone(); - next.middleware = next.middleware.concat(...middlewares); - return next; - } - withPreMiddleware(...preMiddlewares) { - const middlewares = preMiddlewares.map((pre) => ({ pre })); - return this.withMiddleware(...middlewares); - } - withPostMiddleware(...postMiddlewares) { - const middlewares = postMiddlewares.map((post) => ({ post })); - return this.withMiddleware(...middlewares); - } - async request(context, initOverrides) { - const { url, init } = this.createFetchParams(context, initOverrides); - const response = await this.fetchApi(url, init); - if (response.status >= 200 && response.status < 300) { - return response; - } - throw response; - } - createFetchParams(context, initOverrides) { - let url = this.configuration.basePath + context.path; - if (context.query !== undefined && Object.keys(context.query).length !== 0) { - // only add the querystring to the URL if there are query parameters. - // this is done to avoid urls ending with a "?" character which buggy webservers - // do not handle correctly sometimes. - url += '?' + this.configuration.queryParamsStringify(context.query); - } - const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); - const headers = Object.assign({}, this.configuration.headers, context.headers); - const init = { - method: context.method, - headers: headers, - body, - credentials: this.configuration.credentials, - ...initOverrides - }; - return { url, init }; - } - fetchApi = async (url, init) => { - let fetchParams = { url, init }; - for (const middleware of this.middleware) { - if (middleware.pre) { - fetchParams = await middleware.pre({ - fetch: this.fetchApi, - ...fetchParams, - }) || fetchParams; - } - } - let response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); - for (const middleware of this.middleware) { - if (middleware.post) { - response = await middleware.post({ - fetch: this.fetchApi, - url: fetchParams.url, - init: fetchParams.init, - response: response.clone(), - }) || response; - } - } - return response; - }; - /** - * Create a shallow clone of `this` by constructing a new instance - * and then shallow cloning data members. - */ - clone() { - const constructor = this.constructor; - const next = new constructor(this.configuration); - next.middleware = this.middleware.slice(); - return next; - } -} -; -export class RequiredError extends Error { - field; - name = "RequiredError"; - constructor(field, msg) { - super(msg); - this.field = field; - } -} -export const COLLECTION_FORMATS = { - csv: ",", - ssv: " ", - tsv: "\t", - pipes: "|", -}; -export class Configuration { - configuration; - constructor(configuration = {}) { - this.configuration = configuration; - } - get basePath() { - return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; - } - get fetchApi() { - return this.configuration.fetchApi; - } - get middleware() { - return this.configuration.middleware || []; - } - get queryParamsStringify() { - return this.configuration.queryParamsStringify || querystring; - } - get username() { - return this.configuration.username; - } - get password() { - return this.configuration.password; - } - get apiKey() { - const apiKey = this.configuration.apiKey; - if (apiKey) { - return typeof apiKey === 'function' ? apiKey : () => apiKey; - } - return undefined; - } - get accessToken() { - const accessToken = this.configuration.accessToken; - if (accessToken) { - return typeof accessToken === 'function' ? accessToken : async () => accessToken; - } - return undefined; - } - get headers() { - return this.configuration.headers; - } - get credentials() { - return this.configuration.credentials; - } -} -export function exists(json, key) { - const value = json[key]; - return value !== null && value !== undefined; -} -export function querystring(params, prefix = '') { - return Object.keys(params) - .map((key) => { - const fullKey = prefix + (prefix.length ? `[${key}]` : key); - const value = params[key]; - if (value instanceof Array) { - const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) - .join(`&${encodeURIComponent(fullKey)}=`); - return `${encodeURIComponent(fullKey)}=${multiValue}`; - } - if (value instanceof Date) { - return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; - } - if (value instanceof Object) { - return querystring(value, fullKey); - } - return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; - }) - .filter(part => part.length > 0) - .join('&'); -} -export function mapValues(data, fn) { - return Object.keys(data).reduce((acc, key) => ({ ...acc, [key]: fn(data[key]) }), {}); -} -export function canConsumeForm(consumes) { - for (const consume of consumes) { - if ('multipart/form-data' === consume.contentType) { - return true; - } - } - return false; -} -export class JSONApiResponse { - raw; - transformer; - constructor(raw, transformer = (jsonValue) => jsonValue) { - this.raw = raw; - this.transformer = transformer; - } - async value() { - return this.transformer(await this.raw.json()); - } -} -export class VoidApiResponse { - raw; - constructor(raw) { - this.raw = raw; - } - async value() { - return undefined; - } -} -export class BlobApiResponse { - raw; - constructor(raw) { - this.raw = raw; - } - async value() { - return await this.raw.blob(); - } - ; -} -export class TextApiResponse { - raw; - constructor(raw) { - this.raw = raw; - } - async value() { - return await this.raw.text(); - } - ; -} diff --git a/package.json b/package.json index 2e72888..9c357b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@solvedac-community/api", - "version": "3.2022.02+b1", + "version": "3.2024.3+b1", "description": "자동 생성되는 TypeScript solved.ac API 클라이언트", "type": "module", "main": "./dist/esm/index.js", diff --git a/src/.openapi-generator/VERSION b/src/.openapi-generator/VERSION deleted file mode 100644 index 8044406..0000000 --- a/src/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -5.2.1 \ No newline at end of file diff --git a/src/apis/AccountApi.ts b/src/apis/AccountApi.ts deleted file mode 100644 index 08a3f25..0000000 --- a/src/apis/AccountApi.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - InlineObject, - InlineObject1, - InlineResponse200, -} from '../models/index.js'; - -export interface RedeemCodeRequest { - inlineObject: InlineObject; -} - -export interface UpdateAccountSettingsRequest { - inlineObject1: InlineObject1; -} - -/** - * - */ -export class AccountApi extends runtime.BaseAPI { - - /** - * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 코드 교환하기 - */ - async redeemCodeRaw(requestParameters: RedeemCodeRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.inlineObject === null || requestParameters.inlineObject === undefined) { - throw new runtime.RequiredError('inlineObject','Required parameter requestParameters.inlineObject was null or undefined when calling redeemCode.'); - } - - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - headerParameters['Content-Type'] = 'application/json'; - - const response = await this.request({ - path: `/account/redeem`, - method: 'POST', - headers: headerParameters, - query: queryParameters, - body: requestParameters.inlineObject, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 코드 교환하기 - */ - async redeemCode(requestParameters: RedeemCodeRequest, initOverrides?: RequestInit): Promise { - await this.redeemCodeRaw(requestParameters, initOverrides); - } - - /** - * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 계정 설정 변경하기 - */ - async updateAccountSettingsRaw(requestParameters: UpdateAccountSettingsRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.inlineObject1 === null || requestParameters.inlineObject1 === undefined) { - throw new runtime.RequiredError('inlineObject1','Required parameter requestParameters.inlineObject1 was null or undefined when calling updateAccountSettings.'); - } - - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - headerParameters['Content-Type'] = 'application/json'; - - const response = await this.request({ - path: `/account/update_settings`, - method: 'PATCH', - headers: headerParameters, - query: queryParameters, - body: requestParameters.inlineObject1, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 계정 설정 변경하기 - */ - async updateAccountSettings(requestParameters: UpdateAccountSettingsRequest, initOverrides?: RequestInit): Promise { - await this.updateAccountSettingsRaw(requestParameters, initOverrides); - } - - /** - * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 로그인 정보 가져오기 - */ - async verifyAccountCredentialsRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/account/verify_credentials`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. - * 로그인 정보 가져오기 - */ - async verifyAccountCredentials(initOverrides?: RequestInit): Promise { - const response = await this.verifyAccountCredentialsRaw(initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/BackgroundApi.ts b/src/apis/BackgroundApi.ts deleted file mode 100644 index bbdc281..0000000 --- a/src/apis/BackgroundApi.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - Background, -} from '../models/index.js'; - -export interface GetBackgroundRequest { - backgroundId: string; -} - -/** - * - */ -export class BackgroundApi extends runtime.BaseAPI { - - /** - * 배경의 정보를 가져옵니다. - * 배경 정보 가져오기 - */ - async getBackgroundRaw(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.backgroundId === null || requestParameters.backgroundId === undefined) { - throw new runtime.RequiredError('backgroundId','Required parameter requestParameters.backgroundId was null or undefined when calling getBackground.'); - } - - const queryParameters: any = {}; - - if (requestParameters.backgroundId !== undefined) { - queryParameters['backgroundId'] = requestParameters.backgroundId; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/background/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 배경의 정보를 가져옵니다. - * 배경 정보 가져오기 - */ - async getBackground(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit): Promise { - const response = await this.getBackgroundRaw(requestParameters, initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/BadgeApi.ts b/src/apis/BadgeApi.ts deleted file mode 100644 index 2def1e7..0000000 --- a/src/apis/BadgeApi.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - Badge, -} from '../models/index.js'; - -export interface GetBadgeRequest { - badgeId: string; -} - -/** - * - */ -export class BadgeApi extends runtime.BaseAPI { - - /** - * 뱃지의 정보를 가져옵니다. - * 뱃지 정보 가져오기 - */ - async getBadgeRaw(requestParameters: GetBadgeRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.badgeId === null || requestParameters.badgeId === undefined) { - throw new runtime.RequiredError('badgeId','Required parameter requestParameters.badgeId was null or undefined when calling getBadge.'); - } - - const queryParameters: any = {}; - - if (requestParameters.badgeId !== undefined) { - queryParameters['badgeId'] = requestParameters.badgeId; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/badge/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 뱃지의 정보를 가져옵니다. - * 뱃지 정보 가져오기 - */ - async getBadge(requestParameters: GetBadgeRequest, initOverrides?: RequestInit): Promise { - const response = await this.getBadgeRaw(requestParameters, initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/CoinsApi.ts b/src/apis/CoinsApi.ts deleted file mode 100644 index 2a1422c..0000000 --- a/src/apis/CoinsApi.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - CoinshopProduct, - InlineResponse2001, -} from '../models/index.js'; - -/** - * - */ -export class CoinsApi extends runtime.BaseAPI { - - /** - * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. - * 코인샵 판매 목록 가져오기 - */ - async getCoinShopProductsRaw(initOverrides?: RequestInit): Promise>> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/coins/shop/list`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. - * 코인샵 판매 목록 가져오기 - */ - async getCoinShopProducts(initOverrides?: RequestInit): Promise> { - const response = await this.getCoinShopProductsRaw(initOverrides); - return await response.value(); - } - - /** - * 현재 코인 → 별조각 환율을 가져옵니다. - * 코인 → 별조각 환율 가져오기 - */ - async getCoinsExchangeRateRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/coins/exchange_rate`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 현재 코인 → 별조각 환율을 가져옵니다. - * 코인 → 별조각 환율 가져오기 - */ - async getCoinsExchangeRate(initOverrides?: RequestInit): Promise { - const response = await this.getCoinsExchangeRateRaw(initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/DefaultApi.ts b/src/apis/DefaultApi.ts deleted file mode 100644 index b14bf5b..0000000 --- a/src/apis/DefaultApi.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; - -/** - * - */ -export class DefaultApi extends runtime.BaseAPI { - - /** - * TODO - */ - async postShowGetRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/post/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * TODO - */ - async postShowGet(initOverrides?: RequestInit): Promise { - await this.postShowGetRaw(initOverrides); - } - - /** - * TODO - */ - async tagListGetRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/tag/list`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * TODO - */ - async tagListGet(initOverrides?: RequestInit): Promise { - await this.tagListGetRaw(initOverrides); - } - - /** - * TODO - */ - async userClassStatsGetRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/user/class_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * TODO - */ - async userClassStatsGet(initOverrides?: RequestInit): Promise { - await this.userClassStatsGetRaw(initOverrides); - } - - /** - * TODO - */ - async userContributionStatsGetRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/user/contribution_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * TODO - */ - async userContributionStatsGet(initOverrides?: RequestInit): Promise { - await this.userContributionStatsGetRaw(initOverrides); - } - - /** - * TODO - */ - async userProblemTagStatsGetRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/user/problem_tag_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.VoidApiResponse(response); - } - - /** - * TODO - */ - async userProblemTagStatsGet(initOverrides?: RequestInit): Promise { - await this.userProblemTagStatsGetRaw(initOverrides); - } - -} diff --git a/src/apis/OtherApi.ts b/src/apis/OtherApi.ts deleted file mode 100644 index 6c57af9..0000000 --- a/src/apis/OtherApi.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - SolvedAcStatistics, -} from '../models/index.js'; - -/** - * - */ -export class OtherApi extends runtime.BaseAPI { - - /** - * solved.ac 통계를 가져옵니다. - * solved.ac 통계 가져오기 - */ - async getSiteStatsRaw(initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/site/stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * solved.ac 통계를 가져옵니다. - * solved.ac 통계 가져오기 - */ - async getSiteStats(initOverrides?: RequestInit): Promise { - const response = await this.getSiteStatsRaw(initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/ProblemApi.ts b/src/apis/ProblemApi.ts deleted file mode 100644 index 21864ee..0000000 --- a/src/apis/ProblemApi.ts +++ /dev/null @@ -1,164 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - InlineResponse2002, - InlineResponse2003, - TaggedProblem, -} from '../models/index.js'; - -export interface GetProblemByIdRequest { - problemId: number; -} - -export interface GetProblemByIdArrayRequest { - problemIds: string; -} - -/** - * - */ -export class ProblemApi extends runtime.BaseAPI { - - /** - * 문제 개수를 문제 CLASS별로 가져옵니다. - * CLASS별 문제 수 가져오기 - */ - async getClassProblemCountRaw(initOverrides?: RequestInit): Promise>> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/problem/class`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 문제 개수를 문제 CLASS별로 가져옵니다. - * CLASS별 문제 수 가져오기 - */ - async getClassProblemCount(initOverrides?: RequestInit): Promise> { - const response = await this.getClassProblemCountRaw(initOverrides); - return await response.value(); - } - - /** - * 해당하는 ID의 문제를 가져옵니다. - * ID로 문제 가져오기 - */ - async getProblemByIdRaw(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.problemId === null || requestParameters.problemId === undefined) { - throw new runtime.RequiredError('problemId','Required parameter requestParameters.problemId was null or undefined when calling getProblemById.'); - } - - const queryParameters: any = {}; - - if (requestParameters.problemId !== undefined) { - queryParameters['problemId'] = requestParameters.problemId; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/problem/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 해당하는 ID의 문제를 가져옵니다. - * ID로 문제 가져오기 - */ - async getProblemById(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit): Promise { - const response = await this.getProblemByIdRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 해당하는 ID의 문제 목록을 가져옵니다. - * ID 목록으로 문제 목록 가져오기 - */ - async getProblemByIdArrayRaw(requestParameters: GetProblemByIdArrayRequest, initOverrides?: RequestInit): Promise>> { - if (requestParameters.problemIds === null || requestParameters.problemIds === undefined) { - throw new runtime.RequiredError('problemIds','Required parameter requestParameters.problemIds was null or undefined when calling getProblemByIdArray.'); - } - - const queryParameters: any = {}; - - if (requestParameters.problemIds !== undefined) { - queryParameters['problemIds'] = requestParameters.problemIds; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/problem/lookup`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 해당하는 ID의 문제 목록을 가져옵니다. - * ID 목록으로 문제 목록 가져오기 - */ - async getProblemByIdArray(requestParameters: GetProblemByIdArrayRequest, initOverrides?: RequestInit): Promise> { - const response = await this.getProblemByIdArrayRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 문제 개수를 문제 수준별로 가져옵니다. - * 수준별 문제 수 가져오기 - */ - async getProblemLevelRaw(initOverrides?: RequestInit): Promise>> { - const queryParameters: any = {}; - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/problem/level`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 문제 개수를 문제 수준별로 가져옵니다. - * 수준별 문제 수 가져오기 - */ - async getProblemLevel(initOverrides?: RequestInit): Promise> { - const response = await this.getProblemLevelRaw(initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/RankingApi.ts b/src/apis/RankingApi.ts deleted file mode 100644 index 6541bff..0000000 --- a/src/apis/RankingApi.ts +++ /dev/null @@ -1,284 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - InlineResponse20010, - InlineResponse2004, - InlineResponse2005, - InlineResponse2006, - InlineResponse2007, - InlineResponse2008, - InlineResponse2009, -} from '../models/index.js'; - -export interface GetOrganizationRankingRequest { - page?: number; -} - -export interface GetRankingByClassRequest { - page?: number; -} - -export interface GetRankingByContributionRequest { - page?: number; -} - -export interface GetRankingByStreakRequest { - page?: number; -} - -export interface GetRankingByTierRequest { - page?: number; -} - -export interface GetReverseRivalRankingRequest { - page?: number; -} - -export interface GetRivalRankingRequest { - page?: number; -} - -/** - * - */ -export class RankingApi extends runtime.BaseAPI { - - /** - * 레이팅에 따른 조직 순위를 가져옵니다. - * 조직 순위 가져오기 - */ - async getOrganizationRankingRaw(requestParameters: GetOrganizationRankingRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/organization`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 레이팅에 따른 조직 순위를 가져옵니다. - * 조직 순위 가져오기 - */ - async getOrganizationRanking(requestParameters: GetOrganizationRankingRequest, initOverrides?: RequestInit): Promise { - const response = await this.getOrganizationRankingRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 사용자 CLASS에 따른 순위를 가져옵니다. - * CLASS 순위 가져오기 - */ - async getRankingByClassRaw(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/class`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 사용자 CLASS에 따른 순위를 가져옵니다. - * CLASS 순위 가져오기 - */ - async getRankingByClass(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit): Promise { - const response = await this.getRankingByClassRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 기여 횟수에 따른 순위를 가져옵니다. - * 기여 순위 가져오기 - */ - async getRankingByContributionRaw(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/contribution`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 기여 횟수에 따른 순위를 가져옵니다. - * 기여 순위 가져오기 - */ - async getRankingByContribution(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit): Promise { - const response = await this.getRankingByContributionRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 최장 스트릭에 따른 순위를 가져옵니다. - * 최장 스트릭 순위 가져오기 - */ - async getRankingByStreakRaw(requestParameters: GetRankingByStreakRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/streak`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 최장 스트릭에 따른 순위를 가져옵니다. - * 최장 스트릭 순위 가져오기 - */ - async getRankingByStreak(requestParameters: GetRankingByStreakRequest, initOverrides?: RequestInit): Promise { - const response = await this.getRankingByStreakRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 사용자 티어에 따른 순위를 가져옵니다. - * 티어 순위 가져오기 - */ - async getRankingByTierRaw(requestParameters: GetRankingByTierRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/tier`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 사용자 티어에 따른 순위를 가져옵니다. - * 티어 순위 가져오기 - */ - async getRankingByTier(requestParameters: GetRankingByTierRequest, initOverrides?: RequestInit): Promise { - const response = await this.getRankingByTierRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 현재 사용자의 역라이벌 티어 순위를 가져옵니다. - * 역라이벌 순위 가져오기 - */ - async getReverseRivalRankingRaw(requestParameters: GetReverseRivalRankingRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/reverse_rival`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 현재 사용자의 역라이벌 티어 순위를 가져옵니다. - * 역라이벌 순위 가져오기 - */ - async getReverseRivalRanking(requestParameters: GetReverseRivalRankingRequest, initOverrides?: RequestInit): Promise { - const response = await this.getReverseRivalRankingRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 현재 사용자의 라이벌 티어 순위를 가져옵니다. - * 라이벌 순위 가져오기 - */ - async getRivalRankingRaw(requestParameters: GetRivalRankingRequest, initOverrides?: RequestInit): Promise> { - const queryParameters: any = {}; - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/ranking/rival`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 현재 사용자의 라이벌 티어 순위를 가져옵니다. - * 라이벌 순위 가져오기 - */ - async getRivalRanking(requestParameters: GetRivalRankingRequest, initOverrides?: RequestInit): Promise { - const response = await this.getRivalRankingRaw(requestParameters, initOverrides); - return await response.value(); - } - -} diff --git a/src/apis/SearchApi.ts b/src/apis/SearchApi.ts deleted file mode 100644 index cd45c2c..0000000 --- a/src/apis/SearchApi.ts +++ /dev/null @@ -1,235 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - InlineResponse20011, - InlineResponse20012, - InlineResponse20013, - InlineResponse20014, -} from '../models/index.js'; - -export interface GetSearchAutoCompletionRequest { - query: string; -} - -export interface SearchProblemRequest { - query: string; - page?: number; - sort?: SearchProblemSortEnum; - direction?: SearchProblemDirectionEnum; -} - -export interface SearchProblemTagRequest { - query: string; - page?: number; -} - -export interface SearchUserRequest { - query: string; - page?: number; -} - -/** - * - */ -export class SearchApi extends runtime.BaseAPI { - - /** - * 주어진 쿼리에 따라 검색해보고, 자동 완성에 적합하도록 가공한 정보를 돌려줍니다. - * 검색 자동완성 구하기 - */ - async getSearchAutoCompletionRaw(requestParameters: GetSearchAutoCompletionRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query','Required parameter requestParameters.query was null or undefined when calling getSearchAutoCompletion.'); - } - - const queryParameters: any = {}; - - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/search/suggestion`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 주어진 쿼리에 따라 검색해보고, 자동 완성에 적합하도록 가공한 정보를 돌려줍니다. - * 검색 자동완성 구하기 - */ - async getSearchAutoCompletion(requestParameters: GetSearchAutoCompletionRequest, initOverrides?: RequestInit): Promise { - const response = await this.getSearchAutoCompletionRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 주어진 쿼리에 따라 문제를 검색합니다. - * 문제 검색하기 - */ - async searchProblemRaw(requestParameters: SearchProblemRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query','Required parameter requestParameters.query was null or undefined when calling searchProblem.'); - } - - const queryParameters: any = {}; - - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - if (requestParameters.sort !== undefined) { - queryParameters['sort'] = requestParameters.sort; - } - - if (requestParameters.direction !== undefined) { - queryParameters['direction'] = requestParameters.direction; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/search/problem`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 주어진 쿼리에 따라 문제를 검색합니다. - * 문제 검색하기 - */ - async searchProblem(requestParameters: SearchProblemRequest, initOverrides?: RequestInit): Promise { - const response = await this.searchProblemRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 주어진 쿼리에 따라 문제 태그를 검색합니다. - * 문제 태그 검색하기 - */ - async searchProblemTagRaw(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query','Required parameter requestParameters.query was null or undefined when calling searchProblemTag.'); - } - - const queryParameters: any = {}; - - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/search/tag`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 주어진 쿼리에 따라 문제 태그를 검색합니다. - * 문제 태그 검색하기 - */ - async searchProblemTag(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit): Promise { - const response = await this.searchProblemTagRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 주어진 쿼리에 따라 사용자를 검색합니다. - * 사용자 검색하기 - */ - async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.query === null || requestParameters.query === undefined) { - throw new runtime.RequiredError('query','Required parameter requestParameters.query was null or undefined when calling searchUser.'); - } - - const queryParameters: any = {}; - - if (requestParameters.query !== undefined) { - queryParameters['query'] = requestParameters.query; - } - - if (requestParameters.page !== undefined) { - queryParameters['page'] = requestParameters.page; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/search/user`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 주어진 쿼리에 따라 사용자를 검색합니다. - * 사용자 검색하기 - */ - async searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit): Promise { - const response = await this.searchUserRaw(requestParameters, initOverrides); - return await response.value(); - } - -} - -/** - * @export - * @enum {string} - */ -export enum SearchProblemSortEnum { - Id = 'id', - Level = 'level', - Title = 'title', - Solved = 'solved', - AverageTry = 'average_try', - Random = 'random' -} -/** - * @export - * @enum {string} - */ -export enum SearchProblemDirectionEnum { - Asc = 'asc', - Desc = 'desc' -} diff --git a/src/apis/UserApi.ts b/src/apis/UserApi.ts deleted file mode 100644 index 09aca76..0000000 --- a/src/apis/UserApi.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) - * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -import * as runtime from '../runtime.js'; -import { - FullUser, - InlineResponse20015, - Organization, -} from '../models/index.js'; - -export interface GetUserRequest { - handle: string; -} - -export interface GetUserOrganizationsRequest { - handle: string; -} - -export interface GetUserProblemStatsRequest { - handle: string; -} - -/** - * - */ -export class UserApi extends runtime.BaseAPI { - - /** - * 사용자의 정보를 가져옵니다. 만약 로그인한 경우, 라이벌 여부도 가져옵니다. - * 사용자 정보 가져오기 - */ - async getUserRaw(requestParameters: GetUserRequest, initOverrides?: RequestInit): Promise> { - if (requestParameters.handle === null || requestParameters.handle === undefined) { - throw new runtime.RequiredError('handle','Required parameter requestParameters.handle was null or undefined when calling getUser.'); - } - - const queryParameters: any = {}; - - if (requestParameters.handle !== undefined) { - queryParameters['handle'] = requestParameters.handle; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/user/show`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 사용자의 정보를 가져옵니다. 만약 로그인한 경우, 라이벌 여부도 가져옵니다. - * 사용자 정보 가져오기 - */ - async getUser(requestParameters: GetUserRequest, initOverrides?: RequestInit): Promise { - const response = await this.getUserRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 사용자가 속한 조직 목록를 가져옵니다. - * 사용자가 속한 조직 목록 가져오기 - */ - async getUserOrganizationsRaw(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit): Promise>> { - if (requestParameters.handle === null || requestParameters.handle === undefined) { - throw new runtime.RequiredError('handle','Required parameter requestParameters.handle was null or undefined when calling getUserOrganizations.'); - } - - const queryParameters: any = {}; - - if (requestParameters.handle !== undefined) { - queryParameters['handle'] = requestParameters.handle; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/user/organizations`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 사용자가 속한 조직 목록를 가져옵니다. - * 사용자가 속한 조직 목록 가져오기 - */ - async getUserOrganizations(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit): Promise> { - const response = await this.getUserOrganizationsRaw(requestParameters, initOverrides); - return await response.value(); - } - - /** - * 사용자가 푼 문제 개수를 문제 수준별로 가져옵니다. - * 사용자가 푼 문제 개수 수준별로 가져오기 - */ - async getUserProblemStatsRaw(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit): Promise>> { - if (requestParameters.handle === null || requestParameters.handle === undefined) { - throw new runtime.RequiredError('handle','Required parameter requestParameters.handle was null or undefined when calling getUserProblemStats.'); - } - - const queryParameters: any = {}; - - if (requestParameters.handle !== undefined) { - queryParameters['handle'] = requestParameters.handle; - } - - const headerParameters: runtime.HTTPHeaders = {}; - - const response = await this.request({ - path: `/user/problem_stats`, - method: 'GET', - headers: headerParameters, - query: queryParameters, - }, initOverrides); - - return new runtime.JSONApiResponse(response); - } - - /** - * 사용자가 푼 문제 개수를 문제 수준별로 가져옵니다. - * 사용자가 푼 문제 개수 수준별로 가져오기 - */ - async getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit): Promise> { - const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides); - return await response.value(); - } - -} diff --git a/src/.openapi-generator-ignore b/src/cjs/.openapi-generator-ignore similarity index 100% rename from src/.openapi-generator-ignore rename to src/cjs/.openapi-generator-ignore diff --git a/src/.openapi-generator/FILES b/src/cjs/.openapi-generator/FILES similarity index 89% rename from src/.openapi-generator/FILES rename to src/cjs/.openapi-generator/FILES index 957d9b0..430bc56 100644 --- a/src/.openapi-generator/FILES +++ b/src/cjs/.openapi-generator/FILES @@ -1,8 +1,8 @@ +.openapi-generator-ignore apis/AccountApi.ts apis/BackgroundApi.ts apis/BadgeApi.ts apis/CoinsApi.ts -apis/DefaultApi.ts apis/OtherApi.ts apis/ProblemApi.ts apis/RankingApi.ts diff --git a/src/cjs/.openapi-generator/VERSION b/src/cjs/.openapi-generator/VERSION new file mode 100644 index 0000000..18bb418 --- /dev/null +++ b/src/cjs/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.5.0 diff --git a/src/cjs/apis/AccountApi.cts b/src/cjs/apis/AccountApi.cts new file mode 100644 index 0000000..0a31721 --- /dev/null +++ b/src/cjs/apis/AccountApi.cts @@ -0,0 +1,157 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + Language, + RedeemCodeRequest, + UpdateAccountSettingsRequest, + VerifyCredentialsCredential, +} from '../models/index.cjs'; + +export interface RedeemCodeOperationRequest { + redeemCodeRequest: RedeemCodeRequest; + xSolvedacLanguage?: Language; +} + +export interface UpdateAccountSettingsOperationRequest { + updateAccountSettingsRequest: UpdateAccountSettingsRequest; + xSolvedacLanguage?: Language; +} + +export interface VerifyAccountCredentialsRequest { + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class AccountApi extends runtime.BaseAPI { + + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + async redeemCodeRaw(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['redeemCodeRequest'] == null) { + throw new runtime.RequiredError( + 'redeemCodeRequest', + 'Required parameter "redeemCodeRequest" was null or undefined when calling redeemCode().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/account/redeem`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters['redeemCodeRequest'], + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + async redeemCode(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.redeemCodeRaw(requestParameters, initOverrides); + } + + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + async updateAccountSettingsRaw(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['updateAccountSettingsRequest'] == null) { + throw new runtime.RequiredError( + 'updateAccountSettingsRequest', + 'Required parameter "updateAccountSettingsRequest" was null or undefined when calling updateAccountSettings().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/account/update_settings`, + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: requestParameters['updateAccountSettingsRequest'], + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + async updateAccountSettings(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.updateAccountSettingsRaw(requestParameters, initOverrides); + } + + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + async verifyAccountCredentialsRaw(requestParameters: VerifyAccountCredentialsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/account/verify_credentials`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + async verifyAccountCredentials(requestParameters: VerifyAccountCredentialsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.verifyAccountCredentialsRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/BackgroundApi.cts b/src/cjs/apis/BackgroundApi.cts new file mode 100644 index 0000000..2031c27 --- /dev/null +++ b/src/cjs/apis/BackgroundApi.cts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + Background, + Language, +} from '../models/index.cjs'; + +export interface GetBackgroundRequest { + backgroundId: string; + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class BackgroundApi extends runtime.BaseAPI { + + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackgroundRaw(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['backgroundId'] == null) { + throw new runtime.RequiredError( + 'backgroundId', + 'Required parameter "backgroundId" was null or undefined when calling getBackground().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['backgroundId'] != null) { + queryParameters['backgroundId'] = requestParameters['backgroundId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/background/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackground(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getBackgroundRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/BadgeApi.cts b/src/cjs/apis/BadgeApi.cts new file mode 100644 index 0000000..3169264 --- /dev/null +++ b/src/cjs/apis/BadgeApi.cts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + Badge, + Language, +} from '../models/index.cjs'; + +export interface GetBadgeRequest { + badgeId: string; + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class BadgeApi extends runtime.BaseAPI { + + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadgeRaw(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['badgeId'] == null) { + throw new runtime.RequiredError( + 'badgeId', + 'Required parameter "badgeId" was null or undefined when calling getBadge().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['badgeId'] != null) { + queryParameters['badgeId'] = requestParameters['badgeId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/badge/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadge(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getBadgeRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/CoinsApi.cts b/src/cjs/apis/CoinsApi.cts new file mode 100644 index 0000000..907da38 --- /dev/null +++ b/src/cjs/apis/CoinsApi.cts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + CoinShopProduct, + GetCoinStardustExchangeRateExchangeRate, + Language, +} from '../models/index.cjs'; + +export interface GetCoinShopProductsRequest { + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class CoinsApi extends runtime.BaseAPI { + + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProductsRaw(requestParameters: GetCoinShopProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/coins/shop/list`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProducts(requestParameters: GetCoinShopProductsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getCoinShopProductsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/coins/exchange_rate`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getCoinStardustExchangeRateRaw(initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/OtherApi.cts b/src/cjs/apis/OtherApi.cts new file mode 100644 index 0000000..3530cd7 --- /dev/null +++ b/src/cjs/apis/OtherApi.cts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + SiteStatistics, +} from '../models/index.cjs'; + +/** + * + */ +export class OtherApi extends runtime.BaseAPI { + + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatisticsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/site/stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatistics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getSiteStatisticsRaw(initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/ProblemApi.cts b/src/cjs/apis/ProblemApi.cts new file mode 100644 index 0000000..8c7a310 --- /dev/null +++ b/src/cjs/apis/ProblemApi.cts @@ -0,0 +1,198 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + GetClassesProblemCountClassEntry, + GetProblemsByIdList200Response, + GetProblemsCountGroupByLevelLevelEntry, + Language, + Problem, +} from '../models/index.cjs'; + +export interface GetClassesProblemCountRequest { + xSolvedacLanguage?: Language; +} + +export interface GetProblemByIdRequest { + problemId: number; + xSolvedacLanguage?: Language; +} + +export interface GetProblemsByIdListRequest { + problemIds: Array; + xSolvedacLanguage?: Language; +} + +export interface GetProblemsCountGroupByLevelRequest { + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class ProblemApi extends runtime.BaseAPI { + + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCountRaw(requestParameters: GetClassesProblemCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCount(requestParameters: GetClassesProblemCountRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getClassesProblemCountRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemByIdRaw(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['problemId'] == null) { + throw new runtime.RequiredError( + 'problemId', + 'Required parameter "problemId" was null or undefined when calling getProblemById().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['problemId'] != null) { + queryParameters['problemId'] = requestParameters['problemId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemById(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getProblemByIdRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdListRaw(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['problemIds'] == null) { + throw new runtime.RequiredError( + 'problemIds', + 'Required parameter "problemIds" was null or undefined when calling getProblemsByIdList().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['problemIds'] != null) { + queryParameters['problemIds'] = requestParameters['problemIds']!.join(runtime.COLLECTION_FORMATS["csv"]); + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/lookup`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdList(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getProblemsByIdListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevelRaw(requestParameters: GetProblemsCountGroupByLevelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/level`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevel(requestParameters: GetProblemsCountGroupByLevelRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getProblemsCountGroupByLevelRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/RankingApi.cts b/src/cjs/apis/RankingApi.cts new file mode 100644 index 0000000..63831e9 --- /dev/null +++ b/src/cjs/apis/RankingApi.cts @@ -0,0 +1,316 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + GetOrganizationRankingByACRating200Response, + GetRankingByClass200Response, + Language, + OrganizationType, +} from '../models/index.cjs'; + +export interface GetOrganizationRankingByACRatingRequest { + type?: OrganizationType; + page?: number; +} + +export interface GetRankingByClassRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRankingByContributionRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRankingByMaxStreakRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRankingBySolveACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetReverseRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +/** + * + */ +export class RankingApi extends runtime.BaseAPI { + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRatingRaw(requestParameters: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['type'] != null) { + queryParameters['type'] = requestParameters['type']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/ranking/organization`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRating(requestParameters: GetOrganizationRankingByACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getOrganizationRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClassRaw(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClass(requestParameters: GetRankingByClassRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingByClassRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContributionRaw(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/contribution`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContribution(requestParameters: GetRankingByContributionRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingByContributionRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreakRaw(requestParameters: GetRankingByMaxStreakRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/streak`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreak(requestParameters: GetRankingByMaxStreakRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingByMaxStreakRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRatingRaw(requestParameters: GetRankingBySolveACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/tier`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRating(requestParameters: GetRankingBySolveACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingBySolveACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRatingRaw(requestParameters: GetReverseRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/reverse_rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRating(requestParameters: GetReverseRivalRankingByACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getReverseRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRatingRaw(requestParameters: GetRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRating(requestParameters: GetRivalRankingByACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/SearchApi.cts b/src/cjs/apis/SearchApi.cts new file mode 100644 index 0000000..7c95bc0 --- /dev/null +++ b/src/cjs/apis/SearchApi.cts @@ -0,0 +1,263 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + GetProblemsByIdList200Response, + GetSearchAutoCompletionsSuggestion, + Language, + SearchProblemQueryDirection, + SearchProblemQuerySort, + SearchProblemTag200Response, + SearchUser200Response, +} from '../models/index.cjs'; + +export interface GetSearchAutoCompletionsRequest { + query: string; + xSolvedacLanguage?: Language; +} + +export interface SearchProblemRequest { + query: string; + direction: SearchProblemQueryDirection; + sort: SearchProblemQuerySort; + xSolvedacLanguage?: Language; + page?: number; +} + +export interface SearchProblemTagRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} + +export interface SearchUserRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} + +/** + * + */ +export class SearchApi extends runtime.BaseAPI { + + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletionsRaw(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling getSearchAutoCompletions().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/suggestion`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletions(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getSearchAutoCompletionsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblemRaw(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling searchProblem().' + ); + } + + if (requestParameters['direction'] == null) { + throw new runtime.RequiredError( + 'direction', + 'Required parameter "direction" was null or undefined when calling searchProblem().' + ); + } + + if (requestParameters['sort'] == null) { + throw new runtime.RequiredError( + 'sort', + 'Required parameter "sort" was null or undefined when calling searchProblem().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['direction'] != null) { + queryParameters['direction'] = requestParameters['direction']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['sort'] != null) { + queryParameters['sort'] = requestParameters['sort']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/problem`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblem(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.searchProblemRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTagRaw(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling searchProblemTag().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/tag`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTag(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.searchProblemTagRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling searchUser().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/user`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.searchUserRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/UserApi.cts b/src/cjs/apis/UserApi.cts new file mode 100644 index 0000000..41380ed --- /dev/null +++ b/src/cjs/apis/UserApi.cts @@ -0,0 +1,212 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.cjs'; +import type { + GetProblemsByIdList200Response, + GetUserProblemStatsProblemStat, + Language, + Organization, + SocialUser, +} from '../models/index.cjs'; + +export interface GetUserByHandleRequest { + handle: string; + xSolvedacLanguage?: Language; +} + +export interface GetUserOrganizationsRequest { + handle: string; +} + +export interface GetUserProblemStatsRequest { + handle: string; +} + +export interface GetUserTop100Request { + handle: string; + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class UserApi extends runtime.BaseAPI { + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandleRaw(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserByHandle().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/user/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandle(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getUserByHandleRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizationsRaw(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserOrganizations().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/organizations`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizations(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getUserOrganizationsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStatsRaw(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserProblemStats().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/problem_stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100Raw(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserTop100().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/user/top_100`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getUserTop100Raw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/cjs/apis/index.cts b/src/cjs/apis/index.cts new file mode 100644 index 0000000..3d58a6c --- /dev/null +++ b/src/cjs/apis/index.cts @@ -0,0 +1,11 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './AccountApi.cjs'; +export * from './BackgroundApi.cjs'; +export * from './BadgeApi.cjs'; +export * from './CoinsApi.cjs'; +export * from './OtherApi.cjs'; +export * from './ProblemApi.cjs'; +export * from './RankingApi.cjs'; +export * from './SearchApi.cjs'; +export * from './UserApi.cjs'; diff --git a/src/cjs/index.cts b/src/cjs/index.cts new file mode 100644 index 0000000..2ac509e --- /dev/null +++ b/src/cjs/index.cts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './runtime.cjs'; +export * from './apis/index.cjs'; +export * from './models/index.cjs'; diff --git a/src/cjs/models/index.cts b/src/cjs/models/index.cts new file mode 100644 index 0000000..2e084e4 --- /dev/null +++ b/src/cjs/models/index.cts @@ -0,0 +1,2810 @@ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +export const ArenaTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13 +} as const; +export type ArenaTier = typeof ArenaTier[keyof typeof ArenaTier]; + +/** + * 사용자가 획득할 수 있는 배경입니다. + * @export + * @interface Background + */ +export interface Background { + /** + * 배경의 고유 ID입니다. + * @type {string} + * @memberof Background + */ + backgroundId: string; + /** + * 배경 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Background + */ + backgroundImageUrl: string; + /** + * 일러스트 배경 보기가 꺼져있을 때 보여줄 수 있는 대안 배경 사진으로 가는 하이퍼링크입니다. + * 일러스트를 포함하지 않은 배경이거나, 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + fallbackBackgroundImageUrl?: string; + /** + * 움직이는 배경이 켜져있을 때 보여줄 수 있는 배경 영상으로 가는 하이퍼링크입니다. + * 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + backgroundVideoUrl?: string; + /** + * 배경을 획득한 사용자 수입니다. + * @type {number} + * @memberof Background + */ + unlockedUserCount: number; + /** + * 배경의 표시 이름입니다. + * @type {string} + * @memberof Background + */ + displayName: string; + /** + * 배경의 설명입니다. + * @type {string} + * @memberof Background + */ + displayDescription: string; + /** + * 배경을 얻는 조건입니다. + * 조건이 숨겨진 경우, 해당 값이 내려오지 않습니다. + * @type {string} + * @memberof Background + */ + conditions?: string; + /** + * 배경 획득 조건이 숨겨져 있는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + hiddenConditions: boolean; + /** + * 일러스트 배경인지 여부입니다. + * @type {boolean} + * @memberof Background + */ + isIllust: boolean; + /** + * 배경 획득 유형 분류입니다. + * @type {BackgroundCategory} + * @memberof Background + */ + backgroundCategory: BackgroundCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + solvedCompanyRights: boolean; + /** + * 배경을 작업한 작가 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof Background + */ + authors: Array; +} +/** + * 배경을 작업한 작가입니다. + * @export + * @interface BackgroundAuthor + */ +export interface BackgroundAuthor { + /** + * 작가 고유 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorId: string; + /** + * 수행한 역할입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + role: string; + /** + * 작가 홈페이지로 가는 하이퍼링크입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorUrl?: string; + /** + * 작가의 solved.ac 핸들입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + handle?: string; + /** + * 작가의 Twitter ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + twitter?: string; + /** + * 작가의 인스타그램 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + instagram?: string; + /** + * 작가의 표시 이름입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + displayName: string; +} + +/** + * 배경 획득 유형 분류입니다. + * @export + */ +export const BackgroundCategory = { + Event: 'event', + Arena: 'arena', + Achievement: 'achievement', + Season: 'season', + Contest: 'contest' +} as const; +export type BackgroundCategory = typeof BackgroundCategory[keyof typeof BackgroundCategory]; + +/** + * 사용자가 획득할 수 있는 뱃지입니다. + * @export + * @interface Badge + */ +export interface Badge { + /** + * 뱃지의 고유 ID입니다. + * @type {string} + * @memberof Badge + */ + badgeId: string; + /** + * 뱃지 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Badge + */ + badgeImageUrl: string; + /** + * 뱃지가 표시되는 이름입니다. + * @type {string} + * @memberof Badge + */ + displayName: string; + /** + * 뱃지의 설명입니다. + * @type {string} + * @memberof Badge + */ + displayDescription: string; + /** + * 뱃지를 획득한 사용자 수입니다. + * @type {number} + * @memberof Badge + */ + unlockedUserCount: number; + /** + * + * @type {BadgeTier} + * @memberof Badge + */ + badgeTier: BadgeTier; + /** + * + * @type {BadgeCategory} + * @memberof Badge + */ + badgeCategory: BadgeCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Badge + */ + solvedCompanyRights: boolean; + /** + * 뱃지가 만들어진 시각입니다. + * @type {string} + * @memberof Badge + */ + createdAt: string; +} + +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +export const BadgeCategory = { + Achievement: 'achievement', + Season: 'season', + Event: 'event', + Contest: 'contest' +} as const; +export type BadgeCategory = typeof BadgeCategory[keyof typeof BadgeCategory]; + + +/** + * 뱃지의 등급입니다. + * @export + */ +export const BadgeTier = { + Bronze: 'bronze', + Silver: 'silver', + Gold: 'gold', + Master: 'master' +} as const; +export type BadgeTier = typeof BadgeTier[keyof typeof BadgeTier]; + +/** + * 코인샵에서 판매하고 있는 상품입니다. + * @export + * @interface CoinShopProduct + */ +export interface CoinShopProduct { + /** + * 재고(Stock Keeping Unit) ID입니다. + * @type {number} + * @memberof CoinShopProduct + */ + skuId: number; + /** + * + * @type {Item} + * @memberof CoinShopProduct + */ + item: Item; + /** + * 1회 구매 시 획득하는 아이템 개수입니다. + * @type {number} + * @memberof CoinShopProduct + */ + units: number; + /** + * 가격입니다. + * 코인의 경우 나누기 100을 해야 표시 가격이 됩니다. + * @type {number} + * @memberof CoinShopProduct + */ + price: number; + /** + * 가격 단위입니다. + * @type {string} + * @memberof CoinShopProduct + */ + priceUnit: CoinShopProductPriceUnitEnum; + /** + * 아이템 사용 시간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemUseTimeLimited: boolean; + /** + * 아이템 구매 기간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemSellTimeLimited: boolean; +} + + +/** + * @export + */ +export const CoinShopProductPriceUnitEnum = { + Coins: 'coins', + Stardusts: 'stardusts' +} as const; +export type CoinShopProductPriceUnitEnum = typeof CoinShopProductPriceUnitEnum[keyof typeof CoinShopProductPriceUnitEnum]; + +/** + * 난이도 투표 등에 사용할 수 있는 이모티콘입니다. + * @export + * @interface Emoticon + */ +export interface Emoticon { + /** + * 고유 식별자입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof Emoticon + */ + displayName: string; +} +/** + * + * @export + * @interface GetClassesProblemCountClassEntry + */ +export interface GetClassesProblemCountClassEntry { + /** + * 클래스 숫자입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + _class: GetClassesProblemCountClassEntryClassEnum; + /** + * 총 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + total: number; + /** + * 에센셜 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + essentials: number; + /** + * 취득에 필요한 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + criteria: number; +} + + +/** + * @export + */ +export const GetClassesProblemCountClassEntryClassEnum = { + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type GetClassesProblemCountClassEntryClassEnum = typeof GetClassesProblemCountClassEntryClassEnum[keyof typeof GetClassesProblemCountClassEntryClassEnum]; + +/** + * + * @export + * @interface GetCoinStardustExchangeRateExchangeRate + */ +export interface GetCoinStardustExchangeRateExchangeRate { + /** + * 1 코인을 별조각으로 바꾸는 환율입니다. + * 별조각을 코인으로 환전할 때에는 수수료가 1%(소수점은 내림) 붙습니다. + * @type {number} + * @memberof GetCoinStardustExchangeRateExchangeRate + */ + rate: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200Response + */ +export interface GetOrganizationRankingByACRating200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetOrganizationRankingByACRating200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200ResponseItemsInner + */ +export interface GetOrganizationRankingByACRating200ResponseItemsInner { + /** + * ID입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + color: string; + /** + * 순위입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rank: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetProblemsByIdList200Response + */ +export interface GetProblemsByIdList200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetProblemsByIdList200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetProblemsByIdList200Response + */ + items: Array; +} +/** + * + * @export + * @interface GetProblemsCountGroupByLevelLevelEntry + */ +export interface GetProblemsCountGroupByLevelLevelEntry { + /** + * + * @type {ProblemLevel} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + level: ProblemLevel; + /** + * 문제 수입니다. + * @type {number} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + count: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetRankingByClass200Response + */ +export interface GetRankingByClass200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetRankingByClass200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetRankingByClass200Response + */ + items: Array; +} +/** + * 고급 검색 관련 자동 완성입니다. + * @export + * @interface GetSearchAutoCompletionsAutoCompleteEntry + */ +export interface GetSearchAutoCompletionsAutoCompleteEntry { + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + description: string; +} +/** + * 요악한 문제 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemEntry + */ +export interface GetSearchAutoCompletionsBriefProblemEntry { + /** + * 문제 ID입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + id: number; + /** + * 문제 제목입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + title: string; + /** + * + * @type {ProblemLevel} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + level: ProblemLevel; + /** + * 푼 사람 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + solved: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + description: string; +} +/** + * 요약한 태그 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemTagEntry + */ +export interface GetSearchAutoCompletionsBriefProblemTagEntry { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + key: string; + /** + * 태그 이름입니다. + * 사용자 언어에 따라 번역되지 않습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + name: string; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + problemCount: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + description: string; +} +/** + * + * @export + * @interface GetSearchAutoCompletionsSuggestion + */ +export interface GetSearchAutoCompletionsSuggestion { + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + autocomplete: Array; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problems: Array; + /** + * 검색 결과로 나올 총 문제 수입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problemCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tags: Array; + /** + * 검색 결과로 나올 총 태그 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tagCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + users: Array; + /** + * 검색 결과로 나올 총 사용자 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + userCount: number; +} +/** + * 사용자 정보입니다. + * @export + * @interface GetSearchAutoCompletionsUserEntry + */ +export interface GetSearchAutoCompletionsUserEntry { + /** + * 사용자명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + _class: GetSearchAutoCompletionsUserEntryClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + classDecoration: GetSearchAutoCompletionsUserEntryClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rank: number; +} + + +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type GetSearchAutoCompletionsUserEntryClassEnum = typeof GetSearchAutoCompletionsUserEntryClassEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassEnum]; + +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum]; + +/** + * + * @export + * @interface GetUserProblemStatsProblemStat + */ +export interface GetUserProblemStatsProblemStat { + /** + * + * @type {ProblemLevel} + * @memberof GetUserProblemStatsProblemStat + */ + level: ProblemLevel; + /** + * solved.ac에 등록된 해당 수준 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + total: number; + /** + * 사용자가 푼 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + solved: number; + /** + * 사용자가 부분 성공한 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + partial: number; + /** + * 사용자가 시도해 본 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + tried: number; +} +/** + * 사용자가 사용할 수 있는 아이템입니다. + * @export + * @interface Item + */ +export interface Item { + /** + * ID입니다. + * @type {string} + * @memberof Item + */ + itemId: string; + /** + * 아이템 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Item + */ + itemImageUrl: string; + /** + * 최대 소유 가능 개수입니다. + * 사람에 따라 다를 수 있습니다. + * @type {number} + * @memberof Item + */ + inventoryMaxUnits: number; + /** + * 사용 가능 여부입니다. + * @type {boolean} + * @memberof Item + */ + usable: boolean; + /** + * 국제화된 이름입니다. + * @type {string} + * @memberof Item + */ + displayName: string; + /** + * 국제화된 설명입니다. + * @type {string} + * @memberof Item + */ + displayDescription: string; +} + +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +export const Language = { + Ko: 'ko', + En: 'en', + Ja: 'ja' +} as const; +export type Language = typeof Language[keyof typeof Language]; + +/** + * solved.ac에 등록한 단체입니다. + * @export + * @interface Organization + */ +export interface Organization { + /** + * ID입니다. + * @type {number} + * @memberof Organization + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof Organization + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof Organization + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof Organization + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof Organization + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof Organization + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof Organization + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof Organization + */ + color: string; +} + +/** + * 단체 유형입니다. + * @export + */ +export const OrganizationType = { + University: 'university', + Company: 'company', + Community: 'community', + HighSchool: 'high_school', + MiddleSchool: 'middle_school', + ElementarySchool: 'elementary_school', + Undefined: 'undefined' +} as const; +export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType]; + +/** + * 문제 정보입니다. + * @export + * @interface Problem + */ +export interface Problem { + /** + * 백준 문제 번호로, 문제마다 고유합니다. + * @type {number} + * @memberof Problem + */ + problemId: number; + /** + * 한국어 문제 제목입니다. + * HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. + * @type {string} + * @memberof Problem + */ + titleKo: string; + /** + * 언어별 문제 제목 목록입니다. + * @type {Array} + * @memberof Problem + */ + titles: Array; + /** + * 채점 가능 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isSolvable: boolean; + /** + * 부분 점수/서브태스크 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isPartial: boolean; + /** + * 맞은 사람 수입니다. + * @type {number} + * @memberof Problem + */ + acceptedUserCount: number; + /** + * + * @type {ProblemLevel} + * @memberof Problem + */ + level: ProblemLevel; + /** + * 난이도 기여자 수입니다. + * @type {number} + * @memberof Problem + */ + votedUserCount: number; + /** + * 새싹 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + sprout: boolean; + /** + * 레이팅을 주지 않는지 여부입니다. + * @type {boolean} + * @memberof Problem + */ + givesNoRating: boolean; + /** + * 난이도 기여 제한 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isLevelLocked: boolean; + /** + * 평균 시도 횟수입니다. + * @type {number} + * @memberof Problem + */ + averageTries: number; + /** + * 공식 문제 여부입니다. + * 번외 문제 등은 비공식 문제로 분류됩니다. + * @type {boolean} + * @memberof Problem + */ + official: boolean; + /** + * 태그 목록입니다. + * @type {Array} + * @memberof Problem + */ + tags: Array; + /** + * + * @type {any} + * @memberof Problem + */ + metadata: any | null; +} + +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +export const ProblemLevel = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30 +} as const; +export type ProblemLevel = typeof ProblemLevel[keyof typeof ProblemLevel]; + +/** + * + * @export + * @interface ProblemTag + */ +export interface ProblemTag { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof ProblemTag + */ + key: string; + /** + * + * @type {boolean} + * @memberof ProblemTag + */ + isMeta: boolean; + /** + * 백준 온라인 저지에서 쓰는 태그 ID입니다. + * @type {number} + * @memberof ProblemTag + */ + bojTagId: number; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof ProblemTag + */ + problemCount: number; + /** + * 언어별 태그 이름 목록입니다. + * @type {Array} + * @memberof ProblemTag + */ + displayNames: Array; + /** + * 별명 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof ProblemTag + */ + aliases: Array; +} +/** + * 태그의 별칭을 나타냅니다. + * @export + * @interface ProblemTagAlias + */ +export interface ProblemTagAlias { + /** + * 별칭입니다 + * @type {string} + * @memberof ProblemTagAlias + */ + alias: string; +} +/** + * + * @export + * @interface ProblemTagNameTranslated + */ +export interface ProblemTagNameTranslated { + /** + * 태그 이름이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTagNameTranslated + */ + language: Language; + /** + * 이름입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + name: string; + /** + * 짧은 이름입니다. + * 따로 없을 경우 `name`과 같은 값입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + _short: string; +} +/** + * 언어별 문제 제목입니다. + * @export + * @interface ProblemTitleTranslated + */ +export interface ProblemTitleTranslated { + /** + * 문제 제목이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTitleTranslated + */ + language: Language; + /** + * 문제 제목이 작성된 언어의 이름입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + languageDisplayName: string; + /** + * 문제 제목입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + title: string; + /** + * 원본과 동일한지 여부입니다. + * @type {boolean} + * @memberof ProblemTitleTranslated + */ + isOriginal: boolean; +} +/** + * + * @export + * @interface RedeemCodeRequest + */ +export interface RedeemCodeRequest { + /** + * 리딤 코드입니다. + * @type {string} + * @memberof RedeemCodeRequest + */ + code: string; +} +/** + * + * @export + * @interface RivalUser + */ +export interface RivalUser { + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof RivalUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof RivalUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof RivalUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof RivalUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof RivalUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof RivalUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof RivalUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof RivalUser + */ + _class: RivalUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof RivalUser + */ + classDecoration: RivalUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof RivalUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof RivalUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof RivalUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof RivalUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof RivalUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof RivalUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof RivalUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof RivalUser + */ + rank: number; +} + + +/** + * @export + */ +export const RivalUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type RivalUserClassEnum = typeof RivalUserClassEnum[keyof typeof RivalUserClassEnum]; + +/** + * @export + */ +export const RivalUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type RivalUserClassDecorationEnum = typeof RivalUserClassDecorationEnum[keyof typeof RivalUserClassDecorationEnum]; + + +/** + * 검색 결과 정렬 방향 + * @export + */ +export const SearchProblemQueryDirection = { + Asc: 'asc', + Desc: 'desc' +} as const; +export type SearchProblemQueryDirection = typeof SearchProblemQueryDirection[keyof typeof SearchProblemQueryDirection]; + + +/** + * 검색 결과 정렬 기준 + * @export + */ +export const SearchProblemQuerySort = { + Id: 'id', + Level: 'level', + Title: 'title', + Solved: 'solved', + AverageTry: 'average_try', + Random: 'random' +} as const; +export type SearchProblemQuerySort = typeof SearchProblemQuerySort[keyof typeof SearchProblemQuerySort]; + +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchProblemTag200Response + */ +export interface SearchProblemTag200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchProblemTag200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchProblemTag200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchUser200Response + */ +export interface SearchUser200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchUser200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchUser200Response + */ + items: Array; +} +/** + * solved.ac 사이트의 통계 정보입니다. + * @export + * @interface SiteStatistics + */ +export interface SiteStatistics { + /** + * 여태까지 색인된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemCount: number; + /** + * 여태까지 난이도가 기여된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemVotedCount: number; + /** + * 여태까지 등록한 사용자 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + userCount: number; + /** + * 여태까지 난이도에 기여한 사용자 수입니다 + * @type {number} + * @memberof SiteStatistics + */ + contributorCount: number; + /** + * 여태까지 이루어진 난이도 기여의 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + contributionCount: number; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface SocialUser + */ +export interface SocialUser { + /** + * 로그인한 사용자가 해당 사용자를 차단했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + blocked: boolean; + /** + * 로그인한 사용자가 해당 사용자에게 차단당했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + reverseBlocked: boolean; + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof SocialUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof SocialUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof SocialUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof SocialUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof SocialUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof SocialUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof SocialUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof SocialUser + */ + _class: SocialUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof SocialUser + */ + classDecoration: SocialUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof SocialUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof SocialUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof SocialUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof SocialUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof SocialUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof SocialUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof SocialUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof SocialUser + */ + rank: number; +} + + +/** + * @export + */ +export const SocialUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type SocialUserClassEnum = typeof SocialUserClassEnum[keyof typeof SocialUserClassEnum]; + +/** + * @export + */ +export const SocialUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type SocialUserClassDecorationEnum = typeof SocialUserClassDecorationEnum[keyof typeof SocialUserClassDecorationEnum]; + + +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +export const SolveTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30, + NUMBER_31: 31 +} as const; +export type SolveTier = typeof SolveTier[keyof typeof SolveTier]; + +/** + * + * @export + * @interface UpdateAccountSettingsRequest + */ +export interface UpdateAccountSettingsRequest { + /** + * 업데이트할 설정의 이름입니다. + * @type {string} + * @memberof UpdateAccountSettingsRequest + */ + key?: string; + /** + * 업데이트할 설정의 새로운 값입니다. + * @type {any} + * @memberof UpdateAccountSettingsRequest + */ + value?: any; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface User + */ +export interface User { + /** + * 사용자명입니다. + * @type {string} + * @memberof User + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof User + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof User + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof User + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof User + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof User + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof User + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof User + */ + _class: UserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof User + */ + classDecoration: UserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof User + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof User + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof User + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof User + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof User + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof User + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof User + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof User + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof User + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof User + */ + rank: number; +} + + +/** + * @export + */ +export const UserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type UserClassEnum = typeof UserClassEnum[keyof typeof UserClassEnum]; + +/** + * @export + */ +export const UserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum]; + +/** + * 사용자 동의 여부입니다. + * @export + * @interface VerifyCredentialsAgreements + */ +export interface VerifyCredentialsAgreements { + /** + * 동의한 약관 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + tos: string; + /** + * 동의한 개인정보 처리방침 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + privacy: string; +} +/** + * + * @export + * @interface VerifyCredentialsCredential + */ +export interface VerifyCredentialsCredential { + /** + * + * @type {VerifyCredentialsUserWithSettings} + * @memberof VerifyCredentialsCredential + */ + user: VerifyCredentialsUserWithSettings; + /** + * + * @type {VerifyCredentialsAgreements} + * @memberof VerifyCredentialsCredential + */ + aggredOn: VerifyCredentialsAgreements; + /** + * 보유할 수 있는 모든 이모티콘에 대해 이모티콘 정보에 덧붙여 보유 여부를 함께 담은 목록입니다. + * @type {Array} + * @memberof VerifyCredentialsCredential + */ + emoticons: Array; + /** + * + * @type {any} + * @memberof VerifyCredentialsCredential + */ + bookmarks: any | null; + /** + * 받은 알림 수입니다. + * @type {number} + * @memberof VerifyCredentialsCredential + */ + notificationCount: number; + /** + * 마지막으로 솔브드 상태가 변한 시각입니다. + * @type {string} + * @memberof VerifyCredentialsCredential + */ + lastSolvedStateChangedAt: string; +} +/** + * + * @export + * @interface VerifyCredentialsEmoticonUnlockStatus + */ +export interface VerifyCredentialsEmoticonUnlockStatus { + /** + * 해금 여부입니다. + * @type {boolean} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + unlocked: boolean; + /** + * 고유 식별자입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + displayName: string; +} +/** + * + * @export + * @interface VerifyCredentialsUserSettings + */ +export interface VerifyCredentialsUserSettings { + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnProblemSolve: VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + screenTheme: VerifyCredentialsUserSettingsScreenThemeEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostHandle: VerifyCredentialsUserSettingsTwitterPostHandleEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnRatingIncrease: VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnTierIncrease: VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnClassIncrease: VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + proHideAds: VerifyCredentialsUserSettingsProHideAdsEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + siteLanguage: VerifyCredentialsUserSettingsSiteLanguageEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showIllustBackground: VerifyCredentialsUserSettingsShowIllustBackgroundEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showMovieBackground: VerifyCredentialsUserSettingsShowMovieBackgroundEnum; +} + + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsScreenThemeEnum = { + Default: 'default' +} as const; +export type VerifyCredentialsUserSettingsScreenThemeEnum = typeof VerifyCredentialsUserSettingsScreenThemeEnum[keyof typeof VerifyCredentialsUserSettingsScreenThemeEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostHandleEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostHandleEnum = typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsProHideAdsEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsProHideAdsEnum = typeof VerifyCredentialsUserSettingsProHideAdsEnum[keyof typeof VerifyCredentialsUserSettingsProHideAdsEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsSiteLanguageEnum = { + Ko: 'ko' +} as const; +export type VerifyCredentialsUserSettingsSiteLanguageEnum = typeof VerifyCredentialsUserSettingsSiteLanguageEnum[keyof typeof VerifyCredentialsUserSettingsSiteLanguageEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowIllustBackgroundEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsShowIllustBackgroundEnum = typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowMovieBackgroundEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsShowMovieBackgroundEnum = typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum]; + +/** + * + * @export + * @interface VerifyCredentialsUserWithSettings + */ +export interface VerifyCredentialsUserWithSettings { + /** + * 설정입니다. + * @type {VerifyCredentialsUserSettings} + * @memberof VerifyCredentialsUserWithSettings + */ + settings: VerifyCredentialsUserSettings; + /** + * 사용 중인 이메일 주소입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + email: string; + /** + * 사용자명입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + _class: VerifyCredentialsUserWithSettingsClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + classDecoration: VerifyCredentialsUserWithSettingsClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof VerifyCredentialsUserWithSettings + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rank: number; +} + + +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type VerifyCredentialsUserWithSettingsClassEnum = typeof VerifyCredentialsUserWithSettingsClassEnum[keyof typeof VerifyCredentialsUserWithSettingsClassEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type VerifyCredentialsUserWithSettingsClassDecorationEnum = typeof VerifyCredentialsUserWithSettingsClassDecorationEnum[keyof typeof VerifyCredentialsUserWithSettingsClassDecorationEnum]; + diff --git a/src/cjs/runtime.cts b/src/cjs/runtime.cts new file mode 100644 index 0000000..5bf5b46 --- /dev/null +++ b/src/cjs/runtime.cts @@ -0,0 +1,420 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export const BASE_PATH = "https://solved.ac/api/v3".replace(/\/+$/, ""); + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | Promise | ((name: string) => string | Promise); // parameter for apiKey security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string | Promise) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + + private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware(this: T, ...preMiddlewares: Array) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware(this: T, ...postMiddlewares: Array) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && (response.status >= 200 && response.status < 300)) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + + private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign({}, this.configuration.headers, context.headers); + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + + const initOverrideFn = + typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })) + }; + + let body: any; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + }) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + }) || response; + } + } + return response; + } + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +}; + +function isBlob(value: any): value is Blob { + return typeof Blob !== 'undefined' && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor(public response: Response, msg?: string) { + super(msg); + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor(public cause: Error, msg?: string) { + super(msg); + } +} + +export class RequiredError extends Error { + override name: "RequiredError" = "RequiredError"; + constructor(public field: string, msg?: string) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; + +export type Json = any; +export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | Set | HTTPQuery }; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody }; +export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; + +export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function querystring(params: HTTPQuery, prefix: string = ''): string { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} + +function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array | Set | HTTPQuery, keyPrefix: string = ''): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + }; +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + }; +} diff --git a/src/esm/.openapi-generator-ignore b/src/esm/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/src/esm/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/src/esm/.openapi-generator/FILES b/src/esm/.openapi-generator/FILES new file mode 100644 index 0000000..430bc56 --- /dev/null +++ b/src/esm/.openapi-generator/FILES @@ -0,0 +1,14 @@ +.openapi-generator-ignore +apis/AccountApi.ts +apis/BackgroundApi.ts +apis/BadgeApi.ts +apis/CoinsApi.ts +apis/OtherApi.ts +apis/ProblemApi.ts +apis/RankingApi.ts +apis/SearchApi.ts +apis/UserApi.ts +apis/index.ts +index.ts +models/index.ts +runtime.ts diff --git a/src/esm/.openapi-generator/VERSION b/src/esm/.openapi-generator/VERSION new file mode 100644 index 0000000..18bb418 --- /dev/null +++ b/src/esm/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.5.0 diff --git a/src/esm/apis/AccountApi.ts b/src/esm/apis/AccountApi.ts new file mode 100644 index 0000000..2fdb336 --- /dev/null +++ b/src/esm/apis/AccountApi.ts @@ -0,0 +1,157 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + Language, + RedeemCodeRequest, + UpdateAccountSettingsRequest, + VerifyCredentialsCredential, +} from '../models/index.js'; + +export interface RedeemCodeOperationRequest { + redeemCodeRequest: RedeemCodeRequest; + xSolvedacLanguage?: Language; +} + +export interface UpdateAccountSettingsOperationRequest { + updateAccountSettingsRequest: UpdateAccountSettingsRequest; + xSolvedacLanguage?: Language; +} + +export interface VerifyAccountCredentialsRequest { + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class AccountApi extends runtime.BaseAPI { + + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + async redeemCodeRaw(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['redeemCodeRequest'] == null) { + throw new runtime.RequiredError( + 'redeemCodeRequest', + 'Required parameter "redeemCodeRequest" was null or undefined when calling redeemCode().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/account/redeem`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters['redeemCodeRequest'], + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * 리딤 코드와 배지, 배경 등을 교환합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 코드 교환하기 + */ + async redeemCode(requestParameters: RedeemCodeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.redeemCodeRaw(requestParameters, initOverrides); + } + + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + async updateAccountSettingsRaw(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['updateAccountSettingsRequest'] == null) { + throw new runtime.RequiredError( + 'updateAccountSettingsRequest', + 'Required parameter "updateAccountSettingsRequest" was null or undefined when calling updateAccountSettings().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/account/update_settings`, + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: requestParameters['updateAccountSettingsRequest'], + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * 계정의 설정을 변경합니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 계정 설정 변경하기 + */ + async updateAccountSettings(requestParameters: UpdateAccountSettingsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.updateAccountSettingsRaw(requestParameters, initOverrides); + } + + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + async verifyAccountCredentialsRaw(requestParameters: VerifyAccountCredentialsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/account/verify_credentials`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 현재 로그인한 계정 정보를 가져옵니다. **주의**: 로그인이 필요한 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. + * 로그인 정보 가져오기 + */ + async verifyAccountCredentials(requestParameters: VerifyAccountCredentialsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.verifyAccountCredentialsRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/BackgroundApi.ts b/src/esm/apis/BackgroundApi.ts new file mode 100644 index 0000000..9493435 --- /dev/null +++ b/src/esm/apis/BackgroundApi.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + Background, + Language, +} from '../models/index.js'; + +export interface GetBackgroundRequest { + backgroundId: string; + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class BackgroundApi extends runtime.BaseAPI { + + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackgroundRaw(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['backgroundId'] == null) { + throw new runtime.RequiredError( + 'backgroundId', + 'Required parameter "backgroundId" was null or undefined when calling getBackground().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['backgroundId'] != null) { + queryParameters['backgroundId'] = requestParameters['backgroundId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/background/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 배경 정보를 가져옵니다. + * 배경 정보 가져오기 + */ + async getBackground(requestParameters: GetBackgroundRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getBackgroundRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/BadgeApi.ts b/src/esm/apis/BadgeApi.ts new file mode 100644 index 0000000..96c21bf --- /dev/null +++ b/src/esm/apis/BadgeApi.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + Badge, + Language, +} from '../models/index.js'; + +export interface GetBadgeRequest { + badgeId: string; + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class BadgeApi extends runtime.BaseAPI { + + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadgeRaw(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['badgeId'] == null) { + throw new runtime.RequiredError( + 'badgeId', + 'Required parameter "badgeId" was null or undefined when calling getBadge().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['badgeId'] != null) { + queryParameters['badgeId'] = requestParameters['badgeId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/badge/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 뱃지의 정보를 가져옵니다. + * 뱃지 정보 가져오기 + */ + async getBadge(requestParameters: GetBadgeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getBadgeRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/CoinsApi.ts b/src/esm/apis/CoinsApi.ts new file mode 100644 index 0000000..f3ddb19 --- /dev/null +++ b/src/esm/apis/CoinsApi.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + CoinShopProduct, + GetCoinStardustExchangeRateExchangeRate, + Language, +} from '../models/index.js'; + +export interface GetCoinShopProductsRequest { + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class CoinsApi extends runtime.BaseAPI { + + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProductsRaw(requestParameters: GetCoinShopProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/coins/shop/list`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 코인샵에서 팔고 있는 상품 목록을 가져옵니다. + * 코인샵 상품 목록 가져오기 + */ + async getCoinShopProducts(requestParameters: GetCoinShopProductsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getCoinShopProductsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/coins/exchange_rate`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 코인 → 별조각 환율 가져오기 + */ + async getCoinStardustExchangeRate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getCoinStardustExchangeRateRaw(initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/OtherApi.ts b/src/esm/apis/OtherApi.ts new file mode 100644 index 0000000..becf200 --- /dev/null +++ b/src/esm/apis/OtherApi.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + SiteStatistics, +} from '../models/index.js'; + +/** + * + */ +export class OtherApi extends runtime.BaseAPI { + + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatisticsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/site/stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * solved.ac 통계를 가져옵니다. + * solved.ac 통계 가져오기 + */ + async getSiteStatistics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getSiteStatisticsRaw(initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/ProblemApi.ts b/src/esm/apis/ProblemApi.ts new file mode 100644 index 0000000..30f7d2c --- /dev/null +++ b/src/esm/apis/ProblemApi.ts @@ -0,0 +1,198 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + GetClassesProblemCountClassEntry, + GetProblemsByIdList200Response, + GetProblemsCountGroupByLevelLevelEntry, + Language, + Problem, +} from '../models/index.js'; + +export interface GetClassesProblemCountRequest { + xSolvedacLanguage?: Language; +} + +export interface GetProblemByIdRequest { + problemId: number; + xSolvedacLanguage?: Language; +} + +export interface GetProblemsByIdListRequest { + problemIds: Array; + xSolvedacLanguage?: Language; +} + +export interface GetProblemsCountGroupByLevelRequest { + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class ProblemApi extends runtime.BaseAPI { + + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCountRaw(requestParameters: GetClassesProblemCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * CLASS별 문제 수를 가져옵니다. + * CLASS별 문제 수 가져오기 + */ + async getClassesProblemCount(requestParameters: GetClassesProblemCountRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getClassesProblemCountRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemByIdRaw(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['problemId'] == null) { + throw new runtime.RequiredError( + 'problemId', + 'Required parameter "problemId" was null or undefined when calling getProblemById().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['problemId'] != null) { + queryParameters['problemId'] = requestParameters['problemId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 요청한 번호의 백준 문제에 해당하는 solved.ac 문제 정보를 가져옵니다. + * 백준 문제 번호로 문제 가져오기 + */ + async getProblemById(requestParameters: GetProblemByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getProblemByIdRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdListRaw(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['problemIds'] == null) { + throw new runtime.RequiredError( + 'problemIds', + 'Required parameter "problemIds" was null or undefined when calling getProblemsByIdList().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['problemIds'] != null) { + queryParameters['problemIds'] = requestParameters['problemIds']!.join(runtime.COLLECTION_FORMATS["csv"]); + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/lookup`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 요청한 번호 목록 각각의 백준 문제에 해당하는 solved.ac 문제 정보를 목록으로 가져옵니다. + * 백준 문제 번호 목록으로 문제 가져오기 + */ + async getProblemsByIdList(requestParameters: GetProblemsByIdListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getProblemsByIdListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevelRaw(requestParameters: GetProblemsCountGroupByLevelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/problem/level`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 난이도별 문제 수를 가져옵니다. + * 난이도별 문제 수 가져오기 + */ + async getProblemsCountGroupByLevel(requestParameters: GetProblemsCountGroupByLevelRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getProblemsCountGroupByLevelRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/RankingApi.ts b/src/esm/apis/RankingApi.ts new file mode 100644 index 0000000..227046f --- /dev/null +++ b/src/esm/apis/RankingApi.ts @@ -0,0 +1,316 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + GetOrganizationRankingByACRating200Response, + GetRankingByClass200Response, + Language, + OrganizationType, +} from '../models/index.js'; + +export interface GetOrganizationRankingByACRatingRequest { + type?: OrganizationType; + page?: number; +} + +export interface GetRankingByClassRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRankingByContributionRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRankingByMaxStreakRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRankingBySolveACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetReverseRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +export interface GetRivalRankingByACRatingRequest { + xSolvedacLanguage?: Language; + page?: number; +} + +/** + * + */ +export class RankingApi extends runtime.BaseAPI { + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRatingRaw(requestParameters: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['type'] != null) { + queryParameters['type'] = requestParameters['type']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/ranking/organization`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 단체가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 단체 랭킹 가져오기 + */ + async getOrganizationRankingByACRating(requestParameters: GetOrganizationRankingByACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getOrganizationRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClassRaw(requestParameters: GetRankingByClassRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/class`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * CLASS 순 사용자 랭킹 가져오기 + */ + async getRankingByClass(requestParameters: GetRankingByClassRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingByClassRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContributionRaw(requestParameters: GetRankingByContributionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/contribution`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 기여 횟수가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 기여 순 사용자 랭킹 가져오기 + */ + async getRankingByContribution(requestParameters: GetRankingByContributionRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingByContributionRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreakRaw(requestParameters: GetRankingByMaxStreakRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/streak`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 치장 스트릭 유지일이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 최장 스트릭 순 사용자 랭킹 가져오기 + */ + async getRankingByMaxStreak(requestParameters: GetRankingByMaxStreakRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingByMaxStreakRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRatingRaw(requestParameters: GetRankingBySolveACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/tier`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다. + * 문제풀이 레이팅 순 사용자 랭킹 가져오기 + */ + async getRankingBySolveACRating(requestParameters: GetRankingBySolveACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRankingBySolveACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRatingRaw(requestParameters: GetReverseRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/reverse_rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 역라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 역라이벌 랭킹 가져오기 + */ + async getReverseRivalRankingByACRating(requestParameters: GetReverseRivalRankingByACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getReverseRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRatingRaw(requestParameters: GetRivalRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/ranking/rival`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 라이벌인 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다. + * 문제풀이 레이팅 순 라이벌 랭킹 가져오기 + */ + async getRivalRankingByACRating(requestParameters: GetRivalRankingByACRatingRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getRivalRankingByACRatingRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/SearchApi.ts b/src/esm/apis/SearchApi.ts new file mode 100644 index 0000000..b39393a --- /dev/null +++ b/src/esm/apis/SearchApi.ts @@ -0,0 +1,263 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + GetProblemsByIdList200Response, + GetSearchAutoCompletionsSuggestion, + Language, + SearchProblemQueryDirection, + SearchProblemQuerySort, + SearchProblemTag200Response, + SearchUser200Response, +} from '../models/index.js'; + +export interface GetSearchAutoCompletionsRequest { + query: string; + xSolvedacLanguage?: Language; +} + +export interface SearchProblemRequest { + query: string; + direction: SearchProblemQueryDirection; + sort: SearchProblemQuerySort; + xSolvedacLanguage?: Language; + page?: number; +} + +export interface SearchProblemTagRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} + +export interface SearchUserRequest { + query: string; + xSolvedacLanguage?: Language; + page?: number; +} + +/** + * + */ +export class SearchApi extends runtime.BaseAPI { + + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletionsRaw(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling getSearchAutoCompletions().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/suggestion`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 검색할 때 도움이 되도록 자동 완성 및 상위 검색 결과를 반환합니다. 자동 완성 결과는 언어에 의존적입니다. + * 검색 자동완성 구하기 + */ + async getSearchAutoCompletions(requestParameters: GetSearchAutoCompletionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getSearchAutoCompletionsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblemRaw(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling searchProblem().' + ); + } + + if (requestParameters['direction'] == null) { + throw new runtime.RequiredError( + 'direction', + 'Required parameter "direction" was null or undefined when calling searchProblem().' + ); + } + + if (requestParameters['sort'] == null) { + throw new runtime.RequiredError( + 'sort', + 'Required parameter "sort" was null or undefined when calling searchProblem().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['direction'] != null) { + queryParameters['direction'] = requestParameters['direction']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['sort'] != null) { + queryParameters['sort'] = requestParameters['sort']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/problem`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 문제를 검색합니다. + * 문제 검색하기 + */ + async searchProblem(requestParameters: SearchProblemRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.searchProblemRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTagRaw(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling searchProblemTag().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/tag`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 문제 태그를 검색합니다. + * 문제 태그 검색하기 + */ + async searchProblemTag(requestParameters: SearchProblemTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.searchProblemTagRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['query'] == null) { + throw new runtime.RequiredError( + 'query', + 'Required parameter "query" was null or undefined when calling searchUser().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/search/user`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 주어진 쿼리에 따라 사용자를 검색합니다. + * 사용자 검색하기 + */ + async searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.searchUserRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/esm/apis/UserApi.ts b/src/esm/apis/UserApi.ts new file mode 100644 index 0000000..c57cf03 --- /dev/null +++ b/src/esm/apis/UserApi.ts @@ -0,0 +1,212 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @solvedac/unofficial-documentation + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime.js'; +import type { + GetProblemsByIdList200Response, + GetUserProblemStatsProblemStat, + Language, + Organization, + SocialUser, +} from '../models/index.js'; + +export interface GetUserByHandleRequest { + handle: string; + xSolvedacLanguage?: Language; +} + +export interface GetUserOrganizationsRequest { + handle: string; +} + +export interface GetUserProblemStatsRequest { + handle: string; +} + +export interface GetUserTop100Request { + handle: string; + xSolvedacLanguage?: Language; +} + +/** + * + */ +export class UserApi extends runtime.BaseAPI { + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandleRaw(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserByHandle().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/user/show`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 정보 가져오기 + */ + async getUserByHandle(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getUserByHandleRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizationsRaw(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserOrganizations().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/organizations`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다. + * 사용자 핸들로 단체 가져오기 + */ + async getUserOrganizations(requestParameters: GetUserOrganizationsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getUserOrganizationsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStatsRaw(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserProblemStats().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/problem_stats`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다. + * 문제 수준별로 사용자가 푼 문제 수 가져오기 + */ + async getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100Raw(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['handle'] == null) { + throw new runtime.RequiredError( + 'handle', + 'Required parameter "handle" was null or undefined when calling getUserTop100().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['handle'] != null) { + queryParameters['handle'] = requestParameters['handle']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters['xSolvedacLanguage'] != null) { + headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']); + } + + const response = await this.request({ + path: `/user/top_100`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다 + * 상위 100 문제 가져오기 + */ + async getUserTop100(requestParameters: GetUserTop100Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getUserTop100Raw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/src/apis/index.ts b/src/esm/apis/index.ts similarity index 90% rename from src/apis/index.ts rename to src/esm/apis/index.ts index 455dd63..1854d90 100644 --- a/src/apis/index.ts +++ b/src/esm/apis/index.ts @@ -4,7 +4,6 @@ export * from './AccountApi.js'; export * from './BackgroundApi.js'; export * from './BadgeApi.js'; export * from './CoinsApi.js'; -export * from './DefaultApi.js'; export * from './OtherApi.js'; export * from './ProblemApi.js'; export * from './RankingApi.js'; diff --git a/src/apis/mod.ts b/src/esm/apis/mod.ts similarity index 90% rename from src/apis/mod.ts rename to src/esm/apis/mod.ts index 455dd63..1854d90 100644 --- a/src/apis/mod.ts +++ b/src/esm/apis/mod.ts @@ -4,7 +4,6 @@ export * from './AccountApi.js'; export * from './BackgroundApi.js'; export * from './BadgeApi.js'; export * from './CoinsApi.js'; -export * from './DefaultApi.js'; export * from './OtherApi.js'; export * from './ProblemApi.js'; export * from './RankingApi.js'; diff --git a/src/index.ts b/src/esm/index.ts similarity index 100% rename from src/index.ts rename to src/esm/index.ts diff --git a/src/mod.ts b/src/esm/mod.ts similarity index 100% rename from src/mod.ts rename to src/esm/mod.ts diff --git a/src/esm/models/index.ts b/src/esm/models/index.ts new file mode 100644 index 0000000..2e084e4 --- /dev/null +++ b/src/esm/models/index.ts @@ -0,0 +1,2810 @@ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +export const ArenaTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13 +} as const; +export type ArenaTier = typeof ArenaTier[keyof typeof ArenaTier]; + +/** + * 사용자가 획득할 수 있는 배경입니다. + * @export + * @interface Background + */ +export interface Background { + /** + * 배경의 고유 ID입니다. + * @type {string} + * @memberof Background + */ + backgroundId: string; + /** + * 배경 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Background + */ + backgroundImageUrl: string; + /** + * 일러스트 배경 보기가 꺼져있을 때 보여줄 수 있는 대안 배경 사진으로 가는 하이퍼링크입니다. + * 일러스트를 포함하지 않은 배경이거나, 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + fallbackBackgroundImageUrl?: string; + /** + * 움직이는 배경이 켜져있을 때 보여줄 수 있는 배경 영상으로 가는 하이퍼링크입니다. + * 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + backgroundVideoUrl?: string; + /** + * 배경을 획득한 사용자 수입니다. + * @type {number} + * @memberof Background + */ + unlockedUserCount: number; + /** + * 배경의 표시 이름입니다. + * @type {string} + * @memberof Background + */ + displayName: string; + /** + * 배경의 설명입니다. + * @type {string} + * @memberof Background + */ + displayDescription: string; + /** + * 배경을 얻는 조건입니다. + * 조건이 숨겨진 경우, 해당 값이 내려오지 않습니다. + * @type {string} + * @memberof Background + */ + conditions?: string; + /** + * 배경 획득 조건이 숨겨져 있는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + hiddenConditions: boolean; + /** + * 일러스트 배경인지 여부입니다. + * @type {boolean} + * @memberof Background + */ + isIllust: boolean; + /** + * 배경 획득 유형 분류입니다. + * @type {BackgroundCategory} + * @memberof Background + */ + backgroundCategory: BackgroundCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + solvedCompanyRights: boolean; + /** + * 배경을 작업한 작가 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof Background + */ + authors: Array; +} +/** + * 배경을 작업한 작가입니다. + * @export + * @interface BackgroundAuthor + */ +export interface BackgroundAuthor { + /** + * 작가 고유 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorId: string; + /** + * 수행한 역할입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + role: string; + /** + * 작가 홈페이지로 가는 하이퍼링크입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorUrl?: string; + /** + * 작가의 solved.ac 핸들입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + handle?: string; + /** + * 작가의 Twitter ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + twitter?: string; + /** + * 작가의 인스타그램 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + instagram?: string; + /** + * 작가의 표시 이름입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + displayName: string; +} + +/** + * 배경 획득 유형 분류입니다. + * @export + */ +export const BackgroundCategory = { + Event: 'event', + Arena: 'arena', + Achievement: 'achievement', + Season: 'season', + Contest: 'contest' +} as const; +export type BackgroundCategory = typeof BackgroundCategory[keyof typeof BackgroundCategory]; + +/** + * 사용자가 획득할 수 있는 뱃지입니다. + * @export + * @interface Badge + */ +export interface Badge { + /** + * 뱃지의 고유 ID입니다. + * @type {string} + * @memberof Badge + */ + badgeId: string; + /** + * 뱃지 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Badge + */ + badgeImageUrl: string; + /** + * 뱃지가 표시되는 이름입니다. + * @type {string} + * @memberof Badge + */ + displayName: string; + /** + * 뱃지의 설명입니다. + * @type {string} + * @memberof Badge + */ + displayDescription: string; + /** + * 뱃지를 획득한 사용자 수입니다. + * @type {number} + * @memberof Badge + */ + unlockedUserCount: number; + /** + * + * @type {BadgeTier} + * @memberof Badge + */ + badgeTier: BadgeTier; + /** + * + * @type {BadgeCategory} + * @memberof Badge + */ + badgeCategory: BadgeCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Badge + */ + solvedCompanyRights: boolean; + /** + * 뱃지가 만들어진 시각입니다. + * @type {string} + * @memberof Badge + */ + createdAt: string; +} + +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +export const BadgeCategory = { + Achievement: 'achievement', + Season: 'season', + Event: 'event', + Contest: 'contest' +} as const; +export type BadgeCategory = typeof BadgeCategory[keyof typeof BadgeCategory]; + + +/** + * 뱃지의 등급입니다. + * @export + */ +export const BadgeTier = { + Bronze: 'bronze', + Silver: 'silver', + Gold: 'gold', + Master: 'master' +} as const; +export type BadgeTier = typeof BadgeTier[keyof typeof BadgeTier]; + +/** + * 코인샵에서 판매하고 있는 상품입니다. + * @export + * @interface CoinShopProduct + */ +export interface CoinShopProduct { + /** + * 재고(Stock Keeping Unit) ID입니다. + * @type {number} + * @memberof CoinShopProduct + */ + skuId: number; + /** + * + * @type {Item} + * @memberof CoinShopProduct + */ + item: Item; + /** + * 1회 구매 시 획득하는 아이템 개수입니다. + * @type {number} + * @memberof CoinShopProduct + */ + units: number; + /** + * 가격입니다. + * 코인의 경우 나누기 100을 해야 표시 가격이 됩니다. + * @type {number} + * @memberof CoinShopProduct + */ + price: number; + /** + * 가격 단위입니다. + * @type {string} + * @memberof CoinShopProduct + */ + priceUnit: CoinShopProductPriceUnitEnum; + /** + * 아이템 사용 시간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemUseTimeLimited: boolean; + /** + * 아이템 구매 기간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemSellTimeLimited: boolean; +} + + +/** + * @export + */ +export const CoinShopProductPriceUnitEnum = { + Coins: 'coins', + Stardusts: 'stardusts' +} as const; +export type CoinShopProductPriceUnitEnum = typeof CoinShopProductPriceUnitEnum[keyof typeof CoinShopProductPriceUnitEnum]; + +/** + * 난이도 투표 등에 사용할 수 있는 이모티콘입니다. + * @export + * @interface Emoticon + */ +export interface Emoticon { + /** + * 고유 식별자입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof Emoticon + */ + displayName: string; +} +/** + * + * @export + * @interface GetClassesProblemCountClassEntry + */ +export interface GetClassesProblemCountClassEntry { + /** + * 클래스 숫자입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + _class: GetClassesProblemCountClassEntryClassEnum; + /** + * 총 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + total: number; + /** + * 에센셜 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + essentials: number; + /** + * 취득에 필요한 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + criteria: number; +} + + +/** + * @export + */ +export const GetClassesProblemCountClassEntryClassEnum = { + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type GetClassesProblemCountClassEntryClassEnum = typeof GetClassesProblemCountClassEntryClassEnum[keyof typeof GetClassesProblemCountClassEntryClassEnum]; + +/** + * + * @export + * @interface GetCoinStardustExchangeRateExchangeRate + */ +export interface GetCoinStardustExchangeRateExchangeRate { + /** + * 1 코인을 별조각으로 바꾸는 환율입니다. + * 별조각을 코인으로 환전할 때에는 수수료가 1%(소수점은 내림) 붙습니다. + * @type {number} + * @memberof GetCoinStardustExchangeRateExchangeRate + */ + rate: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200Response + */ +export interface GetOrganizationRankingByACRating200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetOrganizationRankingByACRating200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200ResponseItemsInner + */ +export interface GetOrganizationRankingByACRating200ResponseItemsInner { + /** + * ID입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + color: string; + /** + * 순위입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rank: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetProblemsByIdList200Response + */ +export interface GetProblemsByIdList200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetProblemsByIdList200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetProblemsByIdList200Response + */ + items: Array; +} +/** + * + * @export + * @interface GetProblemsCountGroupByLevelLevelEntry + */ +export interface GetProblemsCountGroupByLevelLevelEntry { + /** + * + * @type {ProblemLevel} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + level: ProblemLevel; + /** + * 문제 수입니다. + * @type {number} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + count: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetRankingByClass200Response + */ +export interface GetRankingByClass200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetRankingByClass200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetRankingByClass200Response + */ + items: Array; +} +/** + * 고급 검색 관련 자동 완성입니다. + * @export + * @interface GetSearchAutoCompletionsAutoCompleteEntry + */ +export interface GetSearchAutoCompletionsAutoCompleteEntry { + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + description: string; +} +/** + * 요악한 문제 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemEntry + */ +export interface GetSearchAutoCompletionsBriefProblemEntry { + /** + * 문제 ID입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + id: number; + /** + * 문제 제목입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + title: string; + /** + * + * @type {ProblemLevel} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + level: ProblemLevel; + /** + * 푼 사람 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + solved: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + description: string; +} +/** + * 요약한 태그 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemTagEntry + */ +export interface GetSearchAutoCompletionsBriefProblemTagEntry { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + key: string; + /** + * 태그 이름입니다. + * 사용자 언어에 따라 번역되지 않습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + name: string; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + problemCount: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + description: string; +} +/** + * + * @export + * @interface GetSearchAutoCompletionsSuggestion + */ +export interface GetSearchAutoCompletionsSuggestion { + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + autocomplete: Array; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problems: Array; + /** + * 검색 결과로 나올 총 문제 수입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problemCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tags: Array; + /** + * 검색 결과로 나올 총 태그 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tagCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + users: Array; + /** + * 검색 결과로 나올 총 사용자 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + userCount: number; +} +/** + * 사용자 정보입니다. + * @export + * @interface GetSearchAutoCompletionsUserEntry + */ +export interface GetSearchAutoCompletionsUserEntry { + /** + * 사용자명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + _class: GetSearchAutoCompletionsUserEntryClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + classDecoration: GetSearchAutoCompletionsUserEntryClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rank: number; +} + + +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type GetSearchAutoCompletionsUserEntryClassEnum = typeof GetSearchAutoCompletionsUserEntryClassEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassEnum]; + +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum]; + +/** + * + * @export + * @interface GetUserProblemStatsProblemStat + */ +export interface GetUserProblemStatsProblemStat { + /** + * + * @type {ProblemLevel} + * @memberof GetUserProblemStatsProblemStat + */ + level: ProblemLevel; + /** + * solved.ac에 등록된 해당 수준 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + total: number; + /** + * 사용자가 푼 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + solved: number; + /** + * 사용자가 부분 성공한 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + partial: number; + /** + * 사용자가 시도해 본 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + tried: number; +} +/** + * 사용자가 사용할 수 있는 아이템입니다. + * @export + * @interface Item + */ +export interface Item { + /** + * ID입니다. + * @type {string} + * @memberof Item + */ + itemId: string; + /** + * 아이템 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Item + */ + itemImageUrl: string; + /** + * 최대 소유 가능 개수입니다. + * 사람에 따라 다를 수 있습니다. + * @type {number} + * @memberof Item + */ + inventoryMaxUnits: number; + /** + * 사용 가능 여부입니다. + * @type {boolean} + * @memberof Item + */ + usable: boolean; + /** + * 국제화된 이름입니다. + * @type {string} + * @memberof Item + */ + displayName: string; + /** + * 국제화된 설명입니다. + * @type {string} + * @memberof Item + */ + displayDescription: string; +} + +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +export const Language = { + Ko: 'ko', + En: 'en', + Ja: 'ja' +} as const; +export type Language = typeof Language[keyof typeof Language]; + +/** + * solved.ac에 등록한 단체입니다. + * @export + * @interface Organization + */ +export interface Organization { + /** + * ID입니다. + * @type {number} + * @memberof Organization + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof Organization + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof Organization + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof Organization + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof Organization + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof Organization + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof Organization + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof Organization + */ + color: string; +} + +/** + * 단체 유형입니다. + * @export + */ +export const OrganizationType = { + University: 'university', + Company: 'company', + Community: 'community', + HighSchool: 'high_school', + MiddleSchool: 'middle_school', + ElementarySchool: 'elementary_school', + Undefined: 'undefined' +} as const; +export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType]; + +/** + * 문제 정보입니다. + * @export + * @interface Problem + */ +export interface Problem { + /** + * 백준 문제 번호로, 문제마다 고유합니다. + * @type {number} + * @memberof Problem + */ + problemId: number; + /** + * 한국어 문제 제목입니다. + * HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. + * @type {string} + * @memberof Problem + */ + titleKo: string; + /** + * 언어별 문제 제목 목록입니다. + * @type {Array} + * @memberof Problem + */ + titles: Array; + /** + * 채점 가능 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isSolvable: boolean; + /** + * 부분 점수/서브태스크 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isPartial: boolean; + /** + * 맞은 사람 수입니다. + * @type {number} + * @memberof Problem + */ + acceptedUserCount: number; + /** + * + * @type {ProblemLevel} + * @memberof Problem + */ + level: ProblemLevel; + /** + * 난이도 기여자 수입니다. + * @type {number} + * @memberof Problem + */ + votedUserCount: number; + /** + * 새싹 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + sprout: boolean; + /** + * 레이팅을 주지 않는지 여부입니다. + * @type {boolean} + * @memberof Problem + */ + givesNoRating: boolean; + /** + * 난이도 기여 제한 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isLevelLocked: boolean; + /** + * 평균 시도 횟수입니다. + * @type {number} + * @memberof Problem + */ + averageTries: number; + /** + * 공식 문제 여부입니다. + * 번외 문제 등은 비공식 문제로 분류됩니다. + * @type {boolean} + * @memberof Problem + */ + official: boolean; + /** + * 태그 목록입니다. + * @type {Array} + * @memberof Problem + */ + tags: Array; + /** + * + * @type {any} + * @memberof Problem + */ + metadata: any | null; +} + +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +export const ProblemLevel = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30 +} as const; +export type ProblemLevel = typeof ProblemLevel[keyof typeof ProblemLevel]; + +/** + * + * @export + * @interface ProblemTag + */ +export interface ProblemTag { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof ProblemTag + */ + key: string; + /** + * + * @type {boolean} + * @memberof ProblemTag + */ + isMeta: boolean; + /** + * 백준 온라인 저지에서 쓰는 태그 ID입니다. + * @type {number} + * @memberof ProblemTag + */ + bojTagId: number; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof ProblemTag + */ + problemCount: number; + /** + * 언어별 태그 이름 목록입니다. + * @type {Array} + * @memberof ProblemTag + */ + displayNames: Array; + /** + * 별명 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof ProblemTag + */ + aliases: Array; +} +/** + * 태그의 별칭을 나타냅니다. + * @export + * @interface ProblemTagAlias + */ +export interface ProblemTagAlias { + /** + * 별칭입니다 + * @type {string} + * @memberof ProblemTagAlias + */ + alias: string; +} +/** + * + * @export + * @interface ProblemTagNameTranslated + */ +export interface ProblemTagNameTranslated { + /** + * 태그 이름이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTagNameTranslated + */ + language: Language; + /** + * 이름입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + name: string; + /** + * 짧은 이름입니다. + * 따로 없을 경우 `name`과 같은 값입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + _short: string; +} +/** + * 언어별 문제 제목입니다. + * @export + * @interface ProblemTitleTranslated + */ +export interface ProblemTitleTranslated { + /** + * 문제 제목이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTitleTranslated + */ + language: Language; + /** + * 문제 제목이 작성된 언어의 이름입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + languageDisplayName: string; + /** + * 문제 제목입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + title: string; + /** + * 원본과 동일한지 여부입니다. + * @type {boolean} + * @memberof ProblemTitleTranslated + */ + isOriginal: boolean; +} +/** + * + * @export + * @interface RedeemCodeRequest + */ +export interface RedeemCodeRequest { + /** + * 리딤 코드입니다. + * @type {string} + * @memberof RedeemCodeRequest + */ + code: string; +} +/** + * + * @export + * @interface RivalUser + */ +export interface RivalUser { + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof RivalUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof RivalUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof RivalUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof RivalUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof RivalUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof RivalUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof RivalUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof RivalUser + */ + _class: RivalUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof RivalUser + */ + classDecoration: RivalUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof RivalUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof RivalUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof RivalUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof RivalUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof RivalUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof RivalUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof RivalUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof RivalUser + */ + rank: number; +} + + +/** + * @export + */ +export const RivalUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type RivalUserClassEnum = typeof RivalUserClassEnum[keyof typeof RivalUserClassEnum]; + +/** + * @export + */ +export const RivalUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type RivalUserClassDecorationEnum = typeof RivalUserClassDecorationEnum[keyof typeof RivalUserClassDecorationEnum]; + + +/** + * 검색 결과 정렬 방향 + * @export + */ +export const SearchProblemQueryDirection = { + Asc: 'asc', + Desc: 'desc' +} as const; +export type SearchProblemQueryDirection = typeof SearchProblemQueryDirection[keyof typeof SearchProblemQueryDirection]; + + +/** + * 검색 결과 정렬 기준 + * @export + */ +export const SearchProblemQuerySort = { + Id: 'id', + Level: 'level', + Title: 'title', + Solved: 'solved', + AverageTry: 'average_try', + Random: 'random' +} as const; +export type SearchProblemQuerySort = typeof SearchProblemQuerySort[keyof typeof SearchProblemQuerySort]; + +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchProblemTag200Response + */ +export interface SearchProblemTag200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchProblemTag200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchProblemTag200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchUser200Response + */ +export interface SearchUser200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchUser200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchUser200Response + */ + items: Array; +} +/** + * solved.ac 사이트의 통계 정보입니다. + * @export + * @interface SiteStatistics + */ +export interface SiteStatistics { + /** + * 여태까지 색인된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemCount: number; + /** + * 여태까지 난이도가 기여된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemVotedCount: number; + /** + * 여태까지 등록한 사용자 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + userCount: number; + /** + * 여태까지 난이도에 기여한 사용자 수입니다 + * @type {number} + * @memberof SiteStatistics + */ + contributorCount: number; + /** + * 여태까지 이루어진 난이도 기여의 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + contributionCount: number; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface SocialUser + */ +export interface SocialUser { + /** + * 로그인한 사용자가 해당 사용자를 차단했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + blocked: boolean; + /** + * 로그인한 사용자가 해당 사용자에게 차단당했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + reverseBlocked: boolean; + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof SocialUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof SocialUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof SocialUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof SocialUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof SocialUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof SocialUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof SocialUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof SocialUser + */ + _class: SocialUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof SocialUser + */ + classDecoration: SocialUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof SocialUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof SocialUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof SocialUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof SocialUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof SocialUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof SocialUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof SocialUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof SocialUser + */ + rank: number; +} + + +/** + * @export + */ +export const SocialUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type SocialUserClassEnum = typeof SocialUserClassEnum[keyof typeof SocialUserClassEnum]; + +/** + * @export + */ +export const SocialUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type SocialUserClassDecorationEnum = typeof SocialUserClassDecorationEnum[keyof typeof SocialUserClassDecorationEnum]; + + +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +export const SolveTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30, + NUMBER_31: 31 +} as const; +export type SolveTier = typeof SolveTier[keyof typeof SolveTier]; + +/** + * + * @export + * @interface UpdateAccountSettingsRequest + */ +export interface UpdateAccountSettingsRequest { + /** + * 업데이트할 설정의 이름입니다. + * @type {string} + * @memberof UpdateAccountSettingsRequest + */ + key?: string; + /** + * 업데이트할 설정의 새로운 값입니다. + * @type {any} + * @memberof UpdateAccountSettingsRequest + */ + value?: any; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface User + */ +export interface User { + /** + * 사용자명입니다. + * @type {string} + * @memberof User + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof User + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof User + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof User + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof User + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof User + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof User + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof User + */ + _class: UserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof User + */ + classDecoration: UserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof User + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof User + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof User + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof User + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof User + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof User + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof User + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof User + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof User + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof User + */ + rank: number; +} + + +/** + * @export + */ +export const UserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type UserClassEnum = typeof UserClassEnum[keyof typeof UserClassEnum]; + +/** + * @export + */ +export const UserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum]; + +/** + * 사용자 동의 여부입니다. + * @export + * @interface VerifyCredentialsAgreements + */ +export interface VerifyCredentialsAgreements { + /** + * 동의한 약관 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + tos: string; + /** + * 동의한 개인정보 처리방침 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + privacy: string; +} +/** + * + * @export + * @interface VerifyCredentialsCredential + */ +export interface VerifyCredentialsCredential { + /** + * + * @type {VerifyCredentialsUserWithSettings} + * @memberof VerifyCredentialsCredential + */ + user: VerifyCredentialsUserWithSettings; + /** + * + * @type {VerifyCredentialsAgreements} + * @memberof VerifyCredentialsCredential + */ + aggredOn: VerifyCredentialsAgreements; + /** + * 보유할 수 있는 모든 이모티콘에 대해 이모티콘 정보에 덧붙여 보유 여부를 함께 담은 목록입니다. + * @type {Array} + * @memberof VerifyCredentialsCredential + */ + emoticons: Array; + /** + * + * @type {any} + * @memberof VerifyCredentialsCredential + */ + bookmarks: any | null; + /** + * 받은 알림 수입니다. + * @type {number} + * @memberof VerifyCredentialsCredential + */ + notificationCount: number; + /** + * 마지막으로 솔브드 상태가 변한 시각입니다. + * @type {string} + * @memberof VerifyCredentialsCredential + */ + lastSolvedStateChangedAt: string; +} +/** + * + * @export + * @interface VerifyCredentialsEmoticonUnlockStatus + */ +export interface VerifyCredentialsEmoticonUnlockStatus { + /** + * 해금 여부입니다. + * @type {boolean} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + unlocked: boolean; + /** + * 고유 식별자입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + displayName: string; +} +/** + * + * @export + * @interface VerifyCredentialsUserSettings + */ +export interface VerifyCredentialsUserSettings { + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnProblemSolve: VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + screenTheme: VerifyCredentialsUserSettingsScreenThemeEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostHandle: VerifyCredentialsUserSettingsTwitterPostHandleEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnRatingIncrease: VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnTierIncrease: VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnClassIncrease: VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + proHideAds: VerifyCredentialsUserSettingsProHideAdsEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + siteLanguage: VerifyCredentialsUserSettingsSiteLanguageEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showIllustBackground: VerifyCredentialsUserSettingsShowIllustBackgroundEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showMovieBackground: VerifyCredentialsUserSettingsShowMovieBackgroundEnum; +} + + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsScreenThemeEnum = { + Default: 'default' +} as const; +export type VerifyCredentialsUserSettingsScreenThemeEnum = typeof VerifyCredentialsUserSettingsScreenThemeEnum[keyof typeof VerifyCredentialsUserSettingsScreenThemeEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostHandleEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostHandleEnum = typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsProHideAdsEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsProHideAdsEnum = typeof VerifyCredentialsUserSettingsProHideAdsEnum[keyof typeof VerifyCredentialsUserSettingsProHideAdsEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsSiteLanguageEnum = { + Ko: 'ko' +} as const; +export type VerifyCredentialsUserSettingsSiteLanguageEnum = typeof VerifyCredentialsUserSettingsSiteLanguageEnum[keyof typeof VerifyCredentialsUserSettingsSiteLanguageEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowIllustBackgroundEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsShowIllustBackgroundEnum = typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowMovieBackgroundEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsShowMovieBackgroundEnum = typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum]; + +/** + * + * @export + * @interface VerifyCredentialsUserWithSettings + */ +export interface VerifyCredentialsUserWithSettings { + /** + * 설정입니다. + * @type {VerifyCredentialsUserSettings} + * @memberof VerifyCredentialsUserWithSettings + */ + settings: VerifyCredentialsUserSettings; + /** + * 사용 중인 이메일 주소입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + email: string; + /** + * 사용자명입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + _class: VerifyCredentialsUserWithSettingsClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + classDecoration: VerifyCredentialsUserWithSettingsClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof VerifyCredentialsUserWithSettings + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rank: number; +} + + +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type VerifyCredentialsUserWithSettingsClassEnum = typeof VerifyCredentialsUserWithSettingsClassEnum[keyof typeof VerifyCredentialsUserWithSettingsClassEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type VerifyCredentialsUserWithSettingsClassDecorationEnum = typeof VerifyCredentialsUserWithSettingsClassDecorationEnum[keyof typeof VerifyCredentialsUserWithSettingsClassDecorationEnum]; + diff --git a/src/esm/models/mod.ts b/src/esm/models/mod.ts new file mode 100644 index 0000000..2e084e4 --- /dev/null +++ b/src/esm/models/mod.ts @@ -0,0 +1,2810 @@ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Unrated를 0, + * C를 1, + * ..., + * SSS+을 12, + * X를 13으로 표현하는 아레나 티어입니다. + * 자세한 값 정보는 표1. 아레나 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 아레나 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :---------------------------------------------------------------------------------------------- | ---------------------------------------------: | + * | 0 | Unrated | - | + * | 1 | C | 1 | + * | 2 | C+ | 400 | + * | 3 | B | 800 | + * | 4 | B+ | 1000 | + * | 5 | A | 1200 | + * | 6 | A+ | 1400 | + * | 7 | S | 1600 | + * | 8 | S+ | 1800 | + * | 9 | SS | 2000 | + * | 10 | SS+ | 2200 | + * | 11 | SSS | 2400 | + * | 12 | SSS+ | 2600 | + * | 13 | X | 3000 | + * + *
+ * @export + */ +export const ArenaTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13 +} as const; +export type ArenaTier = typeof ArenaTier[keyof typeof ArenaTier]; + +/** + * 사용자가 획득할 수 있는 배경입니다. + * @export + * @interface Background + */ +export interface Background { + /** + * 배경의 고유 ID입니다. + * @type {string} + * @memberof Background + */ + backgroundId: string; + /** + * 배경 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Background + */ + backgroundImageUrl: string; + /** + * 일러스트 배경 보기가 꺼져있을 때 보여줄 수 있는 대안 배경 사진으로 가는 하이퍼링크입니다. + * 일러스트를 포함하지 않은 배경이거나, 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + fallbackBackgroundImageUrl?: string; + /** + * 움직이는 배경이 켜져있을 때 보여줄 수 있는 배경 영상으로 가는 하이퍼링크입니다. + * 배경 제작자가 따로 준비하지 않은 경우 `null` 값일 수 있습니다. + * @type {string} + * @memberof Background + */ + backgroundVideoUrl?: string; + /** + * 배경을 획득한 사용자 수입니다. + * @type {number} + * @memberof Background + */ + unlockedUserCount: number; + /** + * 배경의 표시 이름입니다. + * @type {string} + * @memberof Background + */ + displayName: string; + /** + * 배경의 설명입니다. + * @type {string} + * @memberof Background + */ + displayDescription: string; + /** + * 배경을 얻는 조건입니다. + * 조건이 숨겨진 경우, 해당 값이 내려오지 않습니다. + * @type {string} + * @memberof Background + */ + conditions?: string; + /** + * 배경 획득 조건이 숨겨져 있는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + hiddenConditions: boolean; + /** + * 일러스트 배경인지 여부입니다. + * @type {boolean} + * @memberof Background + */ + isIllust: boolean; + /** + * 배경 획득 유형 분류입니다. + * @type {BackgroundCategory} + * @memberof Background + */ + backgroundCategory: BackgroundCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Background + */ + solvedCompanyRights: boolean; + /** + * 배경을 작업한 작가 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof Background + */ + authors: Array; +} +/** + * 배경을 작업한 작가입니다. + * @export + * @interface BackgroundAuthor + */ +export interface BackgroundAuthor { + /** + * 작가 고유 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorId: string; + /** + * 수행한 역할입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + role: string; + /** + * 작가 홈페이지로 가는 하이퍼링크입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + authorUrl?: string; + /** + * 작가의 solved.ac 핸들입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + handle?: string; + /** + * 작가의 Twitter ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + twitter?: string; + /** + * 작가의 인스타그램 ID입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + instagram?: string; + /** + * 작가의 표시 이름입니다. + * @type {string} + * @memberof BackgroundAuthor + */ + displayName: string; +} + +/** + * 배경 획득 유형 분류입니다. + * @export + */ +export const BackgroundCategory = { + Event: 'event', + Arena: 'arena', + Achievement: 'achievement', + Season: 'season', + Contest: 'contest' +} as const; +export type BackgroundCategory = typeof BackgroundCategory[keyof typeof BackgroundCategory]; + +/** + * 사용자가 획득할 수 있는 뱃지입니다. + * @export + * @interface Badge + */ +export interface Badge { + /** + * 뱃지의 고유 ID입니다. + * @type {string} + * @memberof Badge + */ + badgeId: string; + /** + * 뱃지 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Badge + */ + badgeImageUrl: string; + /** + * 뱃지가 표시되는 이름입니다. + * @type {string} + * @memberof Badge + */ + displayName: string; + /** + * 뱃지의 설명입니다. + * @type {string} + * @memberof Badge + */ + displayDescription: string; + /** + * 뱃지를 획득한 사용자 수입니다. + * @type {number} + * @memberof Badge + */ + unlockedUserCount: number; + /** + * + * @type {BadgeTier} + * @memberof Badge + */ + badgeTier: BadgeTier; + /** + * + * @type {BadgeCategory} + * @memberof Badge + */ + badgeCategory: BadgeCategory; + /** + * solved.ac 회사가 권리를 보유하는지 여부입니다. + * @type {boolean} + * @memberof Badge + */ + solvedCompanyRights: boolean; + /** + * 뱃지가 만들어진 시각입니다. + * @type {string} + * @memberof Badge + */ + createdAt: string; +} + +/** + * 뱃지 획득 유형 분류입니다. + * @export + */ +export const BadgeCategory = { + Achievement: 'achievement', + Season: 'season', + Event: 'event', + Contest: 'contest' +} as const; +export type BadgeCategory = typeof BadgeCategory[keyof typeof BadgeCategory]; + + +/** + * 뱃지의 등급입니다. + * @export + */ +export const BadgeTier = { + Bronze: 'bronze', + Silver: 'silver', + Gold: 'gold', + Master: 'master' +} as const; +export type BadgeTier = typeof BadgeTier[keyof typeof BadgeTier]; + +/** + * 코인샵에서 판매하고 있는 상품입니다. + * @export + * @interface CoinShopProduct + */ +export interface CoinShopProduct { + /** + * 재고(Stock Keeping Unit) ID입니다. + * @type {number} + * @memberof CoinShopProduct + */ + skuId: number; + /** + * + * @type {Item} + * @memberof CoinShopProduct + */ + item: Item; + /** + * 1회 구매 시 획득하는 아이템 개수입니다. + * @type {number} + * @memberof CoinShopProduct + */ + units: number; + /** + * 가격입니다. + * 코인의 경우 나누기 100을 해야 표시 가격이 됩니다. + * @type {number} + * @memberof CoinShopProduct + */ + price: number; + /** + * 가격 단위입니다. + * @type {string} + * @memberof CoinShopProduct + */ + priceUnit: CoinShopProductPriceUnitEnum; + /** + * 아이템 사용 시간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemUseTimeLimited: boolean; + /** + * 아이템 구매 기간 제한 여부입니다. + * @type {boolean} + * @memberof CoinShopProduct + */ + itemSellTimeLimited: boolean; +} + + +/** + * @export + */ +export const CoinShopProductPriceUnitEnum = { + Coins: 'coins', + Stardusts: 'stardusts' +} as const; +export type CoinShopProductPriceUnitEnum = typeof CoinShopProductPriceUnitEnum[keyof typeof CoinShopProductPriceUnitEnum]; + +/** + * 난이도 투표 등에 사용할 수 있는 이모티콘입니다. + * @export + * @interface Emoticon + */ +export interface Emoticon { + /** + * 고유 식별자입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Emoticon + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof Emoticon + */ + displayName: string; +} +/** + * + * @export + * @interface GetClassesProblemCountClassEntry + */ +export interface GetClassesProblemCountClassEntry { + /** + * 클래스 숫자입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + _class: GetClassesProblemCountClassEntryClassEnum; + /** + * 총 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + total: number; + /** + * 에센셜 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + essentials: number; + /** + * 취득에 필요한 문제 수입니다. + * @type {number} + * @memberof GetClassesProblemCountClassEntry + */ + criteria: number; +} + + +/** + * @export + */ +export const GetClassesProblemCountClassEntryClassEnum = { + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type GetClassesProblemCountClassEntryClassEnum = typeof GetClassesProblemCountClassEntryClassEnum[keyof typeof GetClassesProblemCountClassEntryClassEnum]; + +/** + * + * @export + * @interface GetCoinStardustExchangeRateExchangeRate + */ +export interface GetCoinStardustExchangeRateExchangeRate { + /** + * 1 코인을 별조각으로 바꾸는 환율입니다. + * 별조각을 코인으로 환전할 때에는 수수료가 1%(소수점은 내림) 붙습니다. + * @type {number} + * @memberof GetCoinStardustExchangeRateExchangeRate + */ + rate: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200Response + */ +export interface GetOrganizationRankingByACRating200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetOrganizationRankingByACRating200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetOrganizationRankingByACRating200ResponseItemsInner + */ +export interface GetOrganizationRankingByACRating200ResponseItemsInner { + /** + * ID입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + color: string; + /** + * 순위입니다. + * @type {number} + * @memberof GetOrganizationRankingByACRating200ResponseItemsInner + */ + rank: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetProblemsByIdList200Response + */ +export interface GetProblemsByIdList200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetProblemsByIdList200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetProblemsByIdList200Response + */ + items: Array; +} +/** + * + * @export + * @interface GetProblemsCountGroupByLevelLevelEntry + */ +export interface GetProblemsCountGroupByLevelLevelEntry { + /** + * + * @type {ProblemLevel} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + level: ProblemLevel; + /** + * 문제 수입니다. + * @type {number} + * @memberof GetProblemsCountGroupByLevelLevelEntry + */ + count: number; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface GetRankingByClass200Response + */ +export interface GetRankingByClass200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof GetRankingByClass200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof GetRankingByClass200Response + */ + items: Array; +} +/** + * 고급 검색 관련 자동 완성입니다. + * @export + * @interface GetSearchAutoCompletionsAutoCompleteEntry + */ +export interface GetSearchAutoCompletionsAutoCompleteEntry { + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsAutoCompleteEntry + */ + description: string; +} +/** + * 요악한 문제 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemEntry + */ +export interface GetSearchAutoCompletionsBriefProblemEntry { + /** + * 문제 ID입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + id: number; + /** + * 문제 제목입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + title: string; + /** + * + * @type {ProblemLevel} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + level: ProblemLevel; + /** + * 푼 사람 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + solved: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemEntry + */ + description: string; +} +/** + * 요약한 태그 정보입니다. + * @export + * @interface GetSearchAutoCompletionsBriefProblemTagEntry + */ +export interface GetSearchAutoCompletionsBriefProblemTagEntry { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + key: string; + /** + * 태그 이름입니다. + * 사용자 언어에 따라 번역되지 않습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + name: string; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + problemCount: number; + /** + * 자동 완성 제목입니다. + * 만약 href이 없을 경우 누르면 해당 값으로 자동 완성합니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + caption: string; + /** + * 자동 완성 요소의 설명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsBriefProblemTagEntry + */ + description: string; +} +/** + * + * @export + * @interface GetSearchAutoCompletionsSuggestion + */ +export interface GetSearchAutoCompletionsSuggestion { + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + autocomplete: Array; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problems: Array; + /** + * 검색 결과로 나올 총 문제 수입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + problemCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tags: Array; + /** + * 검색 결과로 나올 총 태그 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + tagCount: number; + /** + * + * @type {Array} + * @memberof GetSearchAutoCompletionsSuggestion + */ + users: Array; + /** + * 검색 결과로 나올 총 사용자 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsSuggestion + */ + userCount: number; +} +/** + * 사용자 정보입니다. + * @export + * @interface GetSearchAutoCompletionsUserEntry + */ +export interface GetSearchAutoCompletionsUserEntry { + /** + * 사용자명입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + _class: GetSearchAutoCompletionsUserEntryClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + classDecoration: GetSearchAutoCompletionsUserEntryClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof GetSearchAutoCompletionsUserEntry + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof GetSearchAutoCompletionsUserEntry + */ + rank: number; +} + + +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type GetSearchAutoCompletionsUserEntryClassEnum = typeof GetSearchAutoCompletionsUserEntryClassEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassEnum]; + +/** + * @export + */ +export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum]; + +/** + * + * @export + * @interface GetUserProblemStatsProblemStat + */ +export interface GetUserProblemStatsProblemStat { + /** + * + * @type {ProblemLevel} + * @memberof GetUserProblemStatsProblemStat + */ + level: ProblemLevel; + /** + * solved.ac에 등록된 해당 수준 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + total: number; + /** + * 사용자가 푼 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + solved: number; + /** + * 사용자가 부분 성공한 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + partial: number; + /** + * 사용자가 시도해 본 문제 수입니다. + * @type {number} + * @memberof GetUserProblemStatsProblemStat + */ + tried: number; +} +/** + * 사용자가 사용할 수 있는 아이템입니다. + * @export + * @interface Item + */ +export interface Item { + /** + * ID입니다. + * @type {string} + * @memberof Item + */ + itemId: string; + /** + * 아이템 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof Item + */ + itemImageUrl: string; + /** + * 최대 소유 가능 개수입니다. + * 사람에 따라 다를 수 있습니다. + * @type {number} + * @memberof Item + */ + inventoryMaxUnits: number; + /** + * 사용 가능 여부입니다. + * @type {boolean} + * @memberof Item + */ + usable: boolean; + /** + * 국제화된 이름입니다. + * @type {string} + * @memberof Item + */ + displayName: string; + /** + * 국제화된 설명입니다. + * @type {string} + * @memberof Item + */ + displayDescription: string; +} + +/** + * solved.ac에서 지원하는 사용자 언어입니다 + * @export + */ +export const Language = { + Ko: 'ko', + En: 'en', + Ja: 'ja' +} as const; +export type Language = typeof Language[keyof typeof Language]; + +/** + * solved.ac에 등록한 단체입니다. + * @export + * @interface Organization + */ +export interface Organization { + /** + * ID입니다. + * @type {number} + * @memberof Organization + */ + organizationId: number; + /** + * 이름입니다. + * @type {string} + * @memberof Organization + */ + name: string; + /** + * 유형입니다. + * @type {OrganizationType} + * @memberof Organization + */ + type: OrganizationType; + /** + * 문제풀이 레이팅입니다. + * @type {number} + * @memberof Organization + */ + rating: number; + /** + * 속한 사용자 수입니다. + * @type {number} + * @memberof Organization + */ + userCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof Organization + */ + voteCount: number; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof Organization + */ + solvedCount: number; + /** + * 상징 색입니다. + * @type {string} + * @memberof Organization + */ + color: string; +} + +/** + * 단체 유형입니다. + * @export + */ +export const OrganizationType = { + University: 'university', + Company: 'company', + Community: 'community', + HighSchool: 'high_school', + MiddleSchool: 'middle_school', + ElementarySchool: 'elementary_school', + Undefined: 'undefined' +} as const; +export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType]; + +/** + * 문제 정보입니다. + * @export + * @interface Problem + */ +export interface Problem { + /** + * 백준 문제 번호로, 문제마다 고유합니다. + * @type {number} + * @memberof Problem + */ + problemId: number; + /** + * 한국어 문제 제목입니다. + * HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. + * @type {string} + * @memberof Problem + */ + titleKo: string; + /** + * 언어별 문제 제목 목록입니다. + * @type {Array} + * @memberof Problem + */ + titles: Array; + /** + * 채점 가능 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isSolvable: boolean; + /** + * 부분 점수/서브태스크 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isPartial: boolean; + /** + * 맞은 사람 수입니다. + * @type {number} + * @memberof Problem + */ + acceptedUserCount: number; + /** + * + * @type {ProblemLevel} + * @memberof Problem + */ + level: ProblemLevel; + /** + * 난이도 기여자 수입니다. + * @type {number} + * @memberof Problem + */ + votedUserCount: number; + /** + * 새싹 문제 여부입니다. + * @type {boolean} + * @memberof Problem + */ + sprout: boolean; + /** + * 레이팅을 주지 않는지 여부입니다. + * @type {boolean} + * @memberof Problem + */ + givesNoRating: boolean; + /** + * 난이도 기여 제한 여부입니다. + * @type {boolean} + * @memberof Problem + */ + isLevelLocked: boolean; + /** + * 평균 시도 횟수입니다. + * @type {number} + * @memberof Problem + */ + averageTries: number; + /** + * 공식 문제 여부입니다. + * 번외 문제 등은 비공식 문제로 분류됩니다. + * @type {boolean} + * @memberof Problem + */ + official: boolean; + /** + * 태그 목록입니다. + * @type {Array} + * @memberof Problem + */ + tags: Array; + /** + * + * @type {any} + * @memberof Problem + */ + metadata: any | null; +} + +/** + * Unrated / Not Ratable를 0, + * Bronze V를 1, + * Bronze IV를 2, + * ..., + * Ruby II을 29, + * Ruby I를 30으로 표현하는 문제 난이도입니다. + * 자세한 값 정보는 표1. 문제 난이도 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 난이도 표 + * + * + * | 수치 | 이름 | + * | ---: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + * | 0 | Unrated / Not Ratable | + * | 1 | Bronze V | + * | 2 | Bronze IV | + * | 3 | Bronze III | + * | 4 | Bronze II | + * | 5 | Bronze I | + * | 6 | Silver V | + * | 7 | Silver IV | + * | 8 | Silver III | + * | 9 | Silver II | + * | 10 | Silver I | + * | 11 | Gold V | + * | 12 | Gold IV | + * | 13 | Gold III | + * | 14 | Gold II | + * | 15 | Gold I | + * | 16 | Platinum V | + * | 17 | Platinum IV | + * | 18 | Platinum III | + * | 19 | Platinum II | + * | 20 | Platinum I | + * | 21 | Diamond V | + * | 22 | Diamond IV | + * | 23 | Diamond III | + * | 24 | Diamond II | + * | 25 | Diamond I | + * | 26 | Ruby V | + * | 27 | Ruby IV | + * | 28 | Ruby III | + * | 29 | Ruby II | + * | 30 | Ruby I | + * + *
+ * @export + */ +export const ProblemLevel = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30 +} as const; +export type ProblemLevel = typeof ProblemLevel[keyof typeof ProblemLevel]; + +/** + * + * @export + * @interface ProblemTag + */ +export interface ProblemTag { + /** + * solved.ac에서 쓰는 태그 ID입니다. + * @type {string} + * @memberof ProblemTag + */ + key: string; + /** + * + * @type {boolean} + * @memberof ProblemTag + */ + isMeta: boolean; + /** + * 백준 온라인 저지에서 쓰는 태그 ID입니다. + * @type {number} + * @memberof ProblemTag + */ + bojTagId: number; + /** + * 태그가 붙은 문제 수입니다. + * @type {number} + * @memberof ProblemTag + */ + problemCount: number; + /** + * 언어별 태그 이름 목록입니다. + * @type {Array} + * @memberof ProblemTag + */ + displayNames: Array; + /** + * 별명 목록입니다. 빈 배열일 수 있습니다. + * @type {Array} + * @memberof ProblemTag + */ + aliases: Array; +} +/** + * 태그의 별칭을 나타냅니다. + * @export + * @interface ProblemTagAlias + */ +export interface ProblemTagAlias { + /** + * 별칭입니다 + * @type {string} + * @memberof ProblemTagAlias + */ + alias: string; +} +/** + * + * @export + * @interface ProblemTagNameTranslated + */ +export interface ProblemTagNameTranslated { + /** + * 태그 이름이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTagNameTranslated + */ + language: Language; + /** + * 이름입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + name: string; + /** + * 짧은 이름입니다. + * 따로 없을 경우 `name`과 같은 값입니다. + * @type {string} + * @memberof ProblemTagNameTranslated + */ + _short: string; +} +/** + * 언어별 문제 제목입니다. + * @export + * @interface ProblemTitleTranslated + */ +export interface ProblemTitleTranslated { + /** + * 문제 제목이 작성된 언어입니다. + * @type {Language} + * @memberof ProblemTitleTranslated + */ + language: Language; + /** + * 문제 제목이 작성된 언어의 이름입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + languageDisplayName: string; + /** + * 문제 제목입니다. + * @type {string} + * @memberof ProblemTitleTranslated + */ + title: string; + /** + * 원본과 동일한지 여부입니다. + * @type {boolean} + * @memberof ProblemTitleTranslated + */ + isOriginal: boolean; +} +/** + * + * @export + * @interface RedeemCodeRequest + */ +export interface RedeemCodeRequest { + /** + * 리딤 코드입니다. + * @type {string} + * @memberof RedeemCodeRequest + */ + code: string; +} +/** + * + * @export + * @interface RivalUser + */ +export interface RivalUser { + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof RivalUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof RivalUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof RivalUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof RivalUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof RivalUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof RivalUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof RivalUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof RivalUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof RivalUser + */ + _class: RivalUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof RivalUser + */ + classDecoration: RivalUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof RivalUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof RivalUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof RivalUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof RivalUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof RivalUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof RivalUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof RivalUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof RivalUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof RivalUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof RivalUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof RivalUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof RivalUser + */ + rank: number; +} + + +/** + * @export + */ +export const RivalUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type RivalUserClassEnum = typeof RivalUserClassEnum[keyof typeof RivalUserClassEnum]; + +/** + * @export + */ +export const RivalUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type RivalUserClassDecorationEnum = typeof RivalUserClassDecorationEnum[keyof typeof RivalUserClassDecorationEnum]; + + +/** + * 검색 결과 정렬 방향 + * @export + */ +export const SearchProblemQueryDirection = { + Asc: 'asc', + Desc: 'desc' +} as const; +export type SearchProblemQueryDirection = typeof SearchProblemQueryDirection[keyof typeof SearchProblemQueryDirection]; + + +/** + * 검색 결과 정렬 기준 + * @export + */ +export const SearchProblemQuerySort = { + Id: 'id', + Level: 'level', + Title: 'title', + Solved: 'solved', + AverageTry: 'average_try', + Random: 'random' +} as const; +export type SearchProblemQuerySort = typeof SearchProblemQuerySort[keyof typeof SearchProblemQuerySort]; + +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchProblemTag200Response + */ +export interface SearchProblemTag200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchProblemTag200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchProblemTag200Response + */ + items: Array; +} +/** + * 페이지네이션 가능한 쿼리의 응답 결과입니다. + * @export + * @interface SearchUser200Response + */ +export interface SearchUser200Response { + /** + * 전체 원소 수입니다. + * @type {number} + * @memberof SearchUser200Response + */ + count: number; + /** + * 현재 페이지의 원소 목록입니다. + * @type {Array} + * @memberof SearchUser200Response + */ + items: Array; +} +/** + * solved.ac 사이트의 통계 정보입니다. + * @export + * @interface SiteStatistics + */ +export interface SiteStatistics { + /** + * 여태까지 색인된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemCount: number; + /** + * 여태까지 난이도가 기여된 백준 문제 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + problemVotedCount: number; + /** + * 여태까지 등록한 사용자 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + userCount: number; + /** + * 여태까지 난이도에 기여한 사용자 수입니다 + * @type {number} + * @memberof SiteStatistics + */ + contributorCount: number; + /** + * 여태까지 이루어진 난이도 기여의 수입니다. + * @type {number} + * @memberof SiteStatistics + */ + contributionCount: number; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface SocialUser + */ +export interface SocialUser { + /** + * 로그인한 사용자가 해당 사용자를 차단했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + blocked: boolean; + /** + * 로그인한 사용자가 해당 사용자에게 차단당했는지 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + reverseBlocked: boolean; + /** + * 라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isRival: boolean; + /** + * 역라이벌 여부입니다. + * @type {boolean} + * @memberof SocialUser + */ + isReverseRival: boolean; + /** + * 사용자명입니다. + * @type {string} + * @memberof SocialUser + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof SocialUser + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof SocialUser + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof SocialUser + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof SocialUser + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof SocialUser + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof SocialUser + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof SocialUser + */ + _class: SocialUserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof SocialUser + */ + classDecoration: SocialUserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof SocialUser + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof SocialUser + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof SocialUser + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof SocialUser + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof SocialUser + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof SocialUser + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof SocialUser + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof SocialUser + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof SocialUser + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof SocialUser + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof SocialUser + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof SocialUser + */ + rank: number; +} + + +/** + * @export + */ +export const SocialUserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type SocialUserClassEnum = typeof SocialUserClassEnum[keyof typeof SocialUserClassEnum]; + +/** + * @export + */ +export const SocialUserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type SocialUserClassDecorationEnum = typeof SocialUserClassDecorationEnum[keyof typeof SocialUserClassDecorationEnum]; + + +/** + * Unrated를 0, + * Bronze V를 1, + * ..., + * Ruby I을 30, + * Master를 31로 표현하는 문제해결 티어입니다. + * 자세한 값 정보는 표1. 문제 풀이 레이팅 표를 펼쳐 참고하십시오. + * + *
+ * + * 표1. 문제 풀이 레이팅 표 + * + * + * | 수치 | 이름 | 요구 레이팅 | + * | ---: | :------------------------------------------------------------------------------------------------------ | --------------------------------------------------: | + * | 0 | Unrated | 0 | + * | 1 | Bronze V | 30 | + * | 2 | Bronze IV | 60 | + * | 3 | Bronze III | 90 | + * | 4 | Bronze II | 120 | + * | 5 | Bronze I | 150 | + * | 6 | Silver V | 200 | + * | 7 | Silver IV | 300 | + * | 8 | Silver III | 400 | + * | 9 | Silver II | 500 | + * | 10 | Silver I | 650 | + * | 11 | Gold V | 800 | + * | 12 | Gold IV | 950 | + * | 13 | Gold III | 1100 | + * | 14 | Gold II | 1250 | + * | 15 | Gold I | 1400 | + * | 16 | Platinum V | 1600 | + * | 17 | Platinum IV | 1750 | + * | 18 | Platinum III | 1900 | + * | 19 | Platinum II | 2000 | + * | 20 | Platinum I | 2100 | + * | 21 | Diamond V | 2200 | + * | 22 | Diamond IV | 2300 | + * | 23 | Diamond III | 2400 | + * | 24 | Diamond II | 2500 | + * | 25 | Diamond I | 2600 | + * | 26 | Ruby V | 2700 | + * | 27 | Ruby IV | 2800 | + * | 28 | Ruby III | 2850 | + * | 29 | Ruby II | 2900 | + * | 30 | Ruby I | 2950 | + * | 31 | Master | 3000 | + * + *
+ * @export + */ +export const SolveTier = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10, + NUMBER_11: 11, + NUMBER_12: 12, + NUMBER_13: 13, + NUMBER_14: 14, + NUMBER_15: 15, + NUMBER_16: 16, + NUMBER_17: 17, + NUMBER_18: 18, + NUMBER_19: 19, + NUMBER_20: 20, + NUMBER_21: 21, + NUMBER_22: 22, + NUMBER_23: 23, + NUMBER_24: 24, + NUMBER_25: 25, + NUMBER_26: 26, + NUMBER_27: 27, + NUMBER_28: 28, + NUMBER_29: 29, + NUMBER_30: 30, + NUMBER_31: 31 +} as const; +export type SolveTier = typeof SolveTier[keyof typeof SolveTier]; + +/** + * + * @export + * @interface UpdateAccountSettingsRequest + */ +export interface UpdateAccountSettingsRequest { + /** + * 업데이트할 설정의 이름입니다. + * @type {string} + * @memberof UpdateAccountSettingsRequest + */ + key?: string; + /** + * 업데이트할 설정의 새로운 값입니다. + * @type {any} + * @memberof UpdateAccountSettingsRequest + */ + value?: any; +} +/** + * solved.ac 사용자 정보입니다. + * @export + * @interface User + */ +export interface User { + /** + * 사용자명입니다. + * @type {string} + * @memberof User + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof User + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof User + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof User + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof User + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof User + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof User + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof User + */ + _class: UserClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof User + */ + classDecoration: UserClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof User + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof User + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof User + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof User + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof User + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof User + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof User + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof User + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof User + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof User + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof User + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof User + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof User + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof User + */ + rank: number; +} + + +/** + * @export + */ +export const UserClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type UserClassEnum = typeof UserClassEnum[keyof typeof UserClassEnum]; + +/** + * @export + */ +export const UserClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum]; + +/** + * 사용자 동의 여부입니다. + * @export + * @interface VerifyCredentialsAgreements + */ +export interface VerifyCredentialsAgreements { + /** + * 동의한 약관 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + tos: string; + /** + * 동의한 개인정보 처리방침 버전입니다. + * @type {string} + * @memberof VerifyCredentialsAgreements + */ + privacy: string; +} +/** + * + * @export + * @interface VerifyCredentialsCredential + */ +export interface VerifyCredentialsCredential { + /** + * + * @type {VerifyCredentialsUserWithSettings} + * @memberof VerifyCredentialsCredential + */ + user: VerifyCredentialsUserWithSettings; + /** + * + * @type {VerifyCredentialsAgreements} + * @memberof VerifyCredentialsCredential + */ + aggredOn: VerifyCredentialsAgreements; + /** + * 보유할 수 있는 모든 이모티콘에 대해 이모티콘 정보에 덧붙여 보유 여부를 함께 담은 목록입니다. + * @type {Array} + * @memberof VerifyCredentialsCredential + */ + emoticons: Array; + /** + * + * @type {any} + * @memberof VerifyCredentialsCredential + */ + bookmarks: any | null; + /** + * 받은 알림 수입니다. + * @type {number} + * @memberof VerifyCredentialsCredential + */ + notificationCount: number; + /** + * 마지막으로 솔브드 상태가 변한 시각입니다. + * @type {string} + * @memberof VerifyCredentialsCredential + */ + lastSolvedStateChangedAt: string; +} +/** + * + * @export + * @interface VerifyCredentialsEmoticonUnlockStatus + */ +export interface VerifyCredentialsEmoticonUnlockStatus { + /** + * 해금 여부입니다. + * @type {boolean} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + unlocked: boolean; + /** + * 고유 식별자입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonId: string; + /** + * 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + emoticonUrl: string; + /** + * 한국어 이름입니다. + * @type {string} + * @memberof VerifyCredentialsEmoticonUnlockStatus + */ + displayName: string; +} +/** + * + * @export + * @interface VerifyCredentialsUserSettings + */ +export interface VerifyCredentialsUserSettings { + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnProblemSolve: VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + screenTheme: VerifyCredentialsUserSettingsScreenThemeEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostHandle: VerifyCredentialsUserSettingsTwitterPostHandleEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnRatingIncrease: VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnTierIncrease: VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + twitterPostOnClassIncrease: VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + proHideAds: VerifyCredentialsUserSettingsProHideAdsEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + siteLanguage: VerifyCredentialsUserSettingsSiteLanguageEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showIllustBackground: VerifyCredentialsUserSettingsShowIllustBackgroundEnum; + /** + * + * @type {string} + * @memberof VerifyCredentialsUserSettings + */ + showMovieBackground: VerifyCredentialsUserSettingsShowMovieBackgroundEnum; +} + + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnProblemSolveEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsScreenThemeEnum = { + Default: 'default' +} as const; +export type VerifyCredentialsUserSettingsScreenThemeEnum = typeof VerifyCredentialsUserSettingsScreenThemeEnum[keyof typeof VerifyCredentialsUserSettingsScreenThemeEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostHandleEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostHandleEnum = typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostHandleEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnRatingIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnTierIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum = typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum[keyof typeof VerifyCredentialsUserSettingsTwitterPostOnClassIncreaseEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsProHideAdsEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsProHideAdsEnum = typeof VerifyCredentialsUserSettingsProHideAdsEnum[keyof typeof VerifyCredentialsUserSettingsProHideAdsEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsSiteLanguageEnum = { + Ko: 'ko' +} as const; +export type VerifyCredentialsUserSettingsSiteLanguageEnum = typeof VerifyCredentialsUserSettingsSiteLanguageEnum[keyof typeof VerifyCredentialsUserSettingsSiteLanguageEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowIllustBackgroundEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsShowIllustBackgroundEnum = typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowIllustBackgroundEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserSettingsShowMovieBackgroundEnum = { + True: 'true' +} as const; +export type VerifyCredentialsUserSettingsShowMovieBackgroundEnum = typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum[keyof typeof VerifyCredentialsUserSettingsShowMovieBackgroundEnum]; + +/** + * + * @export + * @interface VerifyCredentialsUserWithSettings + */ +export interface VerifyCredentialsUserWithSettings { + /** + * 설정입니다. + * @type {VerifyCredentialsUserSettings} + * @memberof VerifyCredentialsUserWithSettings + */ + settings: VerifyCredentialsUserSettings; + /** + * 사용 중인 이메일 주소입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + email: string; + /** + * 사용자명입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + handle: string; + /** + * 자기소개입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bio: string; + /** + * 장착 중인 뱃지 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + badgeId?: string; + /** + * 장착 중인 배경 ID입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + backgroundId: string; + /** + * 프로필 사진으로 가는 하이퍼링크입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + profileImageUrl?: string; + /** + * 푼 문제 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + solvedCount: number; + /** + * 난이도 기여 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + voteCount: number; + /** + * 취득한 CLASS입니다. + * 취득한 CLASS가 없다면 0으로 표현합니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + _class: VerifyCredentialsUserWithSettingsClassEnum; + /** + * CLASS 완성도에 따른 장식입니다. + * 장식 없음 (`"none"`), + * 은장+ (`"silver"`), + * 금장++ (`"gold"`)이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + classDecoration: VerifyCredentialsUserWithSettingsClassDecorationEnum; + /** + * 라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rivalCount: number; + /** + * 역라이벌 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + reverseRivalCount: number; + /** + * + * @type {SolveTier} + * @memberof VerifyCredentialsUserWithSettings + */ + tier: SolveTier; + /** + * 문제풀이 레이팅입니다 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rating: number; + /** + * 상위 100 문제 난이도 합으로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByProblemsSum: number; + /** + * 취득한 CLASS에 따라 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByClass: number; + /** + * 푼 문제 수로 얻은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingBySolvedCount: number; + /** + * 문제 난이도에 기여한 횟수로 받은 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + ratingByVoteCount: number; + /** + * 현재 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaTier: ArenaTier; + /** + * 현재 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaRating: number; + /** + * 역대 받은 아레나 티어 중 최고점일 때의 아레나 티어입니다. + * @type {ArenaTier} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxTier: ArenaTier; + /** + * 역대 받은 아레나 레이팅 중 최고점일 때의 아레나 레이팅입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaMaxRating: number; + /** + * 참여한 아레나 라운드 수입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + arenaCompetedRoundCount: number; + /** + * 유지한 최대 스트릭의 길이입니다. (일 단위) + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + maxStreak: number; + /** + * 보유 중인 코인에 100을 곱한 값입니다. + * 만약, 실제로 보유한 코인이 0.15라면 15로 기록됩니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + coins: number; + /** + * 보유 중인 별가루 양입니다. + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + stardusts: number; + /** + * 가입 시각입니다. + * 일부 계정에 대해 2021년 6월 19일 0시 (UTC)로 백필된 흔적이 있습니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + joinedAt: string; + /** + * 정지 종료 시각입니다. + * 정지 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + bannedUntil: string; + /** + * [솔브드 서포터](https://solved.ac/support) 종료 시각입니다. + * 활성화 이력이 없을 경우 Unix Timestamp 0 값을 포매팅한 문자열입니다. + * @type {string} + * @memberof VerifyCredentialsUserWithSettings + */ + proUntil: string; + /** + * 순위입니다. + * 이 값은 요청하는 엔드포인트의 정렬 기준에 따라 다를 수 있습니다. + * 예) /ranking/* 엔드포인트에서는 해당 랭킹의 순위, /show 엔드포인트에서는 문제풀이 레이팅 순위 + * @type {number} + * @memberof VerifyCredentialsUserWithSettings + */ + rank: number; +} + + +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassEnum = { + NUMBER_0: 0, + NUMBER_1: 1, + NUMBER_2: 2, + NUMBER_3: 3, + NUMBER_4: 4, + NUMBER_5: 5, + NUMBER_6: 6, + NUMBER_7: 7, + NUMBER_8: 8, + NUMBER_9: 9, + NUMBER_10: 10 +} as const; +export type VerifyCredentialsUserWithSettingsClassEnum = typeof VerifyCredentialsUserWithSettingsClassEnum[keyof typeof VerifyCredentialsUserWithSettingsClassEnum]; + +/** + * @export + */ +export const VerifyCredentialsUserWithSettingsClassDecorationEnum = { + None: 'none', + Silver: 'silver', + Gold: 'gold' +} as const; +export type VerifyCredentialsUserWithSettingsClassDecorationEnum = typeof VerifyCredentialsUserWithSettingsClassDecorationEnum[keyof typeof VerifyCredentialsUserWithSettingsClassDecorationEnum]; + diff --git a/src/runtime.ts b/src/esm/runtime.ts similarity index 54% rename from src/runtime.ts rename to src/esm/runtime.ts index 1032c70..5bf5b46 100644 --- a/src/runtime.ts +++ b/src/esm/runtime.ts @@ -2,10 +2,10 @@ /* eslint-disable */ /** * @solvedac/unofficial-documentation - * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) + * 이 프로젝트는 [solved.ac](https://solved.ac/) API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solved.ac 서비스는 shiftpsh가 기획·개발·디자인·운영하는 프로젝트로, 이 저장소와는 solved.ac의 API를 문서화해둔 것 이외에는 아무런 관련이 없습니다. [GitHub에서 보기](https://github.com/solvedac/unofficial-documentation) **주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다. ![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png) * - * The version of the OpenAPI document: 3.2022.02+b1 - * Contact: public.ranolp@gmail.com + * The version of the OpenAPI document: 3.2024.03+b1 + * Contact: me@ranolp.dev * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech @@ -15,16 +15,86 @@ export const BASE_PATH = "https://solved.ac/api/v3".replace(/\/+$/, ""); -const isBlob = (value: any) => typeof Blob !== 'undefined' && value instanceof Blob; +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | Promise | ((name: string) => string | Promise); // parameter for apiKey security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string | Promise) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); /** * This is the base class for all generated API classes. */ export class BaseAPI { + private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); private middleware: Middleware[]; - constructor(protected configuration = new Configuration()) { + constructor(protected configuration = DefaultConfig) { this.middleware = configuration.middleware; } @@ -44,16 +114,33 @@ export class BaseAPI { return this.withMiddleware(...middlewares); } - protected async request(context: RequestOpts, initOverrides?: RequestInit): Promise { - const { url, init } = this.createFetchParams(context, initOverrides); + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); const response = await this.fetchApi(url, init); - if (response.status >= 200 && response.status < 300) { + if (response && (response.status >= 200 && response.status < 300)) { return response; } - throw response; + throw new ResponseError(response, 'Response returned an error code'); } - private createFetchParams(context: RequestOpts, initOverrides?: RequestInit) { + private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) { let url = this.configuration.basePath + context.path; if (context.query !== undefined && Object.keys(context.query).length !== 0) { // only add the querystring to the URL if there are query parameters. @@ -61,18 +148,46 @@ export class BaseAPI { // do not handle correctly sometimes. url += '?' + this.configuration.queryParamsStringify(context.query); } - const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); - const init = { + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + + const initOverrideFn = + typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + + const initParams = { method: context.method, - headers: headers, - body, + headers, + body: context.body, credentials: this.configuration.credentials, - ...initOverrides }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })) + }; + + let body: any; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body + }; + return { url, init }; } @@ -86,7 +201,29 @@ export class BaseAPI { }) || fetchParams; } } - let response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } else { + throw e; + } + } + } for (const middleware of this.middleware) { if (middleware.post) { response = await middleware.post({ @@ -112,8 +249,30 @@ export class BaseAPI { } }; +function isBlob(value: any): value is Blob { + return typeof Blob !== 'undefined' && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor(public response: Response, msg?: string) { + super(msg); + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor(public cause: Error, msg?: string) { + super(msg); + } +} + export class RequiredError extends Error { - name: "RequiredError" = "RequiredError"; + override name: "RequiredError" = "RequiredError"; constructor(public field: string, msg?: string) { super(msg); } @@ -128,78 +287,16 @@ export const COLLECTION_FORMATS = { export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; -export interface ConfigurationParameters { - basePath?: string; // override base path - fetchApi?: FetchAPI; // override for fetch implementation - middleware?: Middleware[]; // middleware to apply before/after fetch requests - queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings - username?: string; // parameter for basic security - password?: string; // parameter for basic security - apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security - headers?: HTTPHeaders; //header params we want to use on every request - credentials?: RequestCredentials; //value for the credentials param we want to use on each request -} - -export class Configuration { - constructor(private configuration: ConfigurationParameters = {}) {} - - get basePath(): string { - return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; - } - - get fetchApi(): FetchAPI | undefined { - return this.configuration.fetchApi; - } - - get middleware(): Middleware[] { - return this.configuration.middleware || []; - } - - get queryParamsStringify(): (params: HTTPQuery) => string { - return this.configuration.queryParamsStringify || querystring; - } - - get username(): string | undefined { - return this.configuration.username; - } - - get password(): string | undefined { - return this.configuration.password; - } - - get apiKey(): ((name: string) => string) | undefined { - const apiKey = this.configuration.apiKey; - if (apiKey) { - return typeof apiKey === 'function' ? apiKey : () => apiKey; - } - return undefined; - } - - get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { - const accessToken = this.configuration.accessToken; - if (accessToken) { - return typeof accessToken === 'function' ? accessToken : async () => accessToken; - } - return undefined; - } - - get headers(): HTTPHeaders | undefined { - return this.configuration.headers; - } - - get credentials(): RequestCredentials | undefined { - return this.configuration.credentials; - } -} - export type Json = any; export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; export type HTTPHeaders = { [key: string]: string }; -export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | HTTPQuery }; +export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | Set | HTTPQuery }; export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody }; export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; +export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise + export interface FetchParams { url: string; init: RequestInit; @@ -213,40 +310,34 @@ export interface RequestOpts { body?: HTTPBody; } -export function exists(json: any, key: string) { - const value = json[key]; - return value !== null && value !== undefined; -} - export function querystring(params: HTTPQuery, prefix: string = ''): string { return Object.keys(params) - .map((key) => { - const fullKey = prefix + (prefix.length ? `[${key}]` : key); - const value = params[key]; - if (value instanceof Array) { - const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) - .join(`&${encodeURIComponent(fullKey)}=`); - return `${encodeURIComponent(fullKey)}=${multiValue}`; - } - if (value instanceof Date) { - return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; - } - if (value instanceof Object) { - return querystring(value as HTTPQuery, fullKey); - } - return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; - }) + .map(key => querystringSingleKey(key, params[key], prefix)) .filter(part => part.length > 0) .join('&'); } -export function mapValues(data: any, fn: (item: any) => any) { - return Object.keys(data).reduce( - (acc, key) => ({ ...acc, [key]: fn(data[key]) }), - {} - ); +function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array | Set | HTTPQuery, keyPrefix: string = ''): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; } + export function canConsumeForm(consumes: Consume[]): boolean { for (const consume of consumes) { if ('multipart/form-data' === consume.contentType) { @@ -257,7 +348,7 @@ export function canConsumeForm(consumes: Consume[]): boolean { } export interface Consume { - contentType: string + contentType: string; } export interface RequestContext { @@ -273,9 +364,18 @@ export interface ResponseContext { response: Response; } +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + export interface Middleware { pre?(context: RequestContext): Promise; post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; } export interface ApiResponse { diff --git a/src/models/index.ts b/src/models/index.ts deleted file mode 100644 index 00238bd..0000000 --- a/src/models/index.ts +++ /dev/null @@ -1,1977 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * 사용자가 사용할 수 있는 배경입니다. - * @export - * @interface Background - */ -export interface Background { - /** - * 배경의 ID입니다. - * @type {string} - * @memberof Background - */ - backgroundId: string; - /** - * 배경 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundImageUrl: string; - /** - * 배경 사진이 없을 때 대체로 사용할 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - fallbackBackgroundImageUrl?: string | null; - /** - * 배경 비디오로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundVideoUrl?: string | null; - /** - * 해당 배경을 획득한 사용자의 수입니다. - * @type {number} - * @memberof Background - */ - unlockedUserCount: number; - /** - * 배경의 이름입니다. - * @type {string} - * @memberof Background - */ - displayName: string; - /** - * 배경의 설명입니다. - * @type {string} - * @memberof Background - */ - displayDescription: string; - /** - * 해당 배경을 얻을 수 있는 조건입니다. - * @type {string} - * @memberof Background - */ - conditions: string; - /** - * 해당 배경을 얻을 수 있는 조건이 숨겨져 있는지 여부입니다. - * @type {boolean} - * @memberof Background - */ - hiddenConditions: boolean; - /** - * 해당 배경이 일러스트인지 여부입니다. - * @type {boolean} - * @memberof Background - */ - isIllust: boolean; - /** - * 해당 배경을 만든 사람들의 정보입니다. - * @type {Array} - * @memberof Background - */ - authors: Array; -} -/** - * - * @export - * @interface BackgroundAuthors - */ -export interface BackgroundAuthors { - /** - * 작가의 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorId?: string; - /** - * 작가의 역할입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - role?: string; - /** - * 작가의 홈페이지로 가는 하이퍼링크입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorUrl?: string | null; - /** - * 작가의 사용자 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - handle?: string; - /** - * 작가의 트위터 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - twitter?: string | null; - /** - * 작가의 인스타그램 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - instagram?: string | null; - /** - * 작가의 이름입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - displayName?: string; -} -/** - * 사용자가 사용할 수 있는 뱃지입니다. - * @export - * @interface Badge - */ -export interface Badge { - /** - * 뱃지의 ID입니다. - * @type {string} - * @memberof Badge - */ - badgeId: string; - /** - * 뱃지 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Badge - */ - badgeImageUrl: string; - /** - * 뱃지의 이름입니다. - * @type {string} - * @memberof Badge - */ - displayName: string; - /** - * 뱃지의 설명입니다. - * @type {string} - * @memberof Badge - */ - displayDescription: string; - /** - * - * @type {BadgeTier} - * @memberof Badge - */ - badgeTier?: BadgeTier; - /** - * - * @type {BadgeCategory} - * @memberof Badge - */ - badgeCategory?: BadgeCategory; -} -/** - * 뱃지 종류입니다. - * @export - * @enum {string} - */ -export enum BadgeCategory { - Achievement = 'achievement', - Season = 'season', - Event = 'event', - Contest = 'contest' -} -/** - * 뱃지 티어입니다. - * @export - * @enum {string} - */ -export enum BadgeTier { - Bronze = 'bronze', - Silver = 'silver', - Gold = 'gold', - Master = 'master' -} -/** - * 클래스 치장입니다. - * @export - * @enum {string} - */ -export enum ClassDecoration { - None = 'none', - Silver = 'silver', - Gold = 'gold' -} -/** - * 코인샵에서 판매하고 있는 상품입니다. - * @export - * @interface CoinshopProduct - */ -export interface CoinshopProduct { - /** - * 상품의 ID입니다. - * @type {number} - * @memberof CoinshopProduct - */ - skuId: number; - /** - * - * @type {Item} - * @memberof CoinshopProduct - */ - item?: Item; - /** - * 1회 구매에 획득하는 개수입니다. - * @type {number} - * @memberof CoinshopProduct - */ - units?: number; - /** - * 가격입니다. 별조각의 경우 나누기 100을 해야 표시 가격이 됩니다. - * @type {number} - * @memberof CoinshopProduct - */ - price?: number; - /** - * 가격의 단위입니다. - * @type {string} - * @memberof CoinshopProduct - */ - priceUnit?: CoinshopProductPriceUnitEnum; - /** - * 아이템 사용 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemUseTimeLimited?: boolean; - /** - * 아이템 구매 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemSellTimeLimited?: boolean; -} - -/** -* @export -* @enum {string} -*/ -export enum CoinshopProductPriceUnitEnum { - Coins = 'coins', - Stardusts = 'stardusts' -} -/** - * 사용자 정보입니다. - * @export - * @interface FullUser - */ -export interface FullUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof FullUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof FullUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof FullUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof FullUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof FullUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof FullUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof FullUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof FullUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof FullUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof FullUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof FullUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof FullUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof FullUser - */ - rank: number; - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isReverseRival?: boolean; -} -/** - * - * @export - * @interface FullUserAllOf - */ -export interface FullUserAllOf { - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isReverseRival?: boolean; -} -/** - * 난이도 아이콘 표시 정책입니다. - * @export - * @enum {string} - */ -export enum IconScheme { - Default = 'default', - HideWarn = 'hide-warn', - Hide = 'hide' -} -/** - * - * @export - * @interface InlineObject - */ -export interface InlineObject { - /** - * 리딤 코드입니다. - * @type {string} - * @memberof InlineObject - */ - code?: string; -} -/** - * - * @export - * @interface InlineObject1 - */ -export interface InlineObject1 { - /** - * 업데이트할 설정의 이름입니다. - * @type {string} - * @memberof InlineObject1 - */ - key?: string; - /** - * 업데이트할 설정의 새로운 값입니다. - * @type {object} - * @memberof InlineObject1 - */ - value?: object; -} -/** - * - * @export - * @interface InlineResponse200 - */ -export interface InlineResponse200 { - /** - * 계정의 사용자 정보입니다. - * @type {User & object} - * @memberof InlineResponse200 - */ - user?: User & object; - /** - * 해당 계정의 사용자가 푼 문제 정보입니다. - * @type {Array} - * @memberof InlineResponse200 - */ - solved?: Array; -} -/** - * - * @export - * @interface InlineResponse2001 - */ -export interface InlineResponse2001 { - /** - * 코인 → 별조각 환율입니다. 수수료 1%는 제외되어 있습니다. - * @type {number} - * @memberof InlineResponse2001 - */ - rate?: number; -} -/** - * - * @export - * @interface InlineResponse20010 - */ -export interface InlineResponse20010 { - /** - * 순위가 배정된 조직의 수입니다. - * @type {number} - * @memberof InlineResponse20010 - */ - count?: number; - /** - * 레이팅 순위로 정렬된 조직 목록입니다. - * @type {Array} - * @memberof InlineResponse20010 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20011 - */ -export interface InlineResponse20011 { - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20011 - */ - count?: number; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20011 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20012 - */ -export interface InlineResponse20012 { - /** - * - * @type {Array} - * @memberof InlineResponse20012 - */ - autocomplete?: Array; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - problems?: Array; - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - problemCount?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - users?: Array; - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - userCount?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - tags?: Array; - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - tagCount?: number; -} -/** - * - * @export - * @interface InlineResponse20012Autocomplete - */ -export interface InlineResponse20012Autocomplete { - /** - * 자동완성 제목입니다. 해당 값으로 자동완성됩니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - caption?: string; - /** - * 자동완성 요소에 대한 설명입니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - description?: string; -} -/** - * - * @export - * @interface InlineResponse20013 - */ -export interface InlineResponse20013 { - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20013 - */ - count?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20013 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20014 - */ -export interface InlineResponse20014 { - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20014 - */ - count?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20014 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20015 - */ -export interface InlineResponse20015 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse20015 - */ - level?: number; - /** - * solved.ac에 등록된 해당 레벨의 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - total?: number; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - solved?: number; - /** - * 사용자가 부분 성공한 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - partial?: number; - /** - * 사용자가 시도해본 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - tried?: number; - /** - * 사용자가 해당 레벨에서 획득한 경험치의 합입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - exp?: number; -} -/** - * - * @export - * @interface InlineResponse2002 - */ -export interface InlineResponse2002 { - /** - * - * @type {number} - * @memberof InlineResponse2002 - */ - _class?: number; - /** - * 이 CLASS에 속한 에센셜이 아닌 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - total?: number; - /** - * 이 CLASS에 속한 에센셜 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - essentials?: number; - /** - * 이 CLASS를 취득하기 위한 최소 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - criteria?: number; -} -/** - * - * @export - * @interface InlineResponse2003 - */ -export interface InlineResponse2003 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse2003 - */ - level?: number; - /** - * 이 문제 수준인 문제 수입니다. - * @type {number} - * @memberof InlineResponse2003 - */ - count?: number; -} -/** - * - * @export - * @interface InlineResponse2004 - */ -export interface InlineResponse2004 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2004 - */ - count?: number; - /** - * 티어 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2004 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2005 - */ -export interface InlineResponse2005 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2005 - */ - count?: number; - /** - * CLASS 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2005 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2006 - */ -export interface InlineResponse2006 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2006 - */ - count?: number; - /** - * 최장 스트릭 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2006 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2007 - */ -export interface InlineResponse2007 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2007 - */ - count?: number; - /** - * 기여 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2007 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2008 - */ -export interface InlineResponse2008 { - /** - * 순위가 배정된 라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2008 - */ - count?: number; - /** - * 티어 순위로 정렬된 라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2008 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2009 - */ -export interface InlineResponse2009 { - /** - * 순위가 배정된 역라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2009 - */ - count?: number; - /** - * 티어 순위로 정렬된 역라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2009 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse200Solved - */ -export interface InlineResponse200Solved { - /** - * 문제 ID입니다. - * @type {number} - * @memberof InlineResponse200Solved - */ - id?: number; - /** - * 현재 문제 풀이 상태입니다. 알려진 값은 다음이 있습니다. - * `"solved"`, `"tried"` - * @type {string} - * @memberof InlineResponse200Solved - */ - status?: string; -} -/** - * 사용자가 사용할 수 있는 아이템입니다. - * @export - * @interface Item - */ -export interface Item { - /** - * 아이템의 ID입니다. - * @type {string} - * @memberof Item - */ - itemId: string; - /** - * 아이템 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Item - */ - itemImageUrl: string; - /** - * 최대 소유 가능 개수입니다. 호출자에 따라 달라질 수 있습니다. - * @type {number} - * @memberof Item - */ - inventoryMaxUnits: number; - /** - * 아이템 사용 가능 여부입니다. - * @type {boolean} - * @memberof Item - */ - usable: boolean; - /** - * 아이템의 이름입니다. - * @type {string} - * @memberof Item - */ - displayName: string; - /** - * 아이템의 설명입니다. - * @type {string} - * @memberof Item - */ - displayDescription: string; -} -/** - * 언어입니다. - * @export - * @enum {string} - */ -export enum Language { - Ko = 'ko', - En = 'en' -} -/** - * - * @export - * @interface Organization - */ -export interface Organization { - /** - * 조직의 ID입니다. - * @type {number} - * @memberof Organization - */ - organizationId?: number; - /** - * 조직의 이름입니다. - * @type {string} - * @memberof Organization - */ - name?: string; - /** - * 조직의 구분입니다. - * @type {string} - * @memberof Organization - */ - type?: OrganizationTypeEnum; - /** - * 조직의 레이팅입니다. - * @type {number} - * @memberof Organization - */ - rating?: number; - /** - * 조직에 포함된 사용자의 수입니다. - * @type {number} - * @memberof Organization - */ - userCount?: number; - /** - * 조직의 총 난이도 기여 수입니다. - * @type {number} - * @memberof Organization - */ - voteCount?: number; - /** - * 조직의 총 푼 문제 수입니다. - * @type {number} - * @memberof Organization - */ - solvedCount?: number; - /** - * 조직의 색깔입니다. - * @type {string} - * @memberof Organization - */ - color?: string; -} - -/** -* @export -* @enum {string} -*/ -export enum OrganizationTypeEnum { - Community = 'community', - University = 'university', - Company = 'company', - HighSchool = 'high_school' -} -/** - * 문제 정보입니다. - * @export - * @interface Problem - */ -export interface Problem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof Problem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof Problem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof Problem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof Problem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof Problem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof Problem - */ - averageTries?: number; -} -/** - * - * @export - * @interface ProblemTag - */ -export interface ProblemTag { - /** - * 태그의 ID입니다. - * @type {string} - * @memberof ProblemTag - */ - key?: string; - /** - * - * @type {boolean} - * @memberof ProblemTag - */ - isMeta?: boolean; - /** - * 백준에서 사용되는 이 태그의 ID입니다. - * @type {number} - * @memberof ProblemTag - */ - bojTagId?: number; - /** - * 이 태그를 포함하는 문제의 수입니다. - * @type {number} - * @memberof ProblemTag - */ - problemCount?: number; - /** - * 언어별 태그의 이름 목록입니다. - * @type {Array} - * @memberof ProblemTag - */ - displayNames?: Array; - /** - * 태그의 별칭입니다. - * @type {Array} - * @memberof ProblemTag - */ - aliases?: Array; -} -/** - * - * @export - * @interface ProblemTagAliases - */ -export interface ProblemTagAliases { - /** - * 별칭입니다. - * @type {string} - * @memberof ProblemTagAliases - */ - alias?: string; -} -/** - * - * @export - * @interface ProblemTagDisplayNames - */ -export interface ProblemTagDisplayNames { - /** - * - * @type {Language} - * @memberof ProblemTagDisplayNames - */ - language?: Language; - /** - * 태그의 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - name?: string; - /** - * 태그의 짧은 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - _short?: string; -} -/** - * 사용자 정보입니다. - * @export - * @interface RankedUser - */ -export interface RankedUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof RankedUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof RankedUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof RankedUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof RankedUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof RankedUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof RankedUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof RankedUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof RankedUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof RankedUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof RankedUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof RankedUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof RankedUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUser - */ - rank: number; -} -/** - * - * @export - * @interface RankedUserAllOf - */ -export interface RankedUserAllOf { - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUserAllOf - */ - rank?: number; -} -/** - * 사용자의 solved.ac 설정 정보입니다. - * @export - * @interface Settings - */ -export interface Settings { - /** - * 사이트 디자인 테마입니다. - * @type {string} - * @memberof Settings - */ - screenTheme?: SettingsScreenThemeEnum; - /** - * - * @type {Language} - * @memberof Settings - */ - tagDisplayLanguage?: Language; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeSolved?: IconScheme; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeNotSolved?: IconScheme; - /** - * 문제 목록의 기본 정렬 순서입니다. - * @type {string} - * @memberof Settings - */ - problemSortBy?: SettingsProblemSortByEnum; - /** - * 트윗에 핸들을 포함하는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostHandle?: boolean; - /** - * CLASS가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnClassIncrease?: boolean; - /** - * 문제를 처음 해결했을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnProblemSolve?: boolean; - /** - * AC 레이팅이 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnRatingIncrease?: boolean; - /** - * 티어가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnTierIncrease?: boolean; -} - -/** -* @export -* @enum {string} -*/ -export enum SettingsScreenThemeEnum { - Default = 'default', - Light = 'light', - Dark = 'dark', - Black = 'black' -}/** -* @export -* @enum {string} -*/ -export enum SettingsProblemSortByEnum { - Id = 'id', - Level = 'level', - Title = 'title', - Solved = 'solved', - AverageTry = 'average_try', - Random = 'random' -} -/** - * - * @export - * @interface SolvedAcStatistics - */ -export interface SolvedAcStatistics { - /** - * 여태까지 색인된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemCount?: number; - /** - * 여태까지 난이도가 기여된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemVotedCount?: number; - /** - * 여태까지 등록한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - userCount?: number; - /** - * 여태까지 난이도에 기여한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributorCount?: number; - /** - * 여태까지 이루어진 난이도 기여의 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributionCount?: number; -} -/** - * 문제 정보입니다. - * @export - * @interface TaggedProblem - */ -export interface TaggedProblem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof TaggedProblem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof TaggedProblem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof TaggedProblem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof TaggedProblem - */ - averageTries?: number; - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblem - */ - tags?: Array; -} -/** - * - * @export - * @interface TaggedProblemAllOf - */ -export interface TaggedProblemAllOf { - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblemAllOf - */ - tags?: Array; -} -/** - * 사용자 정보입니다. - * @export - * @interface User - */ -export interface User { - /** - * 사용자명입니다. - * @type {string} - * @memberof User - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof User - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof User - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof User - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof User - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof User - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof User - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof User - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof User - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof User - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof User - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof User - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof User - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof User - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof User - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof User - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof User - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof User - */ - rank: number; -} diff --git a/src/models/mod.ts b/src/models/mod.ts deleted file mode 100644 index 00238bd..0000000 --- a/src/models/mod.ts +++ /dev/null @@ -1,1977 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * 사용자가 사용할 수 있는 배경입니다. - * @export - * @interface Background - */ -export interface Background { - /** - * 배경의 ID입니다. - * @type {string} - * @memberof Background - */ - backgroundId: string; - /** - * 배경 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundImageUrl: string; - /** - * 배경 사진이 없을 때 대체로 사용할 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - fallbackBackgroundImageUrl?: string | null; - /** - * 배경 비디오로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Background - */ - backgroundVideoUrl?: string | null; - /** - * 해당 배경을 획득한 사용자의 수입니다. - * @type {number} - * @memberof Background - */ - unlockedUserCount: number; - /** - * 배경의 이름입니다. - * @type {string} - * @memberof Background - */ - displayName: string; - /** - * 배경의 설명입니다. - * @type {string} - * @memberof Background - */ - displayDescription: string; - /** - * 해당 배경을 얻을 수 있는 조건입니다. - * @type {string} - * @memberof Background - */ - conditions: string; - /** - * 해당 배경을 얻을 수 있는 조건이 숨겨져 있는지 여부입니다. - * @type {boolean} - * @memberof Background - */ - hiddenConditions: boolean; - /** - * 해당 배경이 일러스트인지 여부입니다. - * @type {boolean} - * @memberof Background - */ - isIllust: boolean; - /** - * 해당 배경을 만든 사람들의 정보입니다. - * @type {Array} - * @memberof Background - */ - authors: Array; -} -/** - * - * @export - * @interface BackgroundAuthors - */ -export interface BackgroundAuthors { - /** - * 작가의 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorId?: string; - /** - * 작가의 역할입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - role?: string; - /** - * 작가의 홈페이지로 가는 하이퍼링크입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - authorUrl?: string | null; - /** - * 작가의 사용자 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - handle?: string; - /** - * 작가의 트위터 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - twitter?: string | null; - /** - * 작가의 인스타그램 ID입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - instagram?: string | null; - /** - * 작가의 이름입니다. - * @type {string} - * @memberof BackgroundAuthors - */ - displayName?: string; -} -/** - * 사용자가 사용할 수 있는 뱃지입니다. - * @export - * @interface Badge - */ -export interface Badge { - /** - * 뱃지의 ID입니다. - * @type {string} - * @memberof Badge - */ - badgeId: string; - /** - * 뱃지 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Badge - */ - badgeImageUrl: string; - /** - * 뱃지의 이름입니다. - * @type {string} - * @memberof Badge - */ - displayName: string; - /** - * 뱃지의 설명입니다. - * @type {string} - * @memberof Badge - */ - displayDescription: string; - /** - * - * @type {BadgeTier} - * @memberof Badge - */ - badgeTier?: BadgeTier; - /** - * - * @type {BadgeCategory} - * @memberof Badge - */ - badgeCategory?: BadgeCategory; -} -/** - * 뱃지 종류입니다. - * @export - * @enum {string} - */ -export enum BadgeCategory { - Achievement = 'achievement', - Season = 'season', - Event = 'event', - Contest = 'contest' -} -/** - * 뱃지 티어입니다. - * @export - * @enum {string} - */ -export enum BadgeTier { - Bronze = 'bronze', - Silver = 'silver', - Gold = 'gold', - Master = 'master' -} -/** - * 클래스 치장입니다. - * @export - * @enum {string} - */ -export enum ClassDecoration { - None = 'none', - Silver = 'silver', - Gold = 'gold' -} -/** - * 코인샵에서 판매하고 있는 상품입니다. - * @export - * @interface CoinshopProduct - */ -export interface CoinshopProduct { - /** - * 상품의 ID입니다. - * @type {number} - * @memberof CoinshopProduct - */ - skuId: number; - /** - * - * @type {Item} - * @memberof CoinshopProduct - */ - item?: Item; - /** - * 1회 구매에 획득하는 개수입니다. - * @type {number} - * @memberof CoinshopProduct - */ - units?: number; - /** - * 가격입니다. 별조각의 경우 나누기 100을 해야 표시 가격이 됩니다. - * @type {number} - * @memberof CoinshopProduct - */ - price?: number; - /** - * 가격의 단위입니다. - * @type {string} - * @memberof CoinshopProduct - */ - priceUnit?: CoinshopProductPriceUnitEnum; - /** - * 아이템 사용 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemUseTimeLimited?: boolean; - /** - * 아이템 구매 시간의 제한 여부입니다. - * @type {boolean} - * @memberof CoinshopProduct - */ - itemSellTimeLimited?: boolean; -} - -/** -* @export -* @enum {string} -*/ -export enum CoinshopProductPriceUnitEnum { - Coins = 'coins', - Stardusts = 'stardusts' -} -/** - * 사용자 정보입니다. - * @export - * @interface FullUser - */ -export interface FullUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof FullUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof FullUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof FullUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof FullUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof FullUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof FullUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof FullUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof FullUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof FullUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof FullUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof FullUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof FullUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof FullUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof FullUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof FullUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof FullUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof FullUser - */ - rank: number; - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUser - */ - isReverseRival?: boolean; -} -/** - * - * @export - * @interface FullUserAllOf - */ -export interface FullUserAllOf { - /** - * 라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isRival?: boolean; - /** - * 역라이벌 여부입니다. - * @type {boolean} - * @memberof FullUserAllOf - */ - isReverseRival?: boolean; -} -/** - * 난이도 아이콘 표시 정책입니다. - * @export - * @enum {string} - */ -export enum IconScheme { - Default = 'default', - HideWarn = 'hide-warn', - Hide = 'hide' -} -/** - * - * @export - * @interface InlineObject - */ -export interface InlineObject { - /** - * 리딤 코드입니다. - * @type {string} - * @memberof InlineObject - */ - code?: string; -} -/** - * - * @export - * @interface InlineObject1 - */ -export interface InlineObject1 { - /** - * 업데이트할 설정의 이름입니다. - * @type {string} - * @memberof InlineObject1 - */ - key?: string; - /** - * 업데이트할 설정의 새로운 값입니다. - * @type {object} - * @memberof InlineObject1 - */ - value?: object; -} -/** - * - * @export - * @interface InlineResponse200 - */ -export interface InlineResponse200 { - /** - * 계정의 사용자 정보입니다. - * @type {User & object} - * @memberof InlineResponse200 - */ - user?: User & object; - /** - * 해당 계정의 사용자가 푼 문제 정보입니다. - * @type {Array} - * @memberof InlineResponse200 - */ - solved?: Array; -} -/** - * - * @export - * @interface InlineResponse2001 - */ -export interface InlineResponse2001 { - /** - * 코인 → 별조각 환율입니다. 수수료 1%는 제외되어 있습니다. - * @type {number} - * @memberof InlineResponse2001 - */ - rate?: number; -} -/** - * - * @export - * @interface InlineResponse20010 - */ -export interface InlineResponse20010 { - /** - * 순위가 배정된 조직의 수입니다. - * @type {number} - * @memberof InlineResponse20010 - */ - count?: number; - /** - * 레이팅 순위로 정렬된 조직 목록입니다. - * @type {Array} - * @memberof InlineResponse20010 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20011 - */ -export interface InlineResponse20011 { - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20011 - */ - count?: number; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20011 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20012 - */ -export interface InlineResponse20012 { - /** - * - * @type {Array} - * @memberof InlineResponse20012 - */ - autocomplete?: Array; - /** - * 찾은 문제 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - problems?: Array; - /** - * 찾은 문제 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - problemCount?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - users?: Array; - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - userCount?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20012 - */ - tags?: Array; - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20012 - */ - tagCount?: number; -} -/** - * - * @export - * @interface InlineResponse20012Autocomplete - */ -export interface InlineResponse20012Autocomplete { - /** - * 자동완성 제목입니다. 해당 값으로 자동완성됩니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - caption?: string; - /** - * 자동완성 요소에 대한 설명입니다. - * @type {string} - * @memberof InlineResponse20012Autocomplete - */ - description?: string; -} -/** - * - * @export - * @interface InlineResponse20013 - */ -export interface InlineResponse20013 { - /** - * 찾은 태그 수입니다. - * @type {number} - * @memberof InlineResponse20013 - */ - count?: number; - /** - * 찾은 태그 목록입니다. - * @type {Array} - * @memberof InlineResponse20013 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20014 - */ -export interface InlineResponse20014 { - /** - * 찾은 사용자 수입니다. - * @type {number} - * @memberof InlineResponse20014 - */ - count?: number; - /** - * 찾은 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse20014 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse20015 - */ -export interface InlineResponse20015 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse20015 - */ - level?: number; - /** - * solved.ac에 등록된 해당 레벨의 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - total?: number; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - solved?: number; - /** - * 사용자가 부분 성공한 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - partial?: number; - /** - * 사용자가 시도해본 문제 수입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - tried?: number; - /** - * 사용자가 해당 레벨에서 획득한 경험치의 합입니다. - * @type {number} - * @memberof InlineResponse20015 - */ - exp?: number; -} -/** - * - * @export - * @interface InlineResponse2002 - */ -export interface InlineResponse2002 { - /** - * - * @type {number} - * @memberof InlineResponse2002 - */ - _class?: number; - /** - * 이 CLASS에 속한 에센셜이 아닌 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - total?: number; - /** - * 이 CLASS에 속한 에센셜 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - essentials?: number; - /** - * 이 CLASS를 취득하기 위한 최소 문제 수입니다. - * @type {number} - * @memberof InlineResponse2002 - */ - criteria?: number; -} -/** - * - * @export - * @interface InlineResponse2003 - */ -export interface InlineResponse2003 { - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof InlineResponse2003 - */ - level?: number; - /** - * 이 문제 수준인 문제 수입니다. - * @type {number} - * @memberof InlineResponse2003 - */ - count?: number; -} -/** - * - * @export - * @interface InlineResponse2004 - */ -export interface InlineResponse2004 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2004 - */ - count?: number; - /** - * 티어 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2004 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2005 - */ -export interface InlineResponse2005 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2005 - */ - count?: number; - /** - * CLASS 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2005 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2006 - */ -export interface InlineResponse2006 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2006 - */ - count?: number; - /** - * 최장 스트릭 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2006 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2007 - */ -export interface InlineResponse2007 { - /** - * 순위가 배정된 사용자의 수입니다. - * @type {number} - * @memberof InlineResponse2007 - */ - count?: number; - /** - * 기여 순위로 정렬된 사용자 목록입니다. - * @type {Array} - * @memberof InlineResponse2007 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2008 - */ -export interface InlineResponse2008 { - /** - * 순위가 배정된 라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2008 - */ - count?: number; - /** - * 티어 순위로 정렬된 라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2008 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse2009 - */ -export interface InlineResponse2009 { - /** - * 순위가 배정된 역라이벌의 수입니다. - * @type {number} - * @memberof InlineResponse2009 - */ - count?: number; - /** - * 티어 순위로 정렬된 역라이벌 목록입니다. - * @type {Array} - * @memberof InlineResponse2009 - */ - items?: Array; -} -/** - * - * @export - * @interface InlineResponse200Solved - */ -export interface InlineResponse200Solved { - /** - * 문제 ID입니다. - * @type {number} - * @memberof InlineResponse200Solved - */ - id?: number; - /** - * 현재 문제 풀이 상태입니다. 알려진 값은 다음이 있습니다. - * `"solved"`, `"tried"` - * @type {string} - * @memberof InlineResponse200Solved - */ - status?: string; -} -/** - * 사용자가 사용할 수 있는 아이템입니다. - * @export - * @interface Item - */ -export interface Item { - /** - * 아이템의 ID입니다. - * @type {string} - * @memberof Item - */ - itemId: string; - /** - * 아이템 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof Item - */ - itemImageUrl: string; - /** - * 최대 소유 가능 개수입니다. 호출자에 따라 달라질 수 있습니다. - * @type {number} - * @memberof Item - */ - inventoryMaxUnits: number; - /** - * 아이템 사용 가능 여부입니다. - * @type {boolean} - * @memberof Item - */ - usable: boolean; - /** - * 아이템의 이름입니다. - * @type {string} - * @memberof Item - */ - displayName: string; - /** - * 아이템의 설명입니다. - * @type {string} - * @memberof Item - */ - displayDescription: string; -} -/** - * 언어입니다. - * @export - * @enum {string} - */ -export enum Language { - Ko = 'ko', - En = 'en' -} -/** - * - * @export - * @interface Organization - */ -export interface Organization { - /** - * 조직의 ID입니다. - * @type {number} - * @memberof Organization - */ - organizationId?: number; - /** - * 조직의 이름입니다. - * @type {string} - * @memberof Organization - */ - name?: string; - /** - * 조직의 구분입니다. - * @type {string} - * @memberof Organization - */ - type?: OrganizationTypeEnum; - /** - * 조직의 레이팅입니다. - * @type {number} - * @memberof Organization - */ - rating?: number; - /** - * 조직에 포함된 사용자의 수입니다. - * @type {number} - * @memberof Organization - */ - userCount?: number; - /** - * 조직의 총 난이도 기여 수입니다. - * @type {number} - * @memberof Organization - */ - voteCount?: number; - /** - * 조직의 총 푼 문제 수입니다. - * @type {number} - * @memberof Organization - */ - solvedCount?: number; - /** - * 조직의 색깔입니다. - * @type {string} - * @memberof Organization - */ - color?: string; -} - -/** -* @export -* @enum {string} -*/ -export enum OrganizationTypeEnum { - Community = 'community', - University = 'university', - Company = 'company', - HighSchool = 'high_school' -} -/** - * 문제 정보입니다. - * @export - * @interface Problem - */ -export interface Problem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof Problem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof Problem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof Problem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof Problem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof Problem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof Problem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof Problem - */ - averageTries?: number; -} -/** - * - * @export - * @interface ProblemTag - */ -export interface ProblemTag { - /** - * 태그의 ID입니다. - * @type {string} - * @memberof ProblemTag - */ - key?: string; - /** - * - * @type {boolean} - * @memberof ProblemTag - */ - isMeta?: boolean; - /** - * 백준에서 사용되는 이 태그의 ID입니다. - * @type {number} - * @memberof ProblemTag - */ - bojTagId?: number; - /** - * 이 태그를 포함하는 문제의 수입니다. - * @type {number} - * @memberof ProblemTag - */ - problemCount?: number; - /** - * 언어별 태그의 이름 목록입니다. - * @type {Array} - * @memberof ProblemTag - */ - displayNames?: Array; - /** - * 태그의 별칭입니다. - * @type {Array} - * @memberof ProblemTag - */ - aliases?: Array; -} -/** - * - * @export - * @interface ProblemTagAliases - */ -export interface ProblemTagAliases { - /** - * 별칭입니다. - * @type {string} - * @memberof ProblemTagAliases - */ - alias?: string; -} -/** - * - * @export - * @interface ProblemTagDisplayNames - */ -export interface ProblemTagDisplayNames { - /** - * - * @type {Language} - * @memberof ProblemTagDisplayNames - */ - language?: Language; - /** - * 태그의 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - name?: string; - /** - * 태그의 짧은 이름입니다. - * @type {string} - * @memberof ProblemTagDisplayNames - */ - _short?: string; -} -/** - * 사용자 정보입니다. - * @export - * @interface RankedUser - */ -export interface RankedUser { - /** - * 사용자명입니다. - * @type {string} - * @memberof RankedUser - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof RankedUser - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof RankedUser - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof RankedUser - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof RankedUser - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof RankedUser - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof RankedUser - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof RankedUser - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof RankedUser - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof RankedUser - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof RankedUser - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof RankedUser - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof RankedUser - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof RankedUser - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof RankedUser - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof RankedUser - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUser - */ - rank: number; -} -/** - * - * @export - * @interface RankedUserAllOf - */ -export interface RankedUserAllOf { - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof RankedUserAllOf - */ - rank?: number; -} -/** - * 사용자의 solved.ac 설정 정보입니다. - * @export - * @interface Settings - */ -export interface Settings { - /** - * 사이트 디자인 테마입니다. - * @type {string} - * @memberof Settings - */ - screenTheme?: SettingsScreenThemeEnum; - /** - * - * @type {Language} - * @memberof Settings - */ - tagDisplayLanguage?: Language; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeSolved?: IconScheme; - /** - * - * @type {IconScheme} - * @memberof Settings - */ - iconSchemeNotSolved?: IconScheme; - /** - * 문제 목록의 기본 정렬 순서입니다. - * @type {string} - * @memberof Settings - */ - problemSortBy?: SettingsProblemSortByEnum; - /** - * 트윗에 핸들을 포함하는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostHandle?: boolean; - /** - * CLASS가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnClassIncrease?: boolean; - /** - * 문제를 처음 해결했을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnProblemSolve?: boolean; - /** - * AC 레이팅이 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnRatingIncrease?: boolean; - /** - * 티어가 올랐을 때 트윗을 보내는지 여부입니다. - * @type {boolean} - * @memberof Settings - */ - twitterPostOnTierIncrease?: boolean; -} - -/** -* @export -* @enum {string} -*/ -export enum SettingsScreenThemeEnum { - Default = 'default', - Light = 'light', - Dark = 'dark', - Black = 'black' -}/** -* @export -* @enum {string} -*/ -export enum SettingsProblemSortByEnum { - Id = 'id', - Level = 'level', - Title = 'title', - Solved = 'solved', - AverageTry = 'average_try', - Random = 'random' -} -/** - * - * @export - * @interface SolvedAcStatistics - */ -export interface SolvedAcStatistics { - /** - * 여태까지 색인된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemCount?: number; - /** - * 여태까지 난이도가 기여된 백준 문제 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - problemVotedCount?: number; - /** - * 여태까지 등록한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - userCount?: number; - /** - * 여태까지 난이도에 기여한 사용자 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributorCount?: number; - /** - * 여태까지 이루어진 난이도 기여의 수입니다. - * @type {number} - * @memberof SolvedAcStatistics - */ - contributionCount?: number; -} -/** - * 문제 정보입니다. - * @export - * @interface TaggedProblem - */ -export interface TaggedProblem { - /** - * 문제 ID입니다. - * @type {number} - * @memberof TaggedProblem - */ - problemId?: number; - /** - * 한국어 문제 제목입니다. HTML 엔티티나 LaTeX 수식을 포함할 수 있습니다. - * @type {string} - * @memberof TaggedProblem - */ - titleKo?: string; - /** - * 채점 가능 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isSolvable?: boolean; - /** - * 부분 점수 혹은 서브태스크 문제 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isPartial?: boolean; - /** - * 맞은 사람 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - acceptedUserCount?: number; - /** - * Unrated를 0, Bronze V를 1, ... Ruby II를 29, Ruby I을 30으로 표현하는 문제 레벨입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 0 | Unrated | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * - *
- * @type {number} - * @memberof TaggedProblem - */ - level?: number; - /** - * 난이도 기여자의 수입니다. - * @type {number} - * @memberof TaggedProblem - */ - votedUserCount?: number; - /** - * 난이도 기여 제한 여부입니다. - * @type {boolean} - * @memberof TaggedProblem - */ - isLevelLocked?: boolean; - /** - * 평균 시도 횟수입니다. - * @type {number} - * @memberof TaggedProblem - */ - averageTries?: number; - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblem - */ - tags?: Array; -} -/** - * - * @export - * @interface TaggedProblemAllOf - */ -export interface TaggedProblemAllOf { - /** - * 태그 목록입니다. - * @type {Array} - * @memberof TaggedProblemAllOf - */ - tags?: Array; -} -/** - * 사용자 정보입니다. - * @export - * @interface User - */ -export interface User { - /** - * 사용자명입니다. - * @type {string} - * @memberof User - */ - handle: string; - /** - * 사용자의 자기소개입니다. - * @type {string} - * @memberof User - */ - bio: string; - /** - * 사용자가 지금 사용 중인 뱃지의 아이디입니다. - * @type {string} - * @memberof User - */ - badgeId?: string | null; - /** - * 사용자가 지금 사용 중인 배경의 아이디입니다. - * @type {string} - * @memberof User - */ - backgroundId: string; - /** - * 사용자의 프로필 사진으로 가는 하이퍼링크입니다. - * @type {string} - * @memberof User - */ - profileImageUrl: string | null; - /** - * 사용자가 푼 문제 수입니다. - * @type {number} - * @memberof User - */ - solvedCount: number; - /** - * 사용자가 난이도 기여를 한 횟수입니다. - * @type {number} - * @memberof User - */ - voteCount: number; - /** - * 사용자가 여태까지 획득한 경험치량입니다. - * @type {number} - * @memberof User - */ - exp: number; - /** - * Bronze V를 1, Bronze IV를 2, ..., Ruby I을 30, Master를 31로 표현하는 사용자 티어입니다. - * 자세한 값 정보는 표1. 수치 - 이름 표를 펼쳐 참고하십시오. - * - *
- * - * 표1. 수치 - 이름 표 - * - * - * | 수치 | 이름 | - * | ---: | ------------ | - * | 1 | Bronze V | - * | 2 | Bronze IV | - * | 3 | Bronze III | - * | 4 | Bronze II | - * | 5 | Bronze I | - * | 6 | Silver V | - * | 7 | Silver IV | - * | 8 | Silver III | - * | 9 | Silver II | - * | 10 | Silver I | - * | 11 | Gold V | - * | 12 | Gold IV | - * | 13 | Gold III | - * | 14 | Gold II | - * | 15 | Gold I | - * | 16 | Platinum V | - * | 17 | Platinum IV | - * | 18 | Platinum III | - * | 19 | Platinum II | - * | 20 | Platinum I | - * | 21 | Diamond V | - * | 22 | Diamond IV | - * | 23 | Diamond III | - * | 24 | Diamond II | - * | 25 | Diamond I | - * | 26 | Ruby V | - * | 27 | Ruby IV | - * | 28 | Ruby III | - * | 29 | Ruby II | - * | 30 | Ruby I | - * | 31 | Master | - * - *
- * @type {number} - * @memberof User - */ - tier: number; - /** - * 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - rating: number; - /** - * 푼 문제의 난이도 합으로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByProblemsSum: number; - /** - * 취득한 클래스에 따른 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByClass: number; - /** - * 푼 문제 수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingBySolvedCount: number; - /** - * 문제 난이도에 기여한 횟수로 계산한 사용자의 레이팅입니다. - * @type {number} - * @memberof User - */ - ratingByVoteCount: number; - /** - * 사용자가 취득한 Class입니다. - * @type {number} - * @memberof User - */ - _class: number; - /** - * - * @type {ClassDecoration} - * @memberof User - */ - classDecoration: ClassDecoration; - /** - * 사용자의 라이벌 수입니다. - * @type {number} - * @memberof User - */ - rivalCount: number; - /** - * 사용자의 역라이벌 수입니다. - * @type {number} - * @memberof User - */ - reverseRivalCount: number; - /** - * 최대 연속 문제 풀이일 수입니다. - * @type {number} - * @memberof User - */ - maxStreak: number; - /** - * 사용자가 가지고 있는 코인의 수입니다. - * @type {number} - * @memberof User - */ - coins: number; - /** - * 사용자가 가지고 있는 별가루의 수입니다. - * @type {number} - * @memberof User - */ - stardusts: number; - /** - * 사용자가 가입한 날짜입니다. - * @type {Date} - * @memberof User - */ - joinedAt: Date; - /** - * 사용자의 정지 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - bannedUntil: Date; - /** - * 사용자의 PRO 종료 날짜입니다. - * @type {Date} - * @memberof User - */ - proUntil: Date; - /** - * 사용자의 순위입니다. - * @type {number} - * @memberof User - */ - rank: number; -}