diff --git a/dist/cjs/apis/OrganizationApi.cjs b/dist/cjs/apis/OrganizationApi.cjs
new file mode 100644
index 0000000..3f74204
--- /dev/null
+++ b/dist/cjs/apis/OrganizationApi.cjs
@@ -0,0 +1,75 @@
+"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.OrganizationApi = void 0;
+const runtime = __importStar(require("../runtime.cjs"));
+/**
+ *
+ */
+class OrganizationApi extends runtime.BaseAPI {
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationByIdRaw(requestParameters, initOverrides) {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError('organizationId', 'Required parameter "organizationId" was null or undefined when calling getOrganizationById().');
+ }
+ const queryParameters = {};
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/organization/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationById(requestParameters, initOverrides) {
+ const response = await this.getOrganizationByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+}
+exports.OrganizationApi = OrganizationApi;
diff --git a/dist/cjs/apis/OrganizationApi.d.cts b/dist/cjs/apis/OrganizationApi.d.cts
new file mode 100644
index 0000000..7e0bf3d
--- /dev/null
+++ b/dist/cjs/apis/OrganizationApi.d.cts
@@ -0,0 +1,31 @@
+/**
+ * @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 { Organization } from '../models/index.cjs';
+export interface GetOrganizationByIdRequest {
+ organizationId: string;
+}
+/**
+ *
+ */
+export declare class OrganizationApi extends runtime.BaseAPI {
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ getOrganizationByIdRaw(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ getOrganizationById(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+}
diff --git a/dist/cjs/apis/PostApi.cjs b/dist/cjs/apis/PostApi.cjs
new file mode 100644
index 0000000..5f36ecf
--- /dev/null
+++ b/dist/cjs/apis/PostApi.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.PostApi = void 0;
+const runtime = __importStar(require("../runtime.cjs"));
+/**
+ *
+ */
+class PostApi extends runtime.BaseAPI {
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostByIdRaw(requestParameters, initOverrides) {
+ if (requestParameters['postId'] == null) {
+ throw new runtime.RequiredError('postId', 'Required parameter "postId" was null or undefined when calling getPostById().');
+ }
+ const queryParameters = {};
+ if (requestParameters['postId'] != null) {
+ queryParameters['postId'] = requestParameters['postId'];
+ }
+ const headerParameters = {};
+ if (requestParameters['xSolvedacLanguage'] != null) {
+ headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']);
+ }
+ const response = await this.request({
+ path: `/post/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostById(requestParameters, initOverrides) {
+ const response = await this.getPostByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+}
+exports.PostApi = PostApi;
diff --git a/dist/cjs/apis/PostApi.d.cts b/dist/cjs/apis/PostApi.d.cts
new file mode 100644
index 0000000..f096b81
--- /dev/null
+++ b/dist/cjs/apis/PostApi.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 { Language, Post } from '../models/index.cjs';
+export interface GetPostByIdRequest {
+ postId: string;
+ xSolvedacLanguage?: Language;
+}
+/**
+ *
+ */
+export declare class PostApi extends runtime.BaseAPI {
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ getPostByIdRaw(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ getPostById(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+}
diff --git a/dist/cjs/apis/RankingApi.cjs b/dist/cjs/apis/RankingApi.cjs
index cb20b2c..1547637 100644
--- a/dist/cjs/apis/RankingApi.cjs
+++ b/dist/cjs/apis/RankingApi.cjs
@@ -71,6 +71,70 @@ class RankingApi extends runtime.BaseAPI {
const response = await this.getOrganizationRankingByACRatingRaw(requestParameters, initOverrides);
return await response.value();
}
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganizationRaw(requestParameters, initOverrides) {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError('organizationId', 'Required parameter "organizationId" was null or undefined when calling getRankingByACRatingInOrganization().');
+ }
+ const queryParameters = {};
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/ranking/in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganization(requestParameters, initOverrides) {
+ const response = await this.getRankingByACRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganizationRaw(requestParameters, initOverrides) {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError('organizationId', 'Required parameter "organizationId" was null or undefined when calling getRankingByArenaRatingInOrganization().');
+ }
+ const queryParameters = {};
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/ranking/arena_in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganization(requestParameters, initOverrides) {
+ const response = await this.getRankingByArenaRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다.
* CLASS 순 사용자 랭킹 가져오기
diff --git a/dist/cjs/apis/RankingApi.d.cts b/dist/cjs/apis/RankingApi.d.cts
index 3ff49f2..34848c4 100644
--- a/dist/cjs/apis/RankingApi.d.cts
+++ b/dist/cjs/apis/RankingApi.d.cts
@@ -10,11 +10,19 @@
* Do not edit the class manually.
*/
import * as runtime from '../runtime.cjs';
-import type { GetOrganizationRankingByACRating200Response, GetRankingByClass200Response, Language, OrganizationType } from '../models/index.cjs';
+import type { GetOrganizationRankingByACRating200Response, GetRankingByArenaRatingInOrganization200Response, GetRankingByClass200Response, Language, OrganizationType } from '../models/index.cjs';
export interface GetOrganizationRankingByACRatingRequest {
type?: OrganizationType;
page?: number;
}
+export interface GetRankingByACRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
+export interface GetRankingByArenaRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
export interface GetRankingByClassRequest {
xSolvedacLanguage?: Language;
page?: number;
@@ -53,6 +61,26 @@ export declare class RankingApi extends runtime.BaseAPI {
* 문제풀이 레이팅 순 단체 랭킹 가져오기
*/
getOrganizationRankingByACRating(requestParameters?: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByACRatingInOrganizationRaw(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByACRatingInOrganization(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByArenaRatingInOrganizationRaw(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByArenaRatingInOrganization(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
* CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다.
* CLASS 순 사용자 랭킹 가져오기
diff --git a/dist/cjs/apis/SearchApi.d.cts b/dist/cjs/apis/SearchApi.d.cts
index b76400e..51cb226 100644
--- a/dist/cjs/apis/SearchApi.d.cts
+++ b/dist/cjs/apis/SearchApi.d.cts
@@ -10,7 +10,7 @@
* 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';
+import type { GetProblemsByIdList200Response, GetRankingByArenaRatingInOrganization200Response, GetSearchAutoCompletionsSuggestion, Language, SearchProblemQueryDirection, SearchProblemQuerySort, SearchProblemTag200Response } from '../models/index.cjs';
export interface GetSearchAutoCompletionsRequest {
query: string;
xSolvedacLanguage?: Language;
@@ -70,10 +70,10 @@ export declare class SearchApi extends runtime.BaseAPI {
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
}
diff --git a/dist/cjs/apis/TagApi.cjs b/dist/cjs/apis/TagApi.cjs
new file mode 100644
index 0000000..c999573
--- /dev/null
+++ b/dist/cjs/apis/TagApi.cjs
@@ -0,0 +1,101 @@
+"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.TagApi = void 0;
+const runtime = __importStar(require("../runtime.cjs"));
+/**
+ *
+ */
+class TagApi extends runtime.BaseAPI {
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKeyRaw(requestParameters, initOverrides) {
+ if (requestParameters['key'] == null) {
+ throw new runtime.RequiredError('key', 'Required parameter "key" was null or undefined when calling getTagByKey().');
+ }
+ const queryParameters = {};
+ if (requestParameters['key'] != null) {
+ queryParameters['key'] = requestParameters['key'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/tag/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKey(requestParameters, initOverrides) {
+ const response = await this.getTagByKeyRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagListRaw(requestParameters, initOverrides) {
+ const queryParameters = {};
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/tag/list`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagList(requestParameters = {}, initOverrides) {
+ const response = await this.getTagListRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+}
+exports.TagApi = TagApi;
diff --git a/dist/cjs/apis/TagApi.d.cts b/dist/cjs/apis/TagApi.d.cts
new file mode 100644
index 0000000..db55678
--- /dev/null
+++ b/dist/cjs/apis/TagApi.d.cts
@@ -0,0 +1,44 @@
+/**
+ * @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 { ProblemTag, SearchProblemTag200Response } from '../models/index.cjs';
+export interface GetTagByKeyRequest {
+ key: string;
+}
+export interface GetTagListRequest {
+ page?: number;
+}
+/**
+ *
+ */
+export declare class TagApi extends runtime.BaseAPI {
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ getTagByKeyRaw(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ getTagByKey(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ getTagListRaw(requestParameters: GetTagListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ getTagList(requestParameters?: GetTagListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+}
diff --git a/dist/cjs/apis/UserApi.cjs b/dist/cjs/apis/UserApi.cjs
index b1349f3..5949768 100644
--- a/dist/cjs/apis/UserApi.cjs
+++ b/dist/cjs/apis/UserApi.cjs
@@ -42,6 +42,35 @@ const runtime = __importStar(require("../runtime.cjs"));
*
*/
class UserApi extends runtime.BaseAPI {
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfoRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserAdditionalInfo().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/additional_info`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfo(requestParameters, initOverrides) {
+ const response = await this.getUserAdditionalInfoRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 정보 가져오기
@@ -74,6 +103,64 @@ class UserApi extends runtime.BaseAPI {
const response = await this.getUserByHandleRaw(requestParameters, initOverrides);
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStatsRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserClassStats().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/class_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStats(requestParameters, initOverrides) {
+ const response = await this.getUserClassStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStatsRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserContributionStats().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/contribution_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStats(requestParameters, initOverrides) {
+ const response = await this.getUserContributionStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 단체 가져오기
@@ -132,6 +219,35 @@ class UserApi extends runtime.BaseAPI {
const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides);
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStatsRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserProblemTagStats().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/problem_tag_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStats(requestParameters, initOverrides) {
+ const response = await this.getUserProblemTagStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다
* 상위 100 문제 가져오기
diff --git a/dist/cjs/apis/UserApi.d.cts b/dist/cjs/apis/UserApi.d.cts
index 62204a2..75101e6 100644
--- a/dist/cjs/apis/UserApi.d.cts
+++ b/dist/cjs/apis/UserApi.d.cts
@@ -10,17 +10,29 @@
* Do not edit the class manually.
*/
import * as runtime from '../runtime.cjs';
-import type { GetProblemsByIdList200Response, GetUserProblemStatsProblemStat, Language, Organization, SocialUser } from '../models/index.cjs';
+import type { GetProblemsByIdList200Response, GetUserClassStatsClassStat, GetUserContributionStatsContributionStat, GetUserProblemStatsProblemStat, GetUserProblemTagStats200Response, Language, Organization, SocialUser, UserAdditionalInfo } from '../models/index.cjs';
+export interface GetUserAdditionalInfoRequest {
+ handle: string;
+}
export interface GetUserByHandleRequest {
handle: string;
xSolvedacLanguage?: Language;
}
+export interface GetUserClassStatsRequest {
+ handle: string;
+}
+export interface GetUserContributionStatsRequest {
+ handle: string;
+}
export interface GetUserOrganizationsRequest {
handle: string;
}
export interface GetUserProblemStatsRequest {
handle: string;
}
+export interface GetUserProblemTagStatsRequest {
+ handle: string;
+}
export interface GetUserTop100Request {
handle: string;
xSolvedacLanguage?: Language;
@@ -29,6 +41,16 @@ export interface GetUserTop100Request {
*
*/
export declare class UserApi extends runtime.BaseAPI {
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ getUserAdditionalInfoRaw(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ getUserAdditionalInfo(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 정보 가져오기
@@ -39,6 +61,26 @@ export declare class UserApi extends runtime.BaseAPI {
* 사용자 핸들로 정보 가져오기
*/
getUserByHandle(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserClassStatsRaw(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserClassStats(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ getUserContributionStatsRaw(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ getUserContributionStats(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 단체 가져오기
@@ -59,6 +101,16 @@ export declare class UserApi extends runtime.BaseAPI {
* 문제 수준별로 사용자가 푼 문제 수 가져오기
*/
getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserProblemTagStatsRaw(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserProblemTagStats(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
* 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다
* 상위 100 문제 가져오기
diff --git a/dist/cjs/apis/index.cjs b/dist/cjs/apis/index.cjs
index e7ed71b..a0ef77f 100644
--- a/dist/cjs/apis/index.cjs
+++ b/dist/cjs/apis/index.cjs
@@ -20,8 +20,11 @@ __exportStar(require("./AccountApi.cjs"), exports);
__exportStar(require("./BackgroundApi.cjs"), exports);
__exportStar(require("./BadgeApi.cjs"), exports);
__exportStar(require("./CoinsApi.cjs"), exports);
+__exportStar(require("./OrganizationApi.cjs"), exports);
__exportStar(require("./OtherApi.cjs"), exports);
+__exportStar(require("./PostApi.cjs"), exports);
__exportStar(require("./ProblemApi.cjs"), exports);
__exportStar(require("./RankingApi.cjs"), exports);
__exportStar(require("./SearchApi.cjs"), exports);
+__exportStar(require("./TagApi.cjs"), exports);
__exportStar(require("./UserApi.cjs"), exports);
diff --git a/dist/cjs/apis/index.d.cts b/dist/cjs/apis/index.d.cts
index 851f723..587606d 100644
--- a/dist/cjs/apis/index.d.cts
+++ b/dist/cjs/apis/index.d.cts
@@ -2,8 +2,11 @@ export * from './AccountApi.cjs';
export * from './BackgroundApi.cjs';
export * from './BadgeApi.cjs';
export * from './CoinsApi.cjs';
+export * from './OrganizationApi.cjs';
export * from './OtherApi.cjs';
+export * from './PostApi.cjs';
export * from './ProblemApi.cjs';
export * from './RankingApi.cjs';
export * from './SearchApi.cjs';
+export * from './TagApi.cjs';
export * from './UserApi.cjs';
diff --git a/dist/cjs/models/index.cjs b/dist/cjs/models/index.cjs
index 111d8ba..76062fd 100644
--- a/dist/cjs/models/index.cjs
+++ b/dist/cjs/models/index.cjs
@@ -2,7 +2,7 @@
/* 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;
+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.GetUserClassStatsClassStatClassEnum = exports.GetSearchAutoCompletionsUserEntryClassDecorationEnum = exports.GetSearchAutoCompletionsUserEntryClassEnum = exports.GetClassesProblemCountClassEntryClassEnum = exports.CoinShopProductPriceUnitEnum = exports.BadgeTier = exports.BadgeCategory = exports.BackgroundCategory = exports.ArenaTier = void 0;
/**
* Unrated를 0,
* C를 1,
@@ -129,6 +129,21 @@ exports.GetSearchAutoCompletionsUserEntryClassDecorationEnum = {
Silver: 'silver',
Gold: 'gold'
};
+/**
+ * @export
+ */
+exports.GetUserClassStatsClassStatClassEnum = {
+ 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
+};
/**
* solved.ac에서 지원하는 사용자 언어입니다
* @export
diff --git a/dist/cjs/models/index.d.cts b/dist/cjs/models/index.d.cts
index e19e4ba..34a7aa1 100644
--- a/dist/cjs/models/index.d.cts
+++ b/dist/cjs/models/index.d.cts
@@ -542,6 +542,25 @@ export interface GetProblemsCountGroupByLevelLevelEntry {
*/
count: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetRankingByArenaRatingInOrganization200Response
+ */
+export interface GetRankingByArenaRatingInOrganization200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ items: Array;
+}
/**
* 페이지네이션 가능한 쿼리의 응답 결과입니다.
* @export
@@ -930,6 +949,96 @@ export declare const GetSearchAutoCompletionsUserEntryClassDecorationEnum: {
readonly Gold: "gold";
};
export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum];
+/**
+ *
+ * @export
+ * @interface GetUserClassStatsClassStat
+ */
+export interface GetUserClassStatsClassStat {
+ /**
+ * 클래스 번호입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ _class: GetUserClassStatsClassStatClassEnum;
+ /**
+ * solved.ac에 등록된 해당 클래스의 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 클래스 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ totalSolved: number;
+ /**
+ * solved.ac에 등록된 해당 클래스의 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentials: number;
+ /**
+ * 사용자가 푼 클래스 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentialSolved: number;
+ /**
+ * 사용자가 획득한 클래스 치장입니다.
+ * @type {string}
+ * @memberof GetUserClassStatsClassStat
+ */
+ decoration: string;
+}
+/**
+ * @export
+ */
+export declare const GetUserClassStatsClassStatClassEnum: {
+ 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 GetUserClassStatsClassStatClassEnum = typeof GetUserClassStatsClassStatClassEnum[keyof typeof GetUserClassStatsClassStatClassEnum];
+/**
+ *
+ * @export
+ * @interface GetUserContributionStatsContributionStat
+ */
+export interface GetUserContributionStatsContributionStat {
+ /**
+ * solved.ac에 등록된 해당 수준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solved: number;
+ /**
+ * 사용자가 푼 표준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solvedStandards: number;
+ /**
+ * 사용자가 기여한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ contributed: number;
+}
/**
*
* @export
@@ -967,6 +1076,62 @@ export interface GetUserProblemStatsProblemStat {
*/
tried: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetUserProblemTagStats200Response
+ */
+export interface GetUserProblemTagStats200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ items: Array;
+}
+/**
+ *
+ * @export
+ * @interface GetUserProblemTagStatsProblemTagStat
+ */
+export interface GetUserProblemTagStatsProblemTagStat {
+ /**
+ *
+ * @type {ProblemTag}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tag: ProblemTag;
+ /**
+ * solved.ac에 등록된 해당 태그 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ solved: number;
+ /**
+ * 사용자가 부분 성공한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ partial: number;
+ /**
+ * 사용자가 시도해 본 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tried: number;
+}
/**
* 사용자가 사용할 수 있는 아이템입니다.
* @export
@@ -1090,6 +1255,43 @@ export declare const OrganizationType: {
readonly Undefined: "undefined";
};
export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType];
+/**
+ * solved.ac의 게시글입니다.
+ * @export
+ * @interface Post
+ */
+export interface Post {
+ /**
+ * 게시글의 아이디입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ postId: string;
+ /**
+ * 게시글의 제목입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ title: string;
+ /**
+ * 게시글의 내용입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ content: string;
+ /**
+ * 게시글이 작성된 언어입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ language: string;
+ /**
+ * 게시글 내용의 타입입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ type: string;
+}
/**
* 문제 정보입니다.
* @export
@@ -1670,25 +1872,6 @@ export interface SearchProblemTag200Response {
*/
items: Array;
}
-/**
- * 페이지네이션 가능한 쿼리의 응답 결과입니다.
- * @export
- * @interface SearchUser200Response
- */
-export interface SearchUser200Response {
- /**
- * 전체 원소 수입니다.
- * @type {number}
- * @memberof SearchUser200Response
- */
- count: number;
- /**
- * 현재 페이지의 원소 목록입니다.
- * @type {Array}
- * @memberof SearchUser200Response
- */
- items: Array;
-}
/**
* solved.ac 사이트의 통계 정보입니다.
* @export
@@ -2289,6 +2472,65 @@ export declare const UserClassDecorationEnum: {
readonly Gold: "gold";
};
export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum];
+/**
+ * solved.ac 사용자 부가 정보입니다.
+ * @export
+ * @interface UserAdditionalInfo
+ */
+export interface UserAdditionalInfo {
+ /**
+ * 사용자의 국가/지역 코드입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ countryCode: string;
+ /**
+ * 사용자의 성별입니다.
+ * - 0: 선택 안 함
+ * - 1: 남성
+ * - 2: 여성
+ * - 9: 기타
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ gender: number;
+ /**
+ * 사용자를 영어로 표기할 때 사용하는 대명사입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ pronouns: string;
+ /**
+ * 사용자의 생년입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthYear: number;
+ /**
+ * 사용자의 생월입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthMonth: number;
+ /**
+ * 사용자의 생일입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthDay: number;
+ /**
+ * 사용자의 영어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ name: string;
+ /**
+ * 사용자의 모국어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ nameNative: string;
+}
/**
* 사용자 동의 여부입니다.
* @export
diff --git a/dist/cjs/runtime.cjs b/dist/cjs/runtime.cjs
index d6f3fb0..e353483 100644
--- a/dist/cjs/runtime.cjs
+++ b/dist/cjs/runtime.cjs
@@ -13,7 +13,9 @@
* 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.TextApiResponse = exports.BlobApiResponse = exports.VoidApiResponse = exports.JSONApiResponse = exports.COLLECTION_FORMATS = exports.RequiredError = exports.FetchError = exports.ResponseError = exports.BaseAPI = exports.DefaultConfig = exports.Configuration = exports.BASE_PATH = void 0;
+exports.querystring = querystring;
+exports.canConsumeForm = canConsumeForm;
exports.BASE_PATH = "https://solved.ac/api/v3".replace(/\/+$/, "");
class Configuration {
constructor(configuration = {}) {
@@ -246,7 +248,6 @@ function querystring(params, 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) {
@@ -274,7 +275,6 @@ function canConsumeForm(consumes) {
}
return false;
}
-exports.canConsumeForm = canConsumeForm;
class JSONApiResponse {
constructor(raw, transformer = (jsonValue) => jsonValue) {
this.raw = raw;
diff --git a/dist/esm/apis/OrganizationApi.d.ts b/dist/esm/apis/OrganizationApi.d.ts
new file mode 100644
index 0000000..dc7693a
--- /dev/null
+++ b/dist/esm/apis/OrganizationApi.d.ts
@@ -0,0 +1,31 @@
+/**
+ * @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 { Organization } from '../models/index.js';
+export interface GetOrganizationByIdRequest {
+ organizationId: string;
+}
+/**
+ *
+ */
+export declare class OrganizationApi extends runtime.BaseAPI {
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ getOrganizationByIdRaw(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ getOrganizationById(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+}
diff --git a/dist/esm/apis/OrganizationApi.js b/dist/esm/apis/OrganizationApi.js
new file mode 100644
index 0000000..7950ef7
--- /dev/null
+++ b/dist/esm/apis/OrganizationApi.js
@@ -0,0 +1,48 @@
+/* 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 OrganizationApi extends runtime.BaseAPI {
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationByIdRaw(requestParameters, initOverrides) {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError('organizationId', 'Required parameter "organizationId" was null or undefined when calling getOrganizationById().');
+ }
+ const queryParameters = {};
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/organization/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationById(requestParameters, initOverrides) {
+ const response = await this.getOrganizationByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+}
diff --git a/dist/esm/apis/PostApi.d.ts b/dist/esm/apis/PostApi.d.ts
new file mode 100644
index 0000000..34baeb8
--- /dev/null
+++ b/dist/esm/apis/PostApi.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 { Language, Post } from '../models/index.js';
+export interface GetPostByIdRequest {
+ postId: string;
+ xSolvedacLanguage?: Language;
+}
+/**
+ *
+ */
+export declare class PostApi extends runtime.BaseAPI {
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ getPostByIdRaw(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ getPostById(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+}
diff --git a/dist/esm/apis/PostApi.js b/dist/esm/apis/PostApi.js
new file mode 100644
index 0000000..d3dc267
--- /dev/null
+++ b/dist/esm/apis/PostApi.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 PostApi extends runtime.BaseAPI {
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostByIdRaw(requestParameters, initOverrides) {
+ if (requestParameters['postId'] == null) {
+ throw new runtime.RequiredError('postId', 'Required parameter "postId" was null or undefined when calling getPostById().');
+ }
+ const queryParameters = {};
+ if (requestParameters['postId'] != null) {
+ queryParameters['postId'] = requestParameters['postId'];
+ }
+ const headerParameters = {};
+ if (requestParameters['xSolvedacLanguage'] != null) {
+ headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']);
+ }
+ const response = await this.request({
+ path: `/post/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostById(requestParameters, initOverrides) {
+ const response = await this.getPostByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+}
diff --git a/dist/esm/apis/RankingApi.d.ts b/dist/esm/apis/RankingApi.d.ts
index 1cc6933..b64fe45 100644
--- a/dist/esm/apis/RankingApi.d.ts
+++ b/dist/esm/apis/RankingApi.d.ts
@@ -10,11 +10,19 @@
* Do not edit the class manually.
*/
import * as runtime from '../runtime.js';
-import type { GetOrganizationRankingByACRating200Response, GetRankingByClass200Response, Language, OrganizationType } from '../models/index.js';
+import type { GetOrganizationRankingByACRating200Response, GetRankingByArenaRatingInOrganization200Response, GetRankingByClass200Response, Language, OrganizationType } from '../models/index.js';
export interface GetOrganizationRankingByACRatingRequest {
type?: OrganizationType;
page?: number;
}
+export interface GetRankingByACRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
+export interface GetRankingByArenaRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
export interface GetRankingByClassRequest {
xSolvedacLanguage?: Language;
page?: number;
@@ -53,6 +61,26 @@ export declare class RankingApi extends runtime.BaseAPI {
* 문제풀이 레이팅 순 단체 랭킹 가져오기
*/
getOrganizationRankingByACRating(requestParameters?: GetOrganizationRankingByACRatingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByACRatingInOrganizationRaw(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByACRatingInOrganization(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByArenaRatingInOrganizationRaw(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ getRankingByArenaRatingInOrganization(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
* CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다.
* CLASS 순 사용자 랭킹 가져오기
diff --git a/dist/esm/apis/RankingApi.js b/dist/esm/apis/RankingApi.js
index 597a0b6..85ceaf2 100644
--- a/dist/esm/apis/RankingApi.js
+++ b/dist/esm/apis/RankingApi.js
@@ -45,6 +45,70 @@ export class RankingApi extends runtime.BaseAPI {
const response = await this.getOrganizationRankingByACRatingRaw(requestParameters, initOverrides);
return await response.value();
}
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganizationRaw(requestParameters, initOverrides) {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError('organizationId', 'Required parameter "organizationId" was null or undefined when calling getRankingByACRatingInOrganization().');
+ }
+ const queryParameters = {};
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/ranking/in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganization(requestParameters, initOverrides) {
+ const response = await this.getRankingByACRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganizationRaw(requestParameters, initOverrides) {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError('organizationId', 'Required parameter "organizationId" was null or undefined when calling getRankingByArenaRatingInOrganization().');
+ }
+ const queryParameters = {};
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/ranking/arena_in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganization(requestParameters, initOverrides) {
+ const response = await this.getRankingByArenaRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다.
* CLASS 순 사용자 랭킹 가져오기
diff --git a/dist/esm/apis/SearchApi.d.ts b/dist/esm/apis/SearchApi.d.ts
index c3398b6..04eb350 100644
--- a/dist/esm/apis/SearchApi.d.ts
+++ b/dist/esm/apis/SearchApi.d.ts
@@ -10,7 +10,7 @@
* 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';
+import type { GetProblemsByIdList200Response, GetRankingByArenaRatingInOrganization200Response, GetSearchAutoCompletionsSuggestion, Language, SearchProblemQueryDirection, SearchProblemQuerySort, SearchProblemTag200Response } from '../models/index.js';
export interface GetSearchAutoCompletionsRequest {
query: string;
xSolvedacLanguage?: Language;
@@ -70,10 +70,10 @@ export declare class SearchApi extends runtime.BaseAPI {
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
}
diff --git a/dist/esm/apis/TagApi.d.ts b/dist/esm/apis/TagApi.d.ts
new file mode 100644
index 0000000..79cf82e
--- /dev/null
+++ b/dist/esm/apis/TagApi.d.ts
@@ -0,0 +1,44 @@
+/**
+ * @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 { ProblemTag, SearchProblemTag200Response } from '../models/index.js';
+export interface GetTagByKeyRequest {
+ key: string;
+}
+export interface GetTagListRequest {
+ page?: number;
+}
+/**
+ *
+ */
+export declare class TagApi extends runtime.BaseAPI {
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ getTagByKeyRaw(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ getTagByKey(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ getTagListRaw(requestParameters: GetTagListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ getTagList(requestParameters?: GetTagListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+}
diff --git a/dist/esm/apis/TagApi.js b/dist/esm/apis/TagApi.js
new file mode 100644
index 0000000..1b4efb1
--- /dev/null
+++ b/dist/esm/apis/TagApi.js
@@ -0,0 +1,74 @@
+/* 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 TagApi extends runtime.BaseAPI {
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKeyRaw(requestParameters, initOverrides) {
+ if (requestParameters['key'] == null) {
+ throw new runtime.RequiredError('key', 'Required parameter "key" was null or undefined when calling getTagByKey().');
+ }
+ const queryParameters = {};
+ if (requestParameters['key'] != null) {
+ queryParameters['key'] = requestParameters['key'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/tag/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKey(requestParameters, initOverrides) {
+ const response = await this.getTagByKeyRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagListRaw(requestParameters, initOverrides) {
+ const queryParameters = {};
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/tag/list`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagList(requestParameters = {}, initOverrides) {
+ const response = await this.getTagListRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+}
diff --git a/dist/esm/apis/UserApi.d.ts b/dist/esm/apis/UserApi.d.ts
index b242ffa..bca6728 100644
--- a/dist/esm/apis/UserApi.d.ts
+++ b/dist/esm/apis/UserApi.d.ts
@@ -10,17 +10,29 @@
* Do not edit the class manually.
*/
import * as runtime from '../runtime.js';
-import type { GetProblemsByIdList200Response, GetUserProblemStatsProblemStat, Language, Organization, SocialUser } from '../models/index.js';
+import type { GetProblemsByIdList200Response, GetUserClassStatsClassStat, GetUserContributionStatsContributionStat, GetUserProblemStatsProblemStat, GetUserProblemTagStats200Response, Language, Organization, SocialUser, UserAdditionalInfo } from '../models/index.js';
+export interface GetUserAdditionalInfoRequest {
+ handle: string;
+}
export interface GetUserByHandleRequest {
handle: string;
xSolvedacLanguage?: Language;
}
+export interface GetUserClassStatsRequest {
+ handle: string;
+}
+export interface GetUserContributionStatsRequest {
+ handle: string;
+}
export interface GetUserOrganizationsRequest {
handle: string;
}
export interface GetUserProblemStatsRequest {
handle: string;
}
+export interface GetUserProblemTagStatsRequest {
+ handle: string;
+}
export interface GetUserTop100Request {
handle: string;
xSolvedacLanguage?: Language;
@@ -29,6 +41,16 @@ export interface GetUserTop100Request {
*
*/
export declare class UserApi extends runtime.BaseAPI {
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ getUserAdditionalInfoRaw(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ getUserAdditionalInfo(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 정보 가져오기
@@ -39,6 +61,26 @@ export declare class UserApi extends runtime.BaseAPI {
* 사용자 핸들로 정보 가져오기
*/
getUserByHandle(requestParameters: GetUserByHandleRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserClassStatsRaw(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserClassStats(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ getUserContributionStatsRaw(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>;
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ getUserContributionStats(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 단체 가져오기
@@ -59,6 +101,16 @@ export declare class UserApi extends runtime.BaseAPI {
* 문제 수준별로 사용자가 푼 문제 수 가져오기
*/
getUserProblemStats(requestParameters: GetUserProblemStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserProblemTagStatsRaw(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>;
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ getUserProblemTagStats(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise;
/**
* 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다
* 상위 100 문제 가져오기
diff --git a/dist/esm/apis/UserApi.js b/dist/esm/apis/UserApi.js
index 648e7e4..41cdfc0 100644
--- a/dist/esm/apis/UserApi.js
+++ b/dist/esm/apis/UserApi.js
@@ -16,6 +16,35 @@ import * as runtime from '../runtime.js';
*
*/
export class UserApi extends runtime.BaseAPI {
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfoRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserAdditionalInfo().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/additional_info`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfo(requestParameters, initOverrides) {
+ const response = await this.getUserAdditionalInfoRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 정보 가져오기
@@ -48,6 +77,64 @@ export class UserApi extends runtime.BaseAPI {
const response = await this.getUserByHandleRaw(requestParameters, initOverrides);
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStatsRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserClassStats().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/class_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStats(requestParameters, initOverrides) {
+ const response = await this.getUserClassStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStatsRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserContributionStats().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/contribution_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStats(requestParameters, initOverrides) {
+ const response = await this.getUserContributionStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 단체 가져오기
@@ -106,6 +193,35 @@ export class UserApi extends runtime.BaseAPI {
const response = await this.getUserProblemStatsRaw(requestParameters, initOverrides);
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStatsRaw(requestParameters, initOverrides) {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError('handle', 'Required parameter "handle" was null or undefined when calling getUserProblemTagStats().');
+ }
+ const queryParameters = {};
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+ const headerParameters = {};
+ const response = await this.request({
+ path: `/user/problem_tag_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+ return new runtime.JSONApiResponse(response);
+ }
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStats(requestParameters, initOverrides) {
+ const response = await this.getUserProblemTagStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
/**
* 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다
* 상위 100 문제 가져오기
diff --git a/dist/esm/apis/index.d.ts b/dist/esm/apis/index.d.ts
index 00ebfa1..2481fe7 100644
--- a/dist/esm/apis/index.d.ts
+++ b/dist/esm/apis/index.d.ts
@@ -2,8 +2,11 @@ export * from './AccountApi.js';
export * from './BackgroundApi.js';
export * from './BadgeApi.js';
export * from './CoinsApi.js';
+export * from './OrganizationApi.js';
export * from './OtherApi.js';
+export * from './PostApi.js';
export * from './ProblemApi.js';
export * from './RankingApi.js';
export * from './SearchApi.js';
+export * from './TagApi.js';
export * from './UserApi.js';
diff --git a/dist/esm/apis/index.js b/dist/esm/apis/index.js
index 1854d90..50542e5 100644
--- a/dist/esm/apis/index.js
+++ b/dist/esm/apis/index.js
@@ -4,8 +4,11 @@ export * from './AccountApi.js';
export * from './BackgroundApi.js';
export * from './BadgeApi.js';
export * from './CoinsApi.js';
+export * from './OrganizationApi.js';
export * from './OtherApi.js';
+export * from './PostApi.js';
export * from './ProblemApi.js';
export * from './RankingApi.js';
export * from './SearchApi.js';
+export * from './TagApi.js';
export * from './UserApi.js';
diff --git a/dist/esm/models/index.d.ts b/dist/esm/models/index.d.ts
index e19e4ba..34a7aa1 100644
--- a/dist/esm/models/index.d.ts
+++ b/dist/esm/models/index.d.ts
@@ -542,6 +542,25 @@ export interface GetProblemsCountGroupByLevelLevelEntry {
*/
count: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetRankingByArenaRatingInOrganization200Response
+ */
+export interface GetRankingByArenaRatingInOrganization200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ items: Array;
+}
/**
* 페이지네이션 가능한 쿼리의 응답 결과입니다.
* @export
@@ -930,6 +949,96 @@ export declare const GetSearchAutoCompletionsUserEntryClassDecorationEnum: {
readonly Gold: "gold";
};
export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum];
+/**
+ *
+ * @export
+ * @interface GetUserClassStatsClassStat
+ */
+export interface GetUserClassStatsClassStat {
+ /**
+ * 클래스 번호입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ _class: GetUserClassStatsClassStatClassEnum;
+ /**
+ * solved.ac에 등록된 해당 클래스의 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 클래스 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ totalSolved: number;
+ /**
+ * solved.ac에 등록된 해당 클래스의 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentials: number;
+ /**
+ * 사용자가 푼 클래스 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentialSolved: number;
+ /**
+ * 사용자가 획득한 클래스 치장입니다.
+ * @type {string}
+ * @memberof GetUserClassStatsClassStat
+ */
+ decoration: string;
+}
+/**
+ * @export
+ */
+export declare const GetUserClassStatsClassStatClassEnum: {
+ 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 GetUserClassStatsClassStatClassEnum = typeof GetUserClassStatsClassStatClassEnum[keyof typeof GetUserClassStatsClassStatClassEnum];
+/**
+ *
+ * @export
+ * @interface GetUserContributionStatsContributionStat
+ */
+export interface GetUserContributionStatsContributionStat {
+ /**
+ * solved.ac에 등록된 해당 수준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solved: number;
+ /**
+ * 사용자가 푼 표준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solvedStandards: number;
+ /**
+ * 사용자가 기여한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ contributed: number;
+}
/**
*
* @export
@@ -967,6 +1076,62 @@ export interface GetUserProblemStatsProblemStat {
*/
tried: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetUserProblemTagStats200Response
+ */
+export interface GetUserProblemTagStats200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ items: Array;
+}
+/**
+ *
+ * @export
+ * @interface GetUserProblemTagStatsProblemTagStat
+ */
+export interface GetUserProblemTagStatsProblemTagStat {
+ /**
+ *
+ * @type {ProblemTag}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tag: ProblemTag;
+ /**
+ * solved.ac에 등록된 해당 태그 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ solved: number;
+ /**
+ * 사용자가 부분 성공한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ partial: number;
+ /**
+ * 사용자가 시도해 본 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tried: number;
+}
/**
* 사용자가 사용할 수 있는 아이템입니다.
* @export
@@ -1090,6 +1255,43 @@ export declare const OrganizationType: {
readonly Undefined: "undefined";
};
export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType];
+/**
+ * solved.ac의 게시글입니다.
+ * @export
+ * @interface Post
+ */
+export interface Post {
+ /**
+ * 게시글의 아이디입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ postId: string;
+ /**
+ * 게시글의 제목입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ title: string;
+ /**
+ * 게시글의 내용입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ content: string;
+ /**
+ * 게시글이 작성된 언어입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ language: string;
+ /**
+ * 게시글 내용의 타입입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ type: string;
+}
/**
* 문제 정보입니다.
* @export
@@ -1670,25 +1872,6 @@ export interface SearchProblemTag200Response {
*/
items: Array;
}
-/**
- * 페이지네이션 가능한 쿼리의 응답 결과입니다.
- * @export
- * @interface SearchUser200Response
- */
-export interface SearchUser200Response {
- /**
- * 전체 원소 수입니다.
- * @type {number}
- * @memberof SearchUser200Response
- */
- count: number;
- /**
- * 현재 페이지의 원소 목록입니다.
- * @type {Array}
- * @memberof SearchUser200Response
- */
- items: Array;
-}
/**
* solved.ac 사이트의 통계 정보입니다.
* @export
@@ -2289,6 +2472,65 @@ export declare const UserClassDecorationEnum: {
readonly Gold: "gold";
};
export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum];
+/**
+ * solved.ac 사용자 부가 정보입니다.
+ * @export
+ * @interface UserAdditionalInfo
+ */
+export interface UserAdditionalInfo {
+ /**
+ * 사용자의 국가/지역 코드입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ countryCode: string;
+ /**
+ * 사용자의 성별입니다.
+ * - 0: 선택 안 함
+ * - 1: 남성
+ * - 2: 여성
+ * - 9: 기타
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ gender: number;
+ /**
+ * 사용자를 영어로 표기할 때 사용하는 대명사입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ pronouns: string;
+ /**
+ * 사용자의 생년입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthYear: number;
+ /**
+ * 사용자의 생월입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthMonth: number;
+ /**
+ * 사용자의 생일입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthDay: number;
+ /**
+ * 사용자의 영어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ name: string;
+ /**
+ * 사용자의 모국어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ nameNative: string;
+}
/**
* 사용자 동의 여부입니다.
* @export
diff --git a/dist/esm/models/index.js b/dist/esm/models/index.js
index 297ec62..9473e77 100644
--- a/dist/esm/models/index.js
+++ b/dist/esm/models/index.js
@@ -126,6 +126,21 @@ export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = {
Silver: 'silver',
Gold: 'gold'
};
+/**
+ * @export
+ */
+export const GetUserClassStatsClassStatClassEnum = {
+ 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
+};
/**
* solved.ac에서 지원하는 사용자 언어입니다
* @export
diff --git a/src/cjs/.openapi-generator/FILES b/src/cjs/.openapi-generator/FILES
index 430bc56..5b63d42 100644
--- a/src/cjs/.openapi-generator/FILES
+++ b/src/cjs/.openapi-generator/FILES
@@ -3,10 +3,13 @@ apis/AccountApi.ts
apis/BackgroundApi.ts
apis/BadgeApi.ts
apis/CoinsApi.ts
+apis/OrganizationApi.ts
apis/OtherApi.ts
+apis/PostApi.ts
apis/ProblemApi.ts
apis/RankingApi.ts
apis/SearchApi.ts
+apis/TagApi.ts
apis/UserApi.ts
apis/index.ts
index.ts
diff --git a/src/cjs/apis/OrganizationApi.cts b/src/cjs/apis/OrganizationApi.cts
new file mode 100644
index 0000000..148d2cf
--- /dev/null
+++ b/src/cjs/apis/OrganizationApi.cts
@@ -0,0 +1,69 @@
+/* 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 {
+ Organization,
+} from '../models/index.cjs';
+
+export interface GetOrganizationByIdRequest {
+ organizationId: string;
+}
+
+/**
+ *
+ */
+export class OrganizationApi extends runtime.BaseAPI {
+
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationByIdRaw(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError(
+ 'organizationId',
+ 'Required parameter "organizationId" was null or undefined when calling getOrganizationById().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/organization/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationById(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getOrganizationByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/cjs/apis/PostApi.cts b/src/cjs/apis/PostApi.cts
new file mode 100644
index 0000000..81ee3d8
--- /dev/null
+++ b/src/cjs/apis/PostApi.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 {
+ Language,
+ Post,
+} from '../models/index.cjs';
+
+export interface GetPostByIdRequest {
+ postId: string;
+ xSolvedacLanguage?: Language;
+}
+
+/**
+ *
+ */
+export class PostApi extends runtime.BaseAPI {
+
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostByIdRaw(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['postId'] == null) {
+ throw new runtime.RequiredError(
+ 'postId',
+ 'Required parameter "postId" was null or undefined when calling getPostById().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['postId'] != null) {
+ queryParameters['postId'] = requestParameters['postId'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (requestParameters['xSolvedacLanguage'] != null) {
+ headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']);
+ }
+
+ const response = await this.request({
+ path: `/post/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostById(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getPostByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/cjs/apis/RankingApi.cts b/src/cjs/apis/RankingApi.cts
index 63831e9..87dd429 100644
--- a/src/cjs/apis/RankingApi.cts
+++ b/src/cjs/apis/RankingApi.cts
@@ -16,6 +16,7 @@
import * as runtime from '../runtime.cjs';
import type {
GetOrganizationRankingByACRating200Response,
+ GetRankingByArenaRatingInOrganization200Response,
GetRankingByClass200Response,
Language,
OrganizationType,
@@ -26,6 +27,16 @@ export interface GetOrganizationRankingByACRatingRequest {
page?: number;
}
+export interface GetRankingByACRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
+
+export interface GetRankingByArenaRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
+
export interface GetRankingByClassRequest {
xSolvedacLanguage?: Language;
page?: number;
@@ -97,6 +108,92 @@ export class RankingApi extends runtime.BaseAPI {
return await response.value();
}
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganizationRaw(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError(
+ 'organizationId',
+ 'Required parameter "organizationId" was null or undefined when calling getRankingByACRatingInOrganization().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/ranking/in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganization(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getRankingByACRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganizationRaw(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError(
+ 'organizationId',
+ 'Required parameter "organizationId" was null or undefined when calling getRankingByArenaRatingInOrganization().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/ranking/arena_in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganization(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getRankingByArenaRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다.
* CLASS 순 사용자 랭킹 가져오기
diff --git a/src/cjs/apis/SearchApi.cts b/src/cjs/apis/SearchApi.cts
index 7c95bc0..49b2ca9 100644
--- a/src/cjs/apis/SearchApi.cts
+++ b/src/cjs/apis/SearchApi.cts
@@ -16,12 +16,12 @@
import * as runtime from '../runtime.cjs';
import type {
GetProblemsByIdList200Response,
+ GetRankingByArenaRatingInOrganization200Response,
GetSearchAutoCompletionsSuggestion,
Language,
SearchProblemQueryDirection,
SearchProblemQuerySort,
SearchProblemTag200Response,
- SearchUser200Response,
} from '../models/index.cjs';
export interface GetSearchAutoCompletionsRequest {
@@ -217,7 +217,7 @@ export class SearchApi extends runtime.BaseAPI {
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
if (requestParameters['query'] == null) {
throw new runtime.RequiredError(
'query',
@@ -255,7 +255,7 @@ export class SearchApi extends runtime.BaseAPI {
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- async searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ 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/TagApi.cts b/src/cjs/apis/TagApi.cts
new file mode 100644
index 0000000..273ea1f
--- /dev/null
+++ b/src/cjs/apis/TagApi.cts
@@ -0,0 +1,106 @@
+/* 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 {
+ ProblemTag,
+ SearchProblemTag200Response,
+} from '../models/index.cjs';
+
+export interface GetTagByKeyRequest {
+ key: string;
+}
+
+export interface GetTagListRequest {
+ page?: number;
+}
+
+/**
+ *
+ */
+export class TagApi extends runtime.BaseAPI {
+
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKeyRaw(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['key'] == null) {
+ throw new runtime.RequiredError(
+ 'key',
+ 'Required parameter "key" was null or undefined when calling getTagByKey().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['key'] != null) {
+ queryParameters['key'] = requestParameters['key'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/tag/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKey(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getTagByKeyRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagListRaw(requestParameters: GetTagListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const queryParameters: any = {};
+
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/tag/list`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagList(requestParameters: GetTagListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getTagListRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/cjs/apis/UserApi.cts b/src/cjs/apis/UserApi.cts
index 41380ed..c3f9814 100644
--- a/src/cjs/apis/UserApi.cts
+++ b/src/cjs/apis/UserApi.cts
@@ -16,17 +16,33 @@
import * as runtime from '../runtime.cjs';
import type {
GetProblemsByIdList200Response,
+ GetUserClassStatsClassStat,
+ GetUserContributionStatsContributionStat,
GetUserProblemStatsProblemStat,
+ GetUserProblemTagStats200Response,
Language,
Organization,
SocialUser,
+ UserAdditionalInfo,
} from '../models/index.cjs';
+export interface GetUserAdditionalInfoRequest {
+ handle: string;
+}
+
export interface GetUserByHandleRequest {
handle: string;
xSolvedacLanguage?: Language;
}
+export interface GetUserClassStatsRequest {
+ handle: string;
+}
+
+export interface GetUserContributionStatsRequest {
+ handle: string;
+}
+
export interface GetUserOrganizationsRequest {
handle: string;
}
@@ -35,6 +51,10 @@ export interface GetUserProblemStatsRequest {
handle: string;
}
+export interface GetUserProblemTagStatsRequest {
+ handle: string;
+}
+
export interface GetUserTop100Request {
handle: string;
xSolvedacLanguage?: Language;
@@ -45,6 +65,45 @@ export interface GetUserTop100Request {
*/
export class UserApi extends runtime.BaseAPI {
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfoRaw(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserAdditionalInfo().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/additional_info`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfo(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getUserAdditionalInfoRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 정보 가져오기
@@ -88,6 +147,84 @@ export class UserApi extends runtime.BaseAPI {
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStatsRaw(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserClassStats().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/class_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStats(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const response = await this.getUserClassStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStatsRaw(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserContributionStats().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/contribution_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStats(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const response = await this.getUserContributionStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 단체 가져오기
@@ -166,6 +303,45 @@ export class UserApi extends runtime.BaseAPI {
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStatsRaw(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserProblemTagStats().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/problem_tag_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStats(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getUserProblemTagStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다
* 상위 100 문제 가져오기
diff --git a/src/cjs/apis/index.cts b/src/cjs/apis/index.cts
index 3d58a6c..238e1f3 100644
--- a/src/cjs/apis/index.cts
+++ b/src/cjs/apis/index.cts
@@ -4,8 +4,11 @@ export * from './AccountApi.cjs';
export * from './BackgroundApi.cjs';
export * from './BadgeApi.cjs';
export * from './CoinsApi.cjs';
+export * from './OrganizationApi.cjs';
export * from './OtherApi.cjs';
+export * from './PostApi.cjs';
export * from './ProblemApi.cjs';
export * from './RankingApi.cjs';
export * from './SearchApi.cjs';
+export * from './TagApi.cjs';
export * from './UserApi.cjs';
diff --git a/src/cjs/models/index.cts b/src/cjs/models/index.cts
index 2e084e4..6712a3c 100644
--- a/src/cjs/models/index.cts
+++ b/src/cjs/models/index.cts
@@ -558,6 +558,25 @@ export interface GetProblemsCountGroupByLevelLevelEntry {
*/
count: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetRankingByArenaRatingInOrganization200Response
+ */
+export interface GetRankingByArenaRatingInOrganization200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ items: Array;
+}
/**
* 페이지네이션 가능한 쿼리의 응답 결과입니다.
* @export
@@ -950,6 +969,99 @@ export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = {
} as const;
export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum];
+/**
+ *
+ * @export
+ * @interface GetUserClassStatsClassStat
+ */
+export interface GetUserClassStatsClassStat {
+ /**
+ * 클래스 번호입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ _class: GetUserClassStatsClassStatClassEnum;
+ /**
+ * solved.ac에 등록된 해당 클래스의 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 클래스 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ totalSolved: number;
+ /**
+ * solved.ac에 등록된 해당 클래스의 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentials: number;
+ /**
+ * 사용자가 푼 클래스 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentialSolved: number;
+ /**
+ * 사용자가 획득한 클래스 치장입니다.
+ * @type {string}
+ * @memberof GetUserClassStatsClassStat
+ */
+ decoration: string;
+}
+
+
+/**
+ * @export
+ */
+export const GetUserClassStatsClassStatClassEnum = {
+ 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 GetUserClassStatsClassStatClassEnum = typeof GetUserClassStatsClassStatClassEnum[keyof typeof GetUserClassStatsClassStatClassEnum];
+
+/**
+ *
+ * @export
+ * @interface GetUserContributionStatsContributionStat
+ */
+export interface GetUserContributionStatsContributionStat {
+ /**
+ * solved.ac에 등록된 해당 수준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solved: number;
+ /**
+ * 사용자가 푼 표준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solvedStandards: number;
+ /**
+ * 사용자가 기여한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ contributed: number;
+}
/**
*
* @export
@@ -987,6 +1099,62 @@ export interface GetUserProblemStatsProblemStat {
*/
tried: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetUserProblemTagStats200Response
+ */
+export interface GetUserProblemTagStats200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ items: Array;
+}
+/**
+ *
+ * @export
+ * @interface GetUserProblemTagStatsProblemTagStat
+ */
+export interface GetUserProblemTagStatsProblemTagStat {
+ /**
+ *
+ * @type {ProblemTag}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tag: ProblemTag;
+ /**
+ * solved.ac에 등록된 해당 태그 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ solved: number;
+ /**
+ * 사용자가 부분 성공한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ partial: number;
+ /**
+ * 사용자가 시도해 본 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tried: number;
+}
/**
* 사용자가 사용할 수 있는 아이템입니다.
* @export
@@ -1114,6 +1282,43 @@ export const OrganizationType = {
} as const;
export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType];
+/**
+ * solved.ac의 게시글입니다.
+ * @export
+ * @interface Post
+ */
+export interface Post {
+ /**
+ * 게시글의 아이디입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ postId: string;
+ /**
+ * 게시글의 제목입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ title: string;
+ /**
+ * 게시글의 내용입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ content: string;
+ /**
+ * 게시글이 작성된 언어입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ language: string;
+ /**
+ * 게시글 내용의 타입입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ type: string;
+}
/**
* 문제 정보입니다.
* @export
@@ -1704,25 +1909,6 @@ export interface SearchProblemTag200Response {
*/
items: Array;
}
-/**
- * 페이지네이션 가능한 쿼리의 응답 결과입니다.
- * @export
- * @interface SearchUser200Response
- */
-export interface SearchUser200Response {
- /**
- * 전체 원소 수입니다.
- * @type {number}
- * @memberof SearchUser200Response
- */
- count: number;
- /**
- * 현재 페이지의 원소 목록입니다.
- * @type {Array}
- * @memberof SearchUser200Response
- */
- items: Array;
-}
/**
* solved.ac 사이트의 통계 정보입니다.
* @export
@@ -2333,6 +2519,65 @@ export const UserClassDecorationEnum = {
} as const;
export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum];
+/**
+ * solved.ac 사용자 부가 정보입니다.
+ * @export
+ * @interface UserAdditionalInfo
+ */
+export interface UserAdditionalInfo {
+ /**
+ * 사용자의 국가/지역 코드입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ countryCode: string;
+ /**
+ * 사용자의 성별입니다.
+ * - 0: 선택 안 함
+ * - 1: 남성
+ * - 2: 여성
+ * - 9: 기타
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ gender: number;
+ /**
+ * 사용자를 영어로 표기할 때 사용하는 대명사입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ pronouns: string;
+ /**
+ * 사용자의 생년입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthYear: number;
+ /**
+ * 사용자의 생월입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthMonth: number;
+ /**
+ * 사용자의 생일입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthDay: number;
+ /**
+ * 사용자의 영어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ name: string;
+ /**
+ * 사용자의 모국어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ nameNative: string;
+}
/**
* 사용자 동의 여부입니다.
* @export
diff --git a/src/esm/.openapi-generator/FILES b/src/esm/.openapi-generator/FILES
index 430bc56..5b63d42 100644
--- a/src/esm/.openapi-generator/FILES
+++ b/src/esm/.openapi-generator/FILES
@@ -3,10 +3,13 @@ apis/AccountApi.ts
apis/BackgroundApi.ts
apis/BadgeApi.ts
apis/CoinsApi.ts
+apis/OrganizationApi.ts
apis/OtherApi.ts
+apis/PostApi.ts
apis/ProblemApi.ts
apis/RankingApi.ts
apis/SearchApi.ts
+apis/TagApi.ts
apis/UserApi.ts
apis/index.ts
index.ts
diff --git a/src/esm/apis/OrganizationApi.ts b/src/esm/apis/OrganizationApi.ts
new file mode 100644
index 0000000..23abdcf
--- /dev/null
+++ b/src/esm/apis/OrganizationApi.ts
@@ -0,0 +1,69 @@
+/* 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 {
+ Organization,
+} from '../models/index.js';
+
+export interface GetOrganizationByIdRequest {
+ organizationId: string;
+}
+
+/**
+ *
+ */
+export class OrganizationApi extends runtime.BaseAPI {
+
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationByIdRaw(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError(
+ 'organizationId',
+ 'Required parameter "organizationId" was null or undefined when calling getOrganizationById().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/organization/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 ID의 단체 정보를 가져옵니다.
+ * 단체 ID로 단체 정보 가져오기
+ */
+ async getOrganizationById(requestParameters: GetOrganizationByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getOrganizationByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/esm/apis/PostApi.ts b/src/esm/apis/PostApi.ts
new file mode 100644
index 0000000..5d546f0
--- /dev/null
+++ b/src/esm/apis/PostApi.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 {
+ Language,
+ Post,
+} from '../models/index.js';
+
+export interface GetPostByIdRequest {
+ postId: string;
+ xSolvedacLanguage?: Language;
+}
+
+/**
+ *
+ */
+export class PostApi extends runtime.BaseAPI {
+
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostByIdRaw(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['postId'] == null) {
+ throw new runtime.RequiredError(
+ 'postId',
+ 'Required parameter "postId" was null or undefined when calling getPostById().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['postId'] != null) {
+ queryParameters['postId'] = requestParameters['postId'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (requestParameters['xSolvedacLanguage'] != null) {
+ headerParameters['x-solvedac-language'] = String(requestParameters['xSolvedacLanguage']);
+ }
+
+ const response = await this.request({
+ path: `/post/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 제목의 게시글을 가져옵니다.
+ * 게시글 제목으로 게시글 가져오기
+ */
+ async getPostById(requestParameters: GetPostByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getPostByIdRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/esm/apis/RankingApi.ts b/src/esm/apis/RankingApi.ts
index 227046f..bf265fe 100644
--- a/src/esm/apis/RankingApi.ts
+++ b/src/esm/apis/RankingApi.ts
@@ -16,6 +16,7 @@
import * as runtime from '../runtime.js';
import type {
GetOrganizationRankingByACRating200Response,
+ GetRankingByArenaRatingInOrganization200Response,
GetRankingByClass200Response,
Language,
OrganizationType,
@@ -26,6 +27,16 @@ export interface GetOrganizationRankingByACRatingRequest {
page?: number;
}
+export interface GetRankingByACRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
+
+export interface GetRankingByArenaRatingInOrganizationRequest {
+ organizationId: number;
+ page?: number;
+}
+
export interface GetRankingByClassRequest {
xSolvedacLanguage?: Language;
page?: number;
@@ -97,6 +108,92 @@ export class RankingApi extends runtime.BaseAPI {
return await response.value();
}
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganizationRaw(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError(
+ 'organizationId',
+ 'Required parameter "organizationId" was null or undefined when calling getRankingByACRatingInOrganization().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/ranking/in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 단체에 속한 사용자 중에서 문제풀이 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 문제풀이 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByACRatingInOrganization(requestParameters: GetRankingByACRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getRankingByACRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganizationRaw(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['organizationId'] == null) {
+ throw new runtime.RequiredError(
+ 'organizationId',
+ 'Required parameter "organizationId" was null or undefined when calling getRankingByArenaRatingInOrganization().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationId'] != null) {
+ queryParameters['organizationId'] = requestParameters['organizationId'];
+ }
+
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/ranking/arena_in_organization`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 단체에 속한 사용자 중에서 아레나 레이팅이 높은 사용자가 먼저 오도록 정렬한 목록을 가져옵니다.
+ * 아레나 레이팅 순 단체 내 랭킹 가져오기
+ */
+ async getRankingByArenaRatingInOrganization(requestParameters: GetRankingByArenaRatingInOrganizationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getRankingByArenaRatingInOrganizationRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* CLASS가 높은 사용자가 먼저 오도록 정렬한 사용자 목록을 가져옵니다.
* CLASS 순 사용자 랭킹 가져오기
diff --git a/src/esm/apis/SearchApi.ts b/src/esm/apis/SearchApi.ts
index b39393a..ae983f4 100644
--- a/src/esm/apis/SearchApi.ts
+++ b/src/esm/apis/SearchApi.ts
@@ -16,12 +16,12 @@
import * as runtime from '../runtime.js';
import type {
GetProblemsByIdList200Response,
+ GetRankingByArenaRatingInOrganization200Response,
GetSearchAutoCompletionsSuggestion,
Language,
SearchProblemQueryDirection,
SearchProblemQuerySort,
SearchProblemTag200Response,
- SearchUser200Response,
} from '../models/index.js';
export interface GetSearchAutoCompletionsRequest {
@@ -217,7 +217,7 @@ export class SearchApi extends runtime.BaseAPI {
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ async searchUserRaw(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
if (requestParameters['query'] == null) {
throw new runtime.RequiredError(
'query',
@@ -255,7 +255,7 @@ export class SearchApi extends runtime.BaseAPI {
* 주어진 쿼리에 따라 사용자를 검색합니다.
* 사용자 검색하기
*/
- async searchUser(requestParameters: SearchUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ 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/TagApi.ts b/src/esm/apis/TagApi.ts
new file mode 100644
index 0000000..f446a39
--- /dev/null
+++ b/src/esm/apis/TagApi.ts
@@ -0,0 +1,106 @@
+/* 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 {
+ ProblemTag,
+ SearchProblemTag200Response,
+} from '../models/index.js';
+
+export interface GetTagByKeyRequest {
+ key: string;
+}
+
+export interface GetTagListRequest {
+ page?: number;
+}
+
+/**
+ *
+ */
+export class TagApi extends runtime.BaseAPI {
+
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKeyRaw(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['key'] == null) {
+ throw new runtime.RequiredError(
+ 'key',
+ 'Required parameter "key" was null or undefined when calling getTagByKey().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['key'] != null) {
+ queryParameters['key'] = requestParameters['key'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/tag/show`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 태그 ID로 태그 정보를 가져옵니다.
+ * 태그 ID로 태그 정보 가져오기
+ */
+ async getTagByKey(requestParameters: GetTagByKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getTagByKeyRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagListRaw(requestParameters: GetTagListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const queryParameters: any = {};
+
+ if (requestParameters['page'] != null) {
+ queryParameters['page'] = requestParameters['page'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/tag/list`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 태그 목록을 가져옵니다.
+ * 태그 목록 가져오기
+ */
+ async getTagList(requestParameters: GetTagListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getTagListRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/esm/apis/UserApi.ts b/src/esm/apis/UserApi.ts
index c57cf03..5fc1edb 100644
--- a/src/esm/apis/UserApi.ts
+++ b/src/esm/apis/UserApi.ts
@@ -16,17 +16,33 @@
import * as runtime from '../runtime.js';
import type {
GetProblemsByIdList200Response,
+ GetUserClassStatsClassStat,
+ GetUserContributionStatsContributionStat,
GetUserProblemStatsProblemStat,
+ GetUserProblemTagStats200Response,
Language,
Organization,
SocialUser,
+ UserAdditionalInfo,
} from '../models/index.js';
+export interface GetUserAdditionalInfoRequest {
+ handle: string;
+}
+
export interface GetUserByHandleRequest {
handle: string;
xSolvedacLanguage?: Language;
}
+export interface GetUserClassStatsRequest {
+ handle: string;
+}
+
+export interface GetUserContributionStatsRequest {
+ handle: string;
+}
+
export interface GetUserOrganizationsRequest {
handle: string;
}
@@ -35,6 +51,10 @@ export interface GetUserProblemStatsRequest {
handle: string;
}
+export interface GetUserProblemTagStatsRequest {
+ handle: string;
+}
+
export interface GetUserTop100Request {
handle: string;
xSolvedacLanguage?: Language;
@@ -45,6 +65,45 @@ export interface GetUserTop100Request {
*/
export class UserApi extends runtime.BaseAPI {
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfoRaw(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserAdditionalInfo().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/additional_info`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들을 가진 사용자의 부가 정보를 가져옵니다.
+ * 사용자 핸들로 부가 정보 가져오기
+ */
+ async getUserAdditionalInfo(requestParameters: GetUserAdditionalInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getUserAdditionalInfoRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 정보 가져오기
@@ -88,6 +147,84 @@ export class UserApi extends runtime.BaseAPI {
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStatsRaw(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserClassStats().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/class_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 클래스별로 나누어 가져옵니다.
+ * 클래스별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserClassStats(requestParameters: GetUserClassStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const response = await this.getUserClassStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStatsRaw(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserContributionStats().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/contribution_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들의 사용자가 기여한 문제 수를 문제 수준별로 나누어 가져옵니다.
+ * 문제 수준별로 사용자가 기여한 문제 수 가져오기
+ */
+ async getUserContributionStats(requestParameters: GetUserContributionStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const response = await this.getUserContributionStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* 해당 핸들의 사용자 정보를 가져옵니다. 만약 요청자가 로그인 중이라면 라이벌 여부도 가져옵니다. 로그인 중이 아니라면 라이벌 등 로그인해야 알 수 있는 정보는 기본값 처리됩니다.
* 사용자 핸들로 단체 가져오기
@@ -166,6 +303,45 @@ export class UserApi extends runtime.BaseAPI {
return await response.value();
}
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStatsRaw(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ if (requestParameters['handle'] == null) {
+ throw new runtime.RequiredError(
+ 'handle',
+ 'Required parameter "handle" was null or undefined when calling getUserProblemTagStats().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['handle'] != null) {
+ queryParameters['handle'] = requestParameters['handle'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ const response = await this.request({
+ path: `/user/problem_tag_stats`,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ }, initOverrides);
+
+ return new runtime.JSONApiResponse(response);
+ }
+
+ /**
+ * 해당 핸들의 사용자가 푼 문제 수를 태그별로 나누어 가져옵니다.
+ * 태그별로 사용자가 푼 문제 수 가져오기
+ */
+ async getUserProblemTagStats(requestParameters: GetUserProblemTagStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getUserProblemTagStatsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
/**
* 사용자가 푼 문제 중 문제 수준이 높은 상위 100 문제를 가져옵니다
* 상위 100 문제 가져오기
diff --git a/src/esm/apis/index.ts b/src/esm/apis/index.ts
index 1854d90..50542e5 100644
--- a/src/esm/apis/index.ts
+++ b/src/esm/apis/index.ts
@@ -4,8 +4,11 @@ export * from './AccountApi.js';
export * from './BackgroundApi.js';
export * from './BadgeApi.js';
export * from './CoinsApi.js';
+export * from './OrganizationApi.js';
export * from './OtherApi.js';
+export * from './PostApi.js';
export * from './ProblemApi.js';
export * from './RankingApi.js';
export * from './SearchApi.js';
+export * from './TagApi.js';
export * from './UserApi.js';
diff --git a/src/esm/apis/mod.ts b/src/esm/apis/mod.ts
index 1854d90..50542e5 100644
--- a/src/esm/apis/mod.ts
+++ b/src/esm/apis/mod.ts
@@ -4,8 +4,11 @@ export * from './AccountApi.js';
export * from './BackgroundApi.js';
export * from './BadgeApi.js';
export * from './CoinsApi.js';
+export * from './OrganizationApi.js';
export * from './OtherApi.js';
+export * from './PostApi.js';
export * from './ProblemApi.js';
export * from './RankingApi.js';
export * from './SearchApi.js';
+export * from './TagApi.js';
export * from './UserApi.js';
diff --git a/src/esm/models/index.ts b/src/esm/models/index.ts
index 2e084e4..6712a3c 100644
--- a/src/esm/models/index.ts
+++ b/src/esm/models/index.ts
@@ -558,6 +558,25 @@ export interface GetProblemsCountGroupByLevelLevelEntry {
*/
count: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetRankingByArenaRatingInOrganization200Response
+ */
+export interface GetRankingByArenaRatingInOrganization200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ items: Array;
+}
/**
* 페이지네이션 가능한 쿼리의 응답 결과입니다.
* @export
@@ -950,6 +969,99 @@ export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = {
} as const;
export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum];
+/**
+ *
+ * @export
+ * @interface GetUserClassStatsClassStat
+ */
+export interface GetUserClassStatsClassStat {
+ /**
+ * 클래스 번호입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ _class: GetUserClassStatsClassStatClassEnum;
+ /**
+ * solved.ac에 등록된 해당 클래스의 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 클래스 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ totalSolved: number;
+ /**
+ * solved.ac에 등록된 해당 클래스의 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentials: number;
+ /**
+ * 사용자가 푼 클래스 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentialSolved: number;
+ /**
+ * 사용자가 획득한 클래스 치장입니다.
+ * @type {string}
+ * @memberof GetUserClassStatsClassStat
+ */
+ decoration: string;
+}
+
+
+/**
+ * @export
+ */
+export const GetUserClassStatsClassStatClassEnum = {
+ 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 GetUserClassStatsClassStatClassEnum = typeof GetUserClassStatsClassStatClassEnum[keyof typeof GetUserClassStatsClassStatClassEnum];
+
+/**
+ *
+ * @export
+ * @interface GetUserContributionStatsContributionStat
+ */
+export interface GetUserContributionStatsContributionStat {
+ /**
+ * solved.ac에 등록된 해당 수준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solved: number;
+ /**
+ * 사용자가 푼 표준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solvedStandards: number;
+ /**
+ * 사용자가 기여한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ contributed: number;
+}
/**
*
* @export
@@ -987,6 +1099,62 @@ export interface GetUserProblemStatsProblemStat {
*/
tried: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetUserProblemTagStats200Response
+ */
+export interface GetUserProblemTagStats200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ items: Array;
+}
+/**
+ *
+ * @export
+ * @interface GetUserProblemTagStatsProblemTagStat
+ */
+export interface GetUserProblemTagStatsProblemTagStat {
+ /**
+ *
+ * @type {ProblemTag}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tag: ProblemTag;
+ /**
+ * solved.ac에 등록된 해당 태그 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ solved: number;
+ /**
+ * 사용자가 부분 성공한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ partial: number;
+ /**
+ * 사용자가 시도해 본 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tried: number;
+}
/**
* 사용자가 사용할 수 있는 아이템입니다.
* @export
@@ -1114,6 +1282,43 @@ export const OrganizationType = {
} as const;
export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType];
+/**
+ * solved.ac의 게시글입니다.
+ * @export
+ * @interface Post
+ */
+export interface Post {
+ /**
+ * 게시글의 아이디입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ postId: string;
+ /**
+ * 게시글의 제목입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ title: string;
+ /**
+ * 게시글의 내용입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ content: string;
+ /**
+ * 게시글이 작성된 언어입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ language: string;
+ /**
+ * 게시글 내용의 타입입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ type: string;
+}
/**
* 문제 정보입니다.
* @export
@@ -1704,25 +1909,6 @@ export interface SearchProblemTag200Response {
*/
items: Array;
}
-/**
- * 페이지네이션 가능한 쿼리의 응답 결과입니다.
- * @export
- * @interface SearchUser200Response
- */
-export interface SearchUser200Response {
- /**
- * 전체 원소 수입니다.
- * @type {number}
- * @memberof SearchUser200Response
- */
- count: number;
- /**
- * 현재 페이지의 원소 목록입니다.
- * @type {Array}
- * @memberof SearchUser200Response
- */
- items: Array;
-}
/**
* solved.ac 사이트의 통계 정보입니다.
* @export
@@ -2333,6 +2519,65 @@ export const UserClassDecorationEnum = {
} as const;
export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum];
+/**
+ * solved.ac 사용자 부가 정보입니다.
+ * @export
+ * @interface UserAdditionalInfo
+ */
+export interface UserAdditionalInfo {
+ /**
+ * 사용자의 국가/지역 코드입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ countryCode: string;
+ /**
+ * 사용자의 성별입니다.
+ * - 0: 선택 안 함
+ * - 1: 남성
+ * - 2: 여성
+ * - 9: 기타
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ gender: number;
+ /**
+ * 사용자를 영어로 표기할 때 사용하는 대명사입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ pronouns: string;
+ /**
+ * 사용자의 생년입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthYear: number;
+ /**
+ * 사용자의 생월입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthMonth: number;
+ /**
+ * 사용자의 생일입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthDay: number;
+ /**
+ * 사용자의 영어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ name: string;
+ /**
+ * 사용자의 모국어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ nameNative: string;
+}
/**
* 사용자 동의 여부입니다.
* @export
diff --git a/src/esm/models/mod.ts b/src/esm/models/mod.ts
index 2e084e4..6712a3c 100644
--- a/src/esm/models/mod.ts
+++ b/src/esm/models/mod.ts
@@ -558,6 +558,25 @@ export interface GetProblemsCountGroupByLevelLevelEntry {
*/
count: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetRankingByArenaRatingInOrganization200Response
+ */
+export interface GetRankingByArenaRatingInOrganization200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetRankingByArenaRatingInOrganization200Response
+ */
+ items: Array;
+}
/**
* 페이지네이션 가능한 쿼리의 응답 결과입니다.
* @export
@@ -950,6 +969,99 @@ export const GetSearchAutoCompletionsUserEntryClassDecorationEnum = {
} as const;
export type GetSearchAutoCompletionsUserEntryClassDecorationEnum = typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum[keyof typeof GetSearchAutoCompletionsUserEntryClassDecorationEnum];
+/**
+ *
+ * @export
+ * @interface GetUserClassStatsClassStat
+ */
+export interface GetUserClassStatsClassStat {
+ /**
+ * 클래스 번호입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ _class: GetUserClassStatsClassStatClassEnum;
+ /**
+ * solved.ac에 등록된 해당 클래스의 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 클래스 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ totalSolved: number;
+ /**
+ * solved.ac에 등록된 해당 클래스의 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentials: number;
+ /**
+ * 사용자가 푼 클래스 에센셜 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserClassStatsClassStat
+ */
+ essentialSolved: number;
+ /**
+ * 사용자가 획득한 클래스 치장입니다.
+ * @type {string}
+ * @memberof GetUserClassStatsClassStat
+ */
+ decoration: string;
+}
+
+
+/**
+ * @export
+ */
+export const GetUserClassStatsClassStatClassEnum = {
+ 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 GetUserClassStatsClassStatClassEnum = typeof GetUserClassStatsClassStatClassEnum[keyof typeof GetUserClassStatsClassStatClassEnum];
+
+/**
+ *
+ * @export
+ * @interface GetUserContributionStatsContributionStat
+ */
+export interface GetUserContributionStatsContributionStat {
+ /**
+ * solved.ac에 등록된 해당 수준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solved: number;
+ /**
+ * 사용자가 푼 표준 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ solvedStandards: number;
+ /**
+ * 사용자가 기여한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserContributionStatsContributionStat
+ */
+ contributed: number;
+}
/**
*
* @export
@@ -987,6 +1099,62 @@ export interface GetUserProblemStatsProblemStat {
*/
tried: number;
}
+/**
+ * 페이지네이션 가능한 쿼리의 응답 결과입니다.
+ * @export
+ * @interface GetUserProblemTagStats200Response
+ */
+export interface GetUserProblemTagStats200Response {
+ /**
+ * 전체 원소 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ count: number;
+ /**
+ * 현재 페이지의 원소 목록입니다.
+ * @type {Array}
+ * @memberof GetUserProblemTagStats200Response
+ */
+ items: Array;
+}
+/**
+ *
+ * @export
+ * @interface GetUserProblemTagStatsProblemTagStat
+ */
+export interface GetUserProblemTagStatsProblemTagStat {
+ /**
+ *
+ * @type {ProblemTag}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tag: ProblemTag;
+ /**
+ * solved.ac에 등록된 해당 태그 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ total: number;
+ /**
+ * 사용자가 푼 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ solved: number;
+ /**
+ * 사용자가 부분 성공한 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ partial: number;
+ /**
+ * 사용자가 시도해 본 문제 수입니다.
+ * @type {number}
+ * @memberof GetUserProblemTagStatsProblemTagStat
+ */
+ tried: number;
+}
/**
* 사용자가 사용할 수 있는 아이템입니다.
* @export
@@ -1114,6 +1282,43 @@ export const OrganizationType = {
} as const;
export type OrganizationType = typeof OrganizationType[keyof typeof OrganizationType];
+/**
+ * solved.ac의 게시글입니다.
+ * @export
+ * @interface Post
+ */
+export interface Post {
+ /**
+ * 게시글의 아이디입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ postId: string;
+ /**
+ * 게시글의 제목입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ title: string;
+ /**
+ * 게시글의 내용입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ content: string;
+ /**
+ * 게시글이 작성된 언어입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ language: string;
+ /**
+ * 게시글 내용의 타입입니다.
+ * @type {string}
+ * @memberof Post
+ */
+ type: string;
+}
/**
* 문제 정보입니다.
* @export
@@ -1704,25 +1909,6 @@ export interface SearchProblemTag200Response {
*/
items: Array;
}
-/**
- * 페이지네이션 가능한 쿼리의 응답 결과입니다.
- * @export
- * @interface SearchUser200Response
- */
-export interface SearchUser200Response {
- /**
- * 전체 원소 수입니다.
- * @type {number}
- * @memberof SearchUser200Response
- */
- count: number;
- /**
- * 현재 페이지의 원소 목록입니다.
- * @type {Array}
- * @memberof SearchUser200Response
- */
- items: Array;
-}
/**
* solved.ac 사이트의 통계 정보입니다.
* @export
@@ -2333,6 +2519,65 @@ export const UserClassDecorationEnum = {
} as const;
export type UserClassDecorationEnum = typeof UserClassDecorationEnum[keyof typeof UserClassDecorationEnum];
+/**
+ * solved.ac 사용자 부가 정보입니다.
+ * @export
+ * @interface UserAdditionalInfo
+ */
+export interface UserAdditionalInfo {
+ /**
+ * 사용자의 국가/지역 코드입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ countryCode: string;
+ /**
+ * 사용자의 성별입니다.
+ * - 0: 선택 안 함
+ * - 1: 남성
+ * - 2: 여성
+ * - 9: 기타
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ gender: number;
+ /**
+ * 사용자를 영어로 표기할 때 사용하는 대명사입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ pronouns: string;
+ /**
+ * 사용자의 생년입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthYear: number;
+ /**
+ * 사용자의 생월입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthMonth: number;
+ /**
+ * 사용자의 생일입니다.
+ * @type {number}
+ * @memberof UserAdditionalInfo
+ */
+ birthDay: number;
+ /**
+ * 사용자의 영어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ name: string;
+ /**
+ * 사용자의 모국어 이름입니다.
+ * @type {string}
+ * @memberof UserAdditionalInfo
+ */
+ nameNative: string;
+}
/**
* 사용자 동의 여부입니다.
* @export