diff --git a/.changeset/gold-pigs-lick.md b/.changeset/gold-pigs-lick.md new file mode 100644 index 0000000..4f94cc4 --- /dev/null +++ b/.changeset/gold-pigs-lick.md @@ -0,0 +1,5 @@ +--- +"classcharts-api": minor +--- + +Added getcode endpoint diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts index ca6f2fa..c9a56d9 100644 --- a/src/core/baseClient.ts +++ b/src/core/baseClient.ts @@ -10,6 +10,8 @@ import type { GetActivityOptions, GetAttendanceOptions, GetBehaviourOptions, + GetCodeOptions, + GetCodeResponse, GetFullActivityOptions, GetHomeworkOptions, GetLessonsOptions, @@ -319,4 +321,19 @@ export class BaseClient { ) ).data; } + /** + * Gets the current student's code + * @param options GetCodeOptions + * @param options.dateOfBirth Date of birth in the format YYYY-MM-DD + * @returns + */ + async getCode(options: GetCodeOptions): Promise { + const data = await this.makeAuthedRequest(this.API_BASE + "/getcode", { + method: "POST", + body: JSON.stringify({ + date: options.dateOfBirth, + }), + }); + return data; + } } diff --git a/src/types.ts b/src/types.ts index b424369..d6a005a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -429,3 +429,20 @@ export interface AttendanceDate { } // TODO: Update typings to include meta response. Currently not possible since I don't have access export type AttendanceResponse = Record[]; + +export interface GetCodeOptions { + /** + * Date of birth, in format YYYY-MM-DD + */ + dateOfBirth: string; +} + +export interface GetCodeResponseData { + code: string; +} + +export type GetCodeResponseMeta = []; +export type GetCodeResponse = ClassChartsResponse< + GetCodeResponseData, + GetCodeResponseMeta +>;