Skip to content

Instantly share code, notes, and snippets.

@benwrk
Created February 19, 2026 02:36
Show Gist options
  • Select an option

  • Save benwrk/9af9e779a8341112e6ace21bb8982a25 to your computer and use it in GitHub Desktop.

Select an option

Save benwrk/9af9e779a8341112e6ace21bb8982a25 to your computer and use it in GitHub Desktop.
// This file is auto-generated by @hey-api/openapi-ts
export type ClientOptions = {
baseURL: 'https://xcvz-cc0q-j4ug.s2.xano.io/api:vpf4yA6d:staging' | (string & {})
}
export type HrEmployeeChangeStatePostData = {
body?: {
user_ids: Array<string>
}
path?: never
query?: never
url: '/employee/change_state'
}
export type HrEmployeeChangeStatePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrEmployeeChangeStatePostResponses = {
/**
* Success!
*/
200: {
success?: boolean
deactivated_count?: bigint
deactivated_user_ids?: Array<string>
}
}
export type HrEmployeeChangeStatePostResponse =
HrEmployeeChangeStatePostResponses[keyof HrEmployeeChangeStatePostResponses]
export type HrEmployeeEmployeeDataGetData = {
body?: never
path?: never
query?: never
url: '/employee/employee_data'
}
export type HrEmployeeEmployeeDataGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrEmployeeEmployeeDataGetResponses = {
/**
* Success!
*/
200: Array<{
name?: string
user_uuid?: string
employee_id?: string
assigned_programs?: Array<string>
}>
}
export type HrEmployeeEmployeeDataGetResponse =
HrEmployeeEmployeeDataGetResponses[keyof HrEmployeeEmployeeDataGetResponses]
export type HrEmployeeGetFilteredListGetData = {
body?: never
path?: never
query?: {
/**
* Filter by user name (partial match)
*/
name?: string
/**
* Maximum number of items to return (default: 20, max: 100)
*/
item_limit?: bigint
/**
* Number of items to skip for pagination (default: 0)
*/
item_offset?: bigint
}
url: '/employee/get_filtered_list'
}
export type HrEmployeeGetFilteredListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrEmployeeGetFilteredListGetResponses = {
/**
* Success!
*/
200: {
[key: string]: unknown
}
}
export type HrEmployeeGetFilteredListGetResponse =
HrEmployeeGetFilteredListGetResponses[keyof HrEmployeeGetFilteredListGetResponses]
export type HrLearningChangeStatusCoursePatchData = {
body?: {
/**
* ID ของ course ที่ต้องการเปลี่ยนสถานะ (ต้องเป็น UUID ที่มีอยู่ในระบบ)
* Course ID to update (must be valid UUID of existing course)
*/
course_id?: string | null
/**
* สถานะใหม่ (ต้องเป็นหนึ่งใน: upcoming, in_progress, completed)
* New status (must be one of: upcoming, in_progress, completed)
*/
status?: string | null
}
path?: never
query?: never
url: '/learning/change_status_course'
}
export type HrLearningChangeStatusCoursePatchErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningChangeStatusCoursePatchResponses = {
/**
* Success!
*/
200: {
data?: {
id?: string
name?: string
status?: string
updated_at?: bigint
}
status?: string
message?: string
}
}
export type HrLearningChangeStatusCoursePatchResponse =
HrLearningChangeStatusCoursePatchResponses[keyof HrLearningChangeStatusCoursePatchResponses]
export type HrLearningChangeStatusLearningCyclePatchData = {
body?: {
/**
* ID ของ learning cycle ที่ต้องการเปลี่ยนสถานะ (ต้องเป็น UUID ที่มีอยู่ในระบบ)
* Learning cycle ID to update (must be valid UUID of existing cycle)
*/
learning_cycle_id?: string | null
/**
* สถานะใหม่ (ต้องเป็นหนึ่งใน: upcoming, in_progress, completed)
* New status (must be one of: upcoming, in_progress, completed)
*/
status?: string | null
}
path?: never
query?: never
url: '/learning/change_status_learning_cycle'
}
export type HrLearningChangeStatusLearningCyclePatchErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningChangeStatusLearningCyclePatchResponses = {
/**
* Success!
*/
200: {
data?: {
id?: string
name?: string
status?: string
updated_at?: bigint
}
status?: string
message?: string
}
}
export type HrLearningChangeStatusLearningCyclePatchResponse =
HrLearningChangeStatusLearningCyclePatchResponses[keyof HrLearningChangeStatusLearningCyclePatchResponses]
export type HrLearningCourseAttendanceGetListGetData = {
body?: never
path?: never
query: {
/**
* ID ของ learning course
*/
learning_course_id: string
}
url: '/learning/course_attendance/get_list'
}
export type HrLearningCourseAttendanceGetListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningCourseAttendanceGetListGetResponses = {
/**
* Success!
*/
200: {
data?: {
course?: {
id?: string
name?: string
end_time?: bigint
start_time?: bigint
}
summary?: {
absent_count?: bigint
excused_count?: bigint
partial_count?: bigint
present_count?: bigint
total_enrolled?: bigint
attendance_rate?: bigint
not_recorded_count?: bigint
}
attendees?: Array<{
name?: string
note?: string
email?: string
user_id?: string
attendance?: string
employee_code?: string
}>
}
status?: string
message?: string
}
}
export type HrLearningCourseAttendanceGetListGetResponse =
HrLearningCourseAttendanceGetListGetResponses[keyof HrLearningCourseAttendanceGetListGetResponses]
export type HrLearningCourseAttendanceRecordPostData = {
body?: {
/**
* The ID of the learning course
*/
learning_course_id: string
/**
* List of attendance records to update or create
* Array of attendance records. Each record should have: user_id (required), attendance (optional), note (optional)
*/
attendance_records: {
[key: string]: unknown
} | null
}
path?: never
query?: never
url: '/learning/course_attendance_record'
}
export type HrLearningCourseAttendanceRecordPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningCourseAttendanceRecordPostResponses = {
/**
* Success!
*/
200: {
data?: {
records?: Array<{
id?: string
note?: string
user_id?: string
attendance?: string
created_at?: bigint
learning_course_id?: string
}>
total_recorded?: bigint
learning_course_id?: string
}
status?: string
message?: string
}
}
export type HrLearningCourseAttendanceRecordPostResponse =
HrLearningCourseAttendanceRecordPostResponses[keyof HrLearningCourseAttendanceRecordPostResponses]
export type HrLearningCourseScoreGetListGetData = {
body?: never
path?: never
query: {
/**
* ID ของ learning course
*/
learning_course_id: string
}
url: '/learning/course_score/get_list'
}
export type HrLearningCourseScoreGetListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningCourseScoreGetListGetResponses = {
/**
* Success!
*/
200: {
data?: {
course?: {
id?: string
name?: string
end_time?: bigint
start_time?: bigint
pass_threshold?: bigint
}
scores?: Array<{
name?: string
email?: string
user_id?: string
pre_score?: bigint
post_score?: bigint
employee_id?: string
}>
summary?: {
failed_count?: bigint
passed_count?: bigint
avg_pre_score?: bigint
avg_post_score?: bigint
total_enrolled?: bigint
avg_improvement?: bigint
max_improvement?: bigint
min_improvement?: bigint
}
}
status?: string
message?: string
}
}
export type HrLearningCourseScoreGetListGetResponse =
HrLearningCourseScoreGetListGetResponses[keyof HrLearningCourseScoreGetListGetResponses]
export type HrLearningCourseScoreRecordPostData = {
body?: {
/**
* The ID of the learning course
*/
learning_course_id: string
/**
* Array of score records. Each record should have: user_id (required), pre_score (optional), post_score (optional)
*/
score_records: {
[key: string]: unknown
} | null
}
path?: never
query?: never
url: '/learning/course_score_record'
}
export type HrLearningCourseScoreRecordPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningCourseScoreRecordPostResponses = {
/**
* Success!
*/
200: {
data?: {
records?: Array<{
id?: string
user_id?: string
pre_score?: bigint
created_at?: bigint
post_score?: bigint
learning_course_id?: string
}>
total_recorded?: bigint
learning_course_id?: string
}
status?: string
message?: string
}
}
export type HrLearningCourseScoreRecordPostResponse =
HrLearningCourseScoreRecordPostResponses[keyof HrLearningCourseScoreRecordPostResponses]
export type HrLearningCreateCoursePostData = {
body?: {
/**
* Course name (1-200 characters)
*/
name?: string | null
/**
* Learning cycle ID (must belong to caller's tenant)
*/
learning_cycle_id?: string | null
/**
* Course type ID (must exist in course_types table)
*/
course_type_id?: string | null
/**
* Course description (max 1000 characters)
*/
description?: string | null
start_time?: number | null
end_time?: number | null
competency_ids?: Array<string> | null
skill_ids?: Array<string> | null
/**
* Track attendance for this course (default: false)
*/
include_attendance?: boolean | null
/**
* Enable test scoring for this course (default: false)
*/
include_test_scoring?: boolean | null
/**
* Pass threshold score 0-100 (required if include_test_scoring=true)
*/
pass_threshold?: bigint | null
}
path?: never
query?: never
url: '/learning/create_course'
}
export type HrLearningCreateCoursePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningCreateCoursePostResponses = {
/**
* Success!
*/
200: {
status?: string
}
}
export type HrLearningCreateCoursePostResponse =
HrLearningCreateCoursePostResponses[keyof HrLearningCreateCoursePostResponses]
export type HrLearningCreateLearningCyclePostData = {
body?: {
/**
* JSON array of cycle objects
*/
cycles?: {
[key: string]: unknown
} | null
}
path?: never
query?: never
url: '/learning/create_learning_cycle'
}
export type HrLearningCreateLearningCyclePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningCreateLearningCyclePostResponses = {
/**
* Success!
*/
200: {
data?: {
cycle_ids?: Array<string>
cycles_created?: bigint
courses_created?: bigint
skill_links_created?: bigint
competency_links_created?: bigint
}
status?: string
message?: string
}
}
export type HrLearningCreateLearningCyclePostResponse =
HrLearningCreateLearningCyclePostResponses[keyof HrLearningCreateLearningCyclePostResponses]
export type HrLearningGetLearningCycleInfoGetData = {
body?: never
path?: never
query?: {
/**
* The ID of the learning cycle to fetch details for.
*/
learning_cycle_id?: string
}
url: '/learning/get_learning_cycle_info'
}
export type HrLearningGetLearningCycleInfoGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningGetLearningCycleInfoGetResponses = {
/**
* Success!
*/
200: {
data?: {
id?: string
name?: string
status?: string
courses?: Array<{
id?: string
name?: string
status?: string
end_time?: bigint
created_at?: bigint
start_time?: bigint
updated_at?: bigint
description?: string
score_stats?: {
avg_pre?: string
avg_post?: string
total_records?: bigint
}
course_type_id?: string
pass_threshold?: bigint
attendance_stats?: {
total?: bigint
present?: bigint
percentage?: string
}
learning_cycle_id?: string
include_attendance?: boolean
include_test_scoring?: boolean
}>
end_time?: bigint
created_at?: bigint
cycle_type?: string
start_time?: bigint
updated_at?: bigint
description?: string
total_enrolled?: bigint
talent_program_name?: string
}
status?: string
message?: string
}
}
export type HrLearningGetLearningCycleInfoGetResponse =
HrLearningGetLearningCycleInfoGetResponses[keyof HrLearningGetLearningCycleInfoGetResponses]
export type HrLearningGetLearningCycleListGetData = {
body?: never
path?: never
query?: {
/**
* The ID of the talent program to fetch cycles for.
*/
talent_program_id?: string
}
url: '/learning/get_learning_cycle_list'
}
export type HrLearningGetLearningCycleListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLearningGetLearningCycleListGetResponses = {
/**
* Success!
*/
200: {
data?: {
cycles?: Array<{
id?: string
name?: string
status?: string
end_time?: bigint
created_at?: bigint
cycle_type?: string
start_time?: bigint
description?: string
num_courses?: bigint
}>
summary?: {
total_cycles?: bigint
upcoming_cycles?: bigint
completed_cycles?: bigint
in_progress_cycles?: bigint
}
}
status?: string
message?: string
}
}
export type HrLearningGetLearningCycleListGetResponse =
HrLearningGetLearningCycleListGetResponses[keyof HrLearningGetLearningCycleListGetResponses]
export type HrLibraryCompetenciesSkillsGetData = {
body?: never
path?: never
query: {
profile_id: string
}
url: '/library/competencies_skills'
}
export type HrLibraryCompetenciesSkillsGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLibraryCompetenciesSkillsGetResponses = {
/**
* Success!
*/
200: {
skills?: Array<{
id?: string
name?: string
description?: string
}>
competencies?: Array<{
id?: string
name?: string
description?: string
}>
}
}
export type HrLibraryCompetenciesSkillsGetResponse =
HrLibraryCompetenciesSkillsGetResponses[keyof HrLibraryCompetenciesSkillsGetResponses]
export type HrLibraryGetCompetencyListGetData = {
body?: never
path?: never
query?: never
url: '/library/get_competency_list'
}
export type HrLibraryGetCompetencyListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLibraryGetCompetencyListGetResponses = {
/**
* Success!
*/
200: {
data?: Array<{
id?: string
name?: string
description?: string
program_count?: bigint
}>
status?: string
message?: string
}
}
export type HrLibraryGetCompetencyListGetResponse =
HrLibraryGetCompetencyListGetResponses[keyof HrLibraryGetCompetencyListGetResponses]
export type HrLibraryGetRoleProfileListGetData = {
body?: never
path?: never
query?: never
url: '/library/get_role_profile_list'
}
export type HrLibraryGetRoleProfileListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLibraryGetRoleProfileListGetResponses = {
/**
* Success!
*/
200: {
data?: Array<{
id?: string
name?: string
active?: boolean
skills?: Array<string>
version?: bigint
created_at?: bigint
assessments?: {
config?: string
weights?: {
logic?: number
skills?: number
aspiration?: number
competency?: number
personality?: bigint
}
}
description?: string
competencies?: Array<string>
program_count?: bigint
}>
status?: string
message?: string
}
}
export type HrLibraryGetRoleProfileListGetResponse =
HrLibraryGetRoleProfileListGetResponses[keyof HrLibraryGetRoleProfileListGetResponses]
export type HrLibraryGetSkillListGetData = {
body?: never
path?: never
query?: never
url: '/library/get_skill_list'
}
export type HrLibraryGetSkillListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrLibraryGetSkillListGetResponses = {
/**
* Success!
*/
200: {
data?: Array<{
id?: string
name?: string
description?: string
program_count?: bigint
}>
status?: string
message?: string
}
}
export type HrLibraryGetSkillListGetResponse =
HrLibraryGetSkillListGetResponses[keyof HrLibraryGetSkillListGetResponses]
export type HrProgramCourseTypesGetData = {
body?: never
path?: never
query?: never
url: '/program/course_types'
}
export type HrProgramCourseTypesGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramCourseTypesGetResponses = {
/**
* Success!
*/
200: Array<{
id?: string
title?: string
}>
}
export type HrProgramCourseTypesGetResponse =
HrProgramCourseTypesGetResponses[keyof HrProgramCourseTypesGetResponses]
export type HrProgramCreateCyclePostData = {
body?: {
talent_program_id?: string | null
name?: string | null
start_time?: number | null
end_time?: number | null
}
path?: never
query?: never
url: '/program/create_cycle'
}
export type HrProgramCreateCyclePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramCreateCyclePostResponses = {
/**
* Success!
*/
200: {
data?: {
id?: string
cycle?: bigint
}
status?: string
message?: string
}
}
export type HrProgramCreateCyclePostResponse =
HrProgramCreateCyclePostResponses[keyof HrProgramCreateCyclePostResponses]
export type HrProgramCreateProgramPostData = {
body?: {
/**
* Program name (required, 3-100 chars, must be unique)
*/
name: string
/**
* Program description (optional, max 1000 chars)
*/
description?: string
/**
* Program start date (required, timestamp in milliseconds)
*/
start_time: number
/**
* Program end date (required, timestamp in milliseconds, must be after start_date)
*/
end_time: number
/**
* Selected talent profile ID (required, must exist)
*/
selected_profile_id: string
selected_user_ids: Array<string>
cycles?: Array<{
name: string
description?: string | null
cycle_type_id?: string | null
start_time: number
end_time: number
courses_json?: Array<{
name: string
description?: string | null
course_type_id?: string | null
start_time: number
end_time: number
competency_ids?: Array<string> | null
skill_ids?: Array<string> | null
include_attendance?: boolean
include_test_scoring?: boolean
pass_threshold?: bigint
}>
}>
}
path?: never
query?: never
url: '/program/create_program'
}
export type HrProgramCreateProgramPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramCreateProgramPostResponses = {
/**
* Success!
*/
200: {
data?: {
status?: string
created_at?: bigint
program_name?: string
enrollment_count?: bigint
enrolled_user_ids?: Array<string>
}
status?: string
message?: string
}
}
export type HrProgramCreateProgramPostResponse =
HrProgramCreateProgramPostResponses[keyof HrProgramCreateProgramPostResponses]
export type HrProgramCycleTypesGetData = {
body?: never
path?: never
query?: never
url: '/program/cycle_types'
}
export type HrProgramCycleTypesGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramCycleTypesGetResponses = {
/**
* Success!
*/
200: Array<{
id?: string
title?: string
}>
}
export type HrProgramCycleTypesGetResponse =
HrProgramCycleTypesGetResponses[keyof HrProgramCycleTypesGetResponses]
export type HrProgramGetCyclesGetData = {
body?: never
path?: never
query?: {
talent_program_id?: string
}
url: '/program/get_cycles'
}
export type HrProgramGetCyclesGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramGetCyclesGetResponses = {
/**
* Success!
*/
200: {
data?: Array<{
id?: string
name?: string
cycle?: bigint
end_time?: bigint
start_time?: bigint
}>
status?: string
message?: string
}
}
export type HrProgramGetCyclesGetResponse =
HrProgramGetCyclesGetResponses[keyof HrProgramGetCyclesGetResponses]
export type HrProgramGetEnrolleeInfoGetData = {
body?: never
path?: never
query: {
/**
* Talent program ID
*/
program_id: string
/**
* Cycle number (optional) - 0 = Assessment & Selection, 1+ = Learning cycles, null = use max cycle
*/
cycle: bigint
/**
* Nominee/Talent user ID to retrieve report for
*/
user_id: string
}
url: '/program/get_enrollee_info'
}
export type HrProgramGetEnrolleeInfoGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramGetEnrolleeInfoGetResponses = {
/**
* Success!
*/
200: {
data?: {
report_info?: {
cycle?: bigint
user_id?: string
user_name?: string
user_email?: string
talent_program?: string
last_submission_at?: string
}
assessmentTypes?: Array<{
type?: string
weight?: number
category?: string
}>
executive_summary?: {
overall?: {
calculation?: {
cognitive_weight?: number
competency_weight?: number
}
score_percent?: number
}
scored_assessments?: Array<{
dimension?: string
percentile?: bigint
program_mean?: bigint
score_percent?: bigint
}>
competency_overview?: string
reference_assessments?: {
skills?: Array<string>
aspiration?: string
personality?: string
}
}
assessment_details?: {
skills?: Array<{
skill_name?: string
description?: string
level_description?: string
observation_status?: string
proficiency_level_id?: number
justification_comment?: string
proficiency_level_label?: string
}>
cognitive?: {
items?: Array<{
name?: string
percentile?: string
implication?: string
program_mean?: number
score_percent?: bigint
}>
summary?: {
overall_score_percent?: bigint
}
}
aspiration?: {
items?: Array<{
name?: string
passed?: boolean
implication?: string
}>
total?: bigint
count_passed?: bigint
overall_pass?: boolean
}
competency?: {
items?: Array<{
name?: string
strengths?: Array<string>
percentile?: bigint
implication?: string
program_mean?: number
score_percent?: bigint
development_areas?: Array<string>
}>
summary?: {
overall_score_percent?: bigint
}
}
personality?: string
}
}
status?: string
message?: string
}
}
export type HrProgramGetEnrolleeInfoGetResponse =
HrProgramGetEnrolleeInfoGetResponses[keyof HrProgramGetEnrolleeInfoGetResponses]
export type HrProgramGetNomineesGetData = {
body?: never
path?: never
query: {
/**
* ID ของ talent program (required)
*/
talent_program_id: string
}
url: '/program/get_nominees'
}
export type HrProgramGetNomineesGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramGetNomineesGetResponses = {
/**
* Success!
*/
200: {
cycle?: bigint
nominees?: Array<{
name?: string
rank?: bigint
tags?: Array<{
id?: string
label?: string
}>
user_id?: string
assessments?: {
skill?: {
status?: string
}
overall?: number
cognitive?: {
score?: bigint
status?: string
}
aspiration?: {
result?: string
status?: string
}
competency?: {
score?: number
status?: string
breakdown?: {
'Analytical Thinking'?: bigint
'Conceptual Thinking'?: bigint
}
}
personality?: {
status?: string
type_code?: string
}
}
employee_id?: string
}>
program_id?: string
program_name?: string
assessmentTypes?: Array<{
type?: string
items?: Array<{
id?: string
name?: string
}>
label?: string
}>
}
}
export type HrProgramGetNomineesGetResponse =
HrProgramGetNomineesGetResponses[keyof HrProgramGetNomineesGetResponses]
export type HrProgramGetTalentIdpInfoGetData = {
body?: never
path?: never
query: {
talent_program_id: string
cycle: bigint
user_id: string
}
url: '/program/get_talent_idp_info'
}
export type HrProgramGetTalentIdpInfoGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramGetTalentIdpInfoGetResponses = {
/**
* Success!
*/
200: {
user?: string
cycle?: bigint
idp_hours?: bigint
created_at?: bigint
objectives?: Array<{
id?: string
name?: string
type?: string
tasks?: Array<{
id?: string
hour?: bigint
name?: string
type?: string
due_date?: bigint
idp_note?: Array<string>
completion?: bigint
created_at?: bigint
idp_support?: Array<string>
idp_objective_id?: string
}>
is_custom?: boolean
created_at?: bigint
description?: string
idp_instance_id?: bigint
}>
career_plan?: number
report_info?: {
cycle?: bigint
stage?: string
status?: string
user_id?: string
user_name?: string
user_email?: string
talent_program?: string
last_submission_at?: string
}
talent_program?: string
}
}
export type HrProgramGetTalentIdpInfoGetResponse =
HrProgramGetTalentIdpInfoGetResponses[keyof HrProgramGetTalentIdpInfoGetResponses]
export type HrProgramGetTalentIdpListGetData = {
body?: never
path?: never
query: {
/**
* ID ของ talent program (required)
* ID ของ talent program
*/
talent_program_id: string
/**
* Cycle number (optional)
* ถ้าไม่ระบุ → ใช้ cycle ล่าสุด
*/
cycle?: bigint
}
url: '/program/get_talent_idp_list'
}
export type HrProgramGetTalentIdpListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramGetTalentIdpListGetResponses = {
/**
* Success!
*/
200: {
cycle_id?: string
idp_list?: Array<{
name?: string
tags?: string
status?: string
sent_at?: string
user_id?: string
progress?: {
total?: bigint
percent?: bigint
completed?: bigint
}
employee_id?: string
last_updated_date?: string
developing_competencies?: Array<string>
}>
cycle_name?: string
}
}
export type HrProgramGetTalentIdpListGetResponse =
HrProgramGetTalentIdpListGetResponses[keyof HrProgramGetTalentIdpListGetResponses]
export type HrProgramGetTalentsListGetData = {
body?: never
path?: never
query: {
/**
* ID ของ talent program (required)
*/
talent_program_id: string
/**
* Cycle number (optional) - 0 = Assessment & Selection, 1+ = Learning cycles, null = use max cycle
*/
cycle: bigint
}
url: '/program/get_talents_list'
}
export type HrProgramGetTalentsListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramGetTalentsListGetResponses = {
/**
* Success!
*/
200: {
cycle?: bigint
talents?: Array<{
name?: string
rank?: bigint
tags?: Array<{
id?: string
name?: string
}>
user_id?: string
assessments?: {
overall?: number
competency?: {
score?: number
status?: string
breakdown?: {
Resilience?: bigint
Adaptability?: bigint
'Self-Awareness'?: bigint
'Decision Making'?: bigint
'Learning & Development'?: bigint
}
}
}
employee_id?: string
}>
program_id?: string
program_name?: string
assessmentTypes?: Array<{
type?: string
items?: Array<{
id?: string
name?: string
}>
label?: string
}>
}
}
export type HrProgramGetTalentsListGetResponse =
HrProgramGetTalentsListGetResponses[keyof HrProgramGetTalentsListGetResponses]
export type HrProgramOverviewInfoGetData = {
body?: never
path?: never
query: {
talent_program_id: string
}
url: '/program/overview_info'
}
export type HrProgramOverviewInfoGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramOverviewInfoGetResponses = {
/**
* Success!
*/
200: {
cycles?: Array<{
id?: bigint
name?: string
population?: bigint
completion_rate?: bigint
avg_overall_score?: bigint
assessment_categories?: {
skill?: {
domains?: Array<{
label?: string
level?: string
}>
submitted?: bigint
unsubmitted?: bigint
submission_rate?: bigint
}
cognitive?: {
avg_score?: bigint
dimensions?: Array<{
key?: string
label?: string
avg_score?: bigint
}>
scored_count?: bigint
pending_count?: bigint
}
aspiration?: {
dimensions?: Array<{
key?: string
label?: string
passed_rate?: bigint
}>
passed_rate?: bigint
failed_count?: bigint
passed_count?: bigint
}
competency?: {
avg_score?: bigint
dimensions?: Array<{
key?: string
label?: string
avg_score?: bigint
}>
scored_count?: bigint
pending_count?: bigint
}
personality?: {
top_type?: string
dimensions?: Array<{
key?: string
label?: string
percentage?: bigint
}>
scored_count?: bigint
pending_count?: bigint
}
}
}>
program?: {
id?: string
name?: string
status?: string
end_time?: bigint
start_time?: bigint
description?: string
talent_profile_name?: string
}
snapshot?: {
total_nominees?: bigint
selected_talents?: bigint
learning_cycles_count?: bigint
}
learning_insights?: {
cycles?: {
total?: bigint
upcoming?: bigint
completed?: bigint
in_progress?: bigint
}
courses?: {
total?: bigint
upcoming?: bigint
completed?: bigint
in_progress?: bigint
}
}
}
}
export type HrProgramOverviewInfoGetResponse =
HrProgramOverviewInfoGetResponses[keyof HrProgramOverviewInfoGetResponses]
export type HrProgramProgramInfoGetData = {
body?: never
path?: never
query: {
talent_program_id: string
}
url: '/program/program_info'
}
export type HrProgramProgramInfoGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramProgramInfoGetResponses = {
/**
* Success!
*/
200: {
id?: string
name?: string
created_at?: bigint
}
}
export type HrProgramProgramInfoGetResponse =
HrProgramProgramInfoGetResponses[keyof HrProgramProgramInfoGetResponses]
export type HrProgramPromoteNomineesPostData = {
body?: {
user_id: Array<string>
talent_program_id: string
}
path?: never
query?: never
url: '/program/promote_nominees'
}
export type HrProgramPromoteNomineesPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramPromoteNomineesPostResponses = {
/**
* Success!
*/
200: {
data?: {
updated_count?: bigint
}
status?: string
message?: string
}
}
export type HrProgramPromoteNomineesPostResponse =
HrProgramPromoteNomineesPostResponses[keyof HrProgramPromoteNomineesPostResponses]
export type HrProgramSendAssessmentTalentPostData = {
body?: {
talent_ids: Array<string>
talent_program_id: string
cycle: bigint
}
path?: never
query?: never
url: '/program/send_assessment_talent'
}
export type HrProgramSendAssessmentTalentPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramSendAssessmentTalentPostResponses = {
/**
* Success!
*/
200: {
status?: string
message?: string
sent_count?: bigint
}
}
export type HrProgramSendAssessmentTalentPostResponse =
HrProgramSendAssessmentTalentPostResponses[keyof HrProgramSendAssessmentTalentPostResponses]
export type HrProgramSendAssessmentPostData = {
body?: {
nominee_ids: Array<string>
talent_program_id: string
assessment_type: 'core' | 'skill' | 'all'
}
path?: never
query?: never
url: '/program/send_assessment'
}
export type HrProgramSendAssessmentPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramSendAssessmentPostResponses = {
/**
* Success!
*/
200: {
status?: string
message?: string
sent_count?: bigint
}
}
export type HrProgramSendAssessmentPostResponse =
HrProgramSendAssessmentPostResponses[keyof HrProgramSendAssessmentPostResponses]
export type HrProgramSendIdpPostData = {
body?: {
talent_ids: Array<string>
talent_program_id: string
cycle: bigint
}
path?: never
query?: never
url: '/program/send_idp'
}
export type HrProgramSendIdpPostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramSendIdpPostResponses = {
/**
* Success!
*/
200: {
status?: string
message?: string
sent_count?: bigint
}
}
export type HrProgramSendIdpPostResponse =
HrProgramSendIdpPostResponses[keyof HrProgramSendIdpPostResponses]
export type HrProgramTalentProgramGetData = {
body?: never
path?: never
query?: never
url: '/program/talent_program'
}
export type HrProgramTalentProgramGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrProgramTalentProgramGetResponses = {
/**
* Success!
*/
200: Array<{
id?: string
name?: string
config?: {
idp_hours?: bigint
last_idp_snapshot?: string
idp_snapshot_interval?: bigint
}
status?: string
end_time?: bigint
created_at?: bigint
start_time?: bigint
description?: string
nominees_count?: bigint
selected_count?: bigint
talent_profile_id?: string
talent_profile_name?: string
}>
}
export type HrProgramTalentProgramGetResponse =
HrProgramTalentProgramGetResponses[keyof HrProgramTalentProgramGetResponses]
export type HrTagCreatePostData = {
body?: {
/**
* ID ของ program ที่ต้องการสร้าง tag (ต้องเป็น UUID ที่มีอยู่ในระบบ)
* Talent program ID (must be valid UUID of existing program)
*/
talent_program_id?: string | null
/**
* ชื่อ tag (1-100 characters, unique ภายใน program, ระบบจะตัดช่องว่างหน้าหลังอัตโนมัติ)
* Tag name (1-100 characters, must be unique within program)
*/
name?: string | null
}
path?: never
query?: never
url: '/tag/create'
}
export type HrTagCreatePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrTagCreatePostResponses = {
/**
* Success!
*/
200: {
data?: {
id?: string
name?: string
}
status?: string
message?: string
}
}
export type HrTagCreatePostResponse = HrTagCreatePostResponses[keyof HrTagCreatePostResponses]
export type HrTagDeletePostData = {
body?: {
/**
* ID ของ Tag ที่ต้องการลบ (ต้องเป็น UUID ที่มีอยู่ในระบบ)
* Tag ID to delete (must be valid UUID of existing tag)
*/
tag_id?: string | null
}
path?: never
query?: never
url: '/tag/delete'
}
export type HrTagDeletePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrTagDeletePostResponses = {
/**
* Success!
*/
200: {
data?: {
deleted_tag_id?: string
deleted_tag_name?: string
unassigned_count?: bigint
}
status?: string
message?: string
}
}
export type HrTagDeletePostResponse = HrTagDeletePostResponses[keyof HrTagDeletePostResponses]
export type HrTagEditPatchData = {
body?: {
/**
* ID ของ Tag ที่ต้องการแก้ไข (ต้องเป็น UUID ที่มีอยู่ในระบบ)
* Tag ID to edit (must be valid UUID of existing tag)
*/
tag_id?: string | null
/**
* ชื่อใหม่ (1-100 characters, unique ภายใน program, ระบบจะตัดช่องว่างหน้าหลังอัตโนมัติ)
* New tag name (1-100 characters, must be unique within program)
*/
name?: string | null
}
path?: never
query?: never
url: '/tag/edit'
}
export type HrTagEditPatchErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrTagEditPatchResponses = {
/**
* Success!
*/
200: {
data?: {
id?: string
name?: string
old_name?: string
updated_enrollments_count?: bigint
}
status?: string
message?: string
}
}
export type HrTagEditPatchResponse = HrTagEditPatchResponses[keyof HrTagEditPatchResponses]
export type HrTagGetListGetData = {
body?: never
path?: never
query?: {
/**
* ID of the talent program to get tags for
*/
talent_program_id?: string
}
url: '/tag/get_list'
}
export type HrTagGetListGetErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrTagGetListGetResponses = {
/**
* Success!
*/
200: {
data?: Array<{
id?: string
name?: string
total_count?: bigint
talent_count?: bigint
nominee_count?: bigint
}>
status?: string
message?: string
}
}
export type HrTagGetListGetResponse = HrTagGetListGetResponses[keyof HrTagGetListGetResponses]
export type HrTagManagePostData = {
body?: {
user_ids?: Array<string> | null
tag_id?: string | null
action?: string | null
}
path?: never
query?: never
url: '/tag/manage'
}
export type HrTagManagePostErrors = {
/**
* Input Error. Check the request payload for issues.
*/
400: unknown
/**
* Unauthorized
*/
401: unknown
/**
* Access denied. Additional privileges are needed access the requested resource.
*/
403: unknown
/**
* Not Found. The requested resource does not exist.
*/
404: unknown
/**
* Rate Limited. Too many requests.
*/
429: unknown
/**
* Unexpected error
*/
500: unknown
}
export type HrTagManagePostResponses = {
/**
* Success!
*/
200: {
data?: {
action?: string
skipped?: bigint
processed?: bigint
talent_program_id?: string
}
status?: string
message?: string
}
}
export type HrTagManagePostResponse = HrTagManagePostResponses[keyof HrTagManagePostResponses]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment