@knpkv/clockify-api-client 1.1.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,580 +2,571 @@ import * as Data from "effect/Data"
2
2
  import * as Effect from "effect/Effect"
3
3
  import type { SchemaError } from "effect/Schema"
4
4
  import * as Schema from "effect/Schema"
5
- import type * as HttpClient from "effect/unstable/http/HttpClient"
6
- import * as HttpClientError from "effect/unstable/http/HttpClientError"
7
- import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest"
8
- import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse"
5
+ import type * as HttpClient from "effect/http/HttpClient"
6
+ import * as HttpClientError from "effect/http/HttpClientError"
7
+ import * as HttpClientRequest from "effect/http/HttpClientRequest"
8
+ import * as HttpClientResponse from "effect/http/HttpClientResponse"
9
9
  // non-recursive definitions
10
+ export type UploadFileResponseV1 = { readonly "name"?: string, readonly "url"?: string }
11
+ export const UploadFileResponseV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "File name of the uploaded image" })), "url": Schema.optionalKey(Schema.String.annotate({ "description": "The URL of the uploaded image in the server" })) }).annotate({ "identifier": "UploadFileResponseV1" })
12
+ export type CustomFieldType = never
13
+ export const CustomFieldType = Schema.Never.annotate({ "identifier": "CustomFieldType" })
14
+ export type RateDtoV1 = { readonly "amount"?: number, readonly "currency"?: string }
15
+ export const RateDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })) }).annotate({ "description": "Represents hourly rate object.", "identifier": "RateDtoV1" })
16
+ export type HourlyRateDtoV1 = { readonly "amount"?: number, readonly "currency"?: string }
17
+ export const HourlyRateDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })) }).annotate({ "description": "Represents an hourly rate object.", "identifier": "HourlyRateDtoV1" })
18
+ export type SummaryReportSettingsDtoV1 = { readonly "group": string, readonly "subgroup": string }
19
+ export const SummaryReportSettingsDtoV1 = Schema.Struct({ "group": Schema.String.check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "subgroup": Schema.String.check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "description": "Represents a summary report settings object.", "identifier": "SummaryReportSettingsDtoV1" })
10
20
  export type AccountStatus = "ACTIVE" | "PENDING_EMAIL_VERIFICATION" | "DELETED" | "NOT_REGISTERED" | "LIMITED" | "LIMITED_DELETED"
11
- export const AccountStatus = Schema.Literals(["ACTIVE", "PENDING_EMAIL_VERIFICATION", "DELETED", "NOT_REGISTERED", "LIMITED", "LIMITED_DELETED"]).annotate({ "description": "Represents account status enum." })
12
- export type AddUserToWorkspaceRequest = { readonly "email": string }
13
- export const AddUserToWorkspaceRequest = Schema.Struct({ "email": Schema.String.annotate({ "description": "Represents an email address of the user." }).check(Schema.isMinLength(1)) })
14
- export type ApplyTaxes = never
15
- export const ApplyTaxes = Schema.Never
21
+ export const AccountStatus = Schema.Literals(["ACTIVE", "PENDING_EMAIL_VERIFICATION", "DELETED", "NOT_REGISTERED", "LIMITED", "LIMITED_DELETED"]).annotate({ "description": "Represents account status enum.", "identifier": "AccountStatus" })
22
+ export type CurrencyWithDefaultInfoDtoV1 = { readonly "code"?: string, readonly "id"?: string, readonly "isDefault"?: boolean }
23
+ export const CurrencyWithDefaultInfoDtoV1 = Schema.Struct({ "code": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency code." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency identifier across the system." })), "isDefault": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether curency should be set as default." })) }).annotate({ "description": "Represents currency with default info object.", "identifier": "CurrencyWithDefaultInfoDtoV1" })
24
+ export type FeaturePlan = { readonly "addonSubscriptionPlan"?: "FREE" | "BASIC" | "STANDARD" | "PRO" | "ENTERPRISE", readonly "featurePermissions"?: ReadonlyArray<"ACTIVITY_MONITORING" | "ADD_TIME_FOR_OTHERS" | "ADMIN_PANEL" | "ALERTS" | "APPROVAL" | "AUDIT_LOG" | "AUTOMATIC_LOCK" | "BRANDED_REPORTS" | "BULK_EDIT" | "CUSTOM_FIELDS" | "CUSTOM_REPORTING" | "CUSTOM_SUBDOMAIN" | "CREATION_PERMISSIONS" | "DECIMAL_FORMAT" | "DISABLE_MANUAL_MODE" | "EDIT_MEMBER_PROFILE" | "EXCLUDE_NON_BILLABLE_FROM_ESTIMATE" | "EXPENSES" | "FILE_IMPORT" | "TIMESHEET_IMPORT" | "USER_IMPORT" | "HIDE_PAGES" | "HISTORIC_RATES" | "INVOICING" | "INVOICE_EMAILS" | "INVOICE_REMINDERS" | "LABOR_COST" | "LOCATIONS" | "MANAGER_ROLE" | "MULTI_FACTOR_AUTHENTICATION" | "PROJECT_BUDGET" | "PROJECT_TEMPLATES" | "GRANT_PROJECT_MANAGER_ROLE" | "PRIVATE_PROJECT_ACCESS" | "QUICKBOOKS_INTEGRATION" | "RECURRING_ESTIMATES" | "RECURRING_INVOICES" | "REQUIRED_FIELDS" | "SCHEDULED_REPORTS" | "SCHEDULING" | "SCHEDULING_BILLABLE_AND_COST_AMOUNT" | "SCREENSHOTS" | "SSO" | "SUMMARY_ESTIMATE" | "TARGETS_AND_REMINDERS" | "TASK_RATES" | "TASK_COST_RATES" | "TASK_HOURLY_RATES" | "TIME_OFF" | "UNLIMITED_REPORTS" | "USER_CUSTOM_FIELDS" | "WHO_CAN_CHANGE_TIMEENTRY_BILLABILITY" | "BREAKS" | "KIOSK_SESSION_DURATION" | "KIOSK_PIN_REQUIRED" | "WHO_CAN_SEE_ALL_TIME_ENTRIES" | "WHO_CAN_SEE_PROJECT_STATUS" | "WHO_CAN_SEE_PUBLIC_PROJECTS_ENTRIES" | "WHO_CAN_SEE_TEAMS_DASHBOARD" | "WORKSPACE_LOCK_TIMEENTRIES" | "WORKSPACE_TIME_AUDIT" | "WORKSPACE_TIME_ROUNDING" | "KIOSK" | "KIOSK_SIX_DIGIT_PIN" | "KIOSK_QR_CODE" | "KIOSK_PHOTO_CAPTURE" | "LIMITED_USERS" | "FORECASTING" | "TIME_TRACKING" | "ATTENDANCE_REPORT" | "WEEKLY_OVERTIME_CALCULATION_PERIOD" | "MONTHLY_OVERTIME_CALCULATION_PERIOD" | "WORKSPACE_TRANSFER" | "FAVORITE_ENTRIES" | "SPLIT_TIME_ENTRY" | "CLIENT_CURRENCY" | "SCHEDULING_FORECASTING" | "SCIM" | "UNLIMITED_USER_SEATS" | "BILLABLE_HOURS" | "PROJECT_ESTIMATE" | "CSV_EXPORT" | "XLSX_EXPORT" | "ONE_MONTH_RANGE_REPORTS" | "ONE_YEAR_RANGE_REPORTS" | "SHARED_REPORTS">, readonly "legacy"?: boolean, readonly "paidPlan"?: boolean, readonly "regionalAllowed"?: boolean, readonly "weight"?: number }
25
+ export const FeaturePlan = Schema.Struct({ "addonSubscriptionPlan": Schema.optionalKey(Schema.Literals(["FREE", "BASIC", "STANDARD", "PRO", "ENTERPRISE"])), "featurePermissions": Schema.optionalKey(Schema.Array(Schema.Literals(["ACTIVITY_MONITORING", "ADD_TIME_FOR_OTHERS", "ADMIN_PANEL", "ALERTS", "APPROVAL", "AUDIT_LOG", "AUTOMATIC_LOCK", "BRANDED_REPORTS", "BULK_EDIT", "CUSTOM_FIELDS", "CUSTOM_REPORTING", "CUSTOM_SUBDOMAIN", "CREATION_PERMISSIONS", "DECIMAL_FORMAT", "DISABLE_MANUAL_MODE", "EDIT_MEMBER_PROFILE", "EXCLUDE_NON_BILLABLE_FROM_ESTIMATE", "EXPENSES", "FILE_IMPORT", "TIMESHEET_IMPORT", "USER_IMPORT", "HIDE_PAGES", "HISTORIC_RATES", "INVOICING", "INVOICE_EMAILS", "INVOICE_REMINDERS", "LABOR_COST", "LOCATIONS", "MANAGER_ROLE", "MULTI_FACTOR_AUTHENTICATION", "PROJECT_BUDGET", "PROJECT_TEMPLATES", "GRANT_PROJECT_MANAGER_ROLE", "PRIVATE_PROJECT_ACCESS", "QUICKBOOKS_INTEGRATION", "RECURRING_ESTIMATES", "RECURRING_INVOICES", "REQUIRED_FIELDS", "SCHEDULED_REPORTS", "SCHEDULING", "SCHEDULING_BILLABLE_AND_COST_AMOUNT", "SCREENSHOTS", "SSO", "SUMMARY_ESTIMATE", "TARGETS_AND_REMINDERS", "TASK_RATES", "TASK_COST_RATES", "TASK_HOURLY_RATES", "TIME_OFF", "UNLIMITED_REPORTS", "USER_CUSTOM_FIELDS", "WHO_CAN_CHANGE_TIMEENTRY_BILLABILITY", "BREAKS", "KIOSK_SESSION_DURATION", "KIOSK_PIN_REQUIRED", "WHO_CAN_SEE_ALL_TIME_ENTRIES", "WHO_CAN_SEE_PROJECT_STATUS", "WHO_CAN_SEE_PUBLIC_PROJECTS_ENTRIES", "WHO_CAN_SEE_TEAMS_DASHBOARD", "WORKSPACE_LOCK_TIMEENTRIES", "WORKSPACE_TIME_AUDIT", "WORKSPACE_TIME_ROUNDING", "KIOSK", "KIOSK_SIX_DIGIT_PIN", "KIOSK_QR_CODE", "KIOSK_PHOTO_CAPTURE", "LIMITED_USERS", "FORECASTING", "TIME_TRACKING", "ATTENDANCE_REPORT", "WEEKLY_OVERTIME_CALCULATION_PERIOD", "MONTHLY_OVERTIME_CALCULATION_PERIOD", "WORKSPACE_TRANSFER", "FAVORITE_ENTRIES", "SPLIT_TIME_ENTRY", "CLIENT_CURRENCY", "SCHEDULING_FORECASTING", "SCIM", "UNLIMITED_USER_SEATS", "BILLABLE_HOURS", "PROJECT_ESTIMATE", "CSV_EXPORT", "XLSX_EXPORT", "ONE_MONTH_RANGE_REPORTS", "ONE_YEAR_RANGE_REPORTS", "SHARED_REPORTS"])).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "legacy": Schema.optionalKey(Schema.Boolean), "paidPlan": Schema.optionalKey(Schema.Boolean), "regionalAllowed": Schema.optionalKey(Schema.Boolean), "weight": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "description": "Represents a feature plan type enum.", "identifier": "FeaturePlan" })
26
+ export type Feature = never
27
+ export const Feature = Schema.Never.annotate({ "identifier": "Feature" })
28
+ export type WorkspaceSubdomainDtoV1 = { readonly "enabled"?: boolean, readonly "name"?: string }
29
+ export const WorkspaceSubdomainDtoV1 = Schema.Struct({ "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether subdomain is enabled on workspace" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents subdomain name" })) }).annotate({ "description": "Represents the workspace subdomain", "identifier": "WorkspaceSubdomainDtoV1" })
30
+ export type TimeApprovalSettingsDtoV1 = { readonly "approvalEnabled"?: boolean, readonly "approvalPeriod"?: "WEEKLY" | "SEMI_MONTHLY" | "MONTHLY", readonly "approvalRoles"?: ReadonlyArray<"ADMIN" | "TEAM_MANAGER" | "PROJECT_MANAGER"> }
31
+ export const TimeApprovalSettingsDtoV1 = Schema.Struct({ "approvalEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether approval is enabled." })), "approvalPeriod": Schema.optionalKey(Schema.Literals(["WEEKLY", "SEMI_MONTHLY", "MONTHLY"]).annotate({ "description": "Represents the approval period." })), "approvalRoles": Schema.optionalKey(Schema.Array(Schema.Literals(["ADMIN", "TEAM_MANAGER", "PROJECT_MANAGER"]).annotate({ "description": "Represents the list of roles who can approve." })).annotate({ "description": "Represents the list of roles who can approve." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Represents the settings for time approval.", "identifier": "TimeApprovalSettingsDtoV1" })
32
+ export type AuditLogSettingsDtoV1 = { readonly "auditEnabled"?: boolean, readonly "clientAuditing"?: boolean, readonly "clientStartedRecording"?: string, readonly "expensesAuditing"?: boolean, readonly "expensesStartedRecording"?: string, readonly "projectAuditing"?: boolean, readonly "projectStartedRecording"?: string, readonly "tagAuditing"?: boolean, readonly "tagStartedRecording"?: string, readonly "timeEntryAuditing"?: boolean, readonly "timeEntryStartedRecording"?: string }
33
+ export const AuditLogSettingsDtoV1 = Schema.Struct({ "auditEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether auditlog is enabled." })), "clientAuditing": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether client auditing is enabled." })), "clientStartedRecording": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date the auditlog started recording client in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "expensesAuditing": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expenses auditing is enabled." })), "expensesStartedRecording": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date the auditlog started recording expenses in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "projectAuditing": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project auditing is enabled." })), "projectStartedRecording": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date the auditlog started recording project in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "tagAuditing": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether tag auditing is enabled." })), "tagStartedRecording": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date the auditlog started recording tag in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "timeEntryAuditing": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time entry auditing is enabled." })), "timeEntryStartedRecording": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date the auditlog started recording time entry in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })) }).annotate({ "description": "Represents the settings for audit log.", "identifier": "AuditLogSettingsDtoV1" })
34
+ export type AutomaticLockDtoV1 = { readonly "changeDay"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "dayOfMonth"?: number, readonly "firstDay"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "olderThanPeriod"?: "DAYS" | "WEEKS" | "MONTHS", readonly "olderThanValue"?: number, readonly "type"?: "WEEKLY" | "MONTHLY" | "OLDER_THAN" }
35
+ export const AutomaticLockDtoV1 = Schema.Struct({ "changeDay": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "dayOfMonth": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a day of month as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "firstDay": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "olderThanPeriod": Schema.optionalKey(Schema.Literals(["DAYS", "WEEKS", "MONTHS"]).annotate({ "description": "Represents a time entry automatic lock period enum." })), "olderThanValue": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an integer as the criteria for locking time entries.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "type": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "OLDER_THAN"]).annotate({ "description": "Represents a time entry automatic lock type enum." })) }).annotate({ "description": "Represents an automatic lock object.", "identifier": "AutomaticLockDtoV1" })
36
+ export type DefaultBreakEntitiesDtoV1 = { readonly "projectId"?: string, readonly "taskId"?: string }
37
+ export const DefaultBreakEntitiesDtoV1 = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the project id." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the task id." })) }).annotate({ "description": "Represents the default break entities.", "identifier": "DefaultBreakEntitiesDtoV1" })
38
+ export type CustomLabelsDtoV1 = { readonly "projectGroupingLabel"?: string, readonly "projectLabel"?: string, readonly "taskLabel"?: string }
39
+ export const CustomLabelsDtoV1 = Schema.Struct({ "projectGroupingLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project grouping label." })), "projectLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project label." })), "taskLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task label." })) }).annotate({ "description": "Represents the custom labels.", "identifier": "CustomLabelsDtoV1" })
40
+ export type EntityCreationPermission = never
41
+ export const EntityCreationPermission = Schema.Never.annotate({ "identifier": "EntityCreationPermission" })
42
+ export type ExpenseApprovalSettingsDtoV1 = { readonly "approvalEnabled"?: boolean, readonly "approvalPeriod"?: "WEEKLY" | "SEMI_MONTHLY" | "MONTHLY", readonly "approvalRoles"?: ReadonlyArray<"ADMIN" | "TEAM_MANAGER" | "PROJECT_MANAGER"> }
43
+ export const ExpenseApprovalSettingsDtoV1 = Schema.Struct({ "approvalEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether approval is enabled." })), "approvalPeriod": Schema.optionalKey(Schema.Literals(["WEEKLY", "SEMI_MONTHLY", "MONTHLY"]).annotate({ "description": "Represents the approval period." })), "approvalRoles": Schema.optionalKey(Schema.Array(Schema.Literals(["ADMIN", "TEAM_MANAGER", "PROJECT_MANAGER"]).annotate({ "description": "Represents the list of roles who can approve." })).annotate({ "description": "Represents the list of roles who can approve." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Represents the settings for expense approval.", "identifier": "ExpenseApprovalSettingsDtoV1" })
44
+ export type RoundDto = { readonly "minutes"?: string, readonly "round"?: string }
45
+ export const RoundDto = Schema.Struct({ "minutes": Schema.optionalKey(Schema.String), "round": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents a time rounding object.", "identifier": "RoundDto" })
46
+ export type SchedulingAssignmentCreators = "ADMINS" | "ADMINS_AND_PROJECT_MANAGERS" | "ANYONE" | "EVERYONE"
47
+ export const SchedulingAssignmentCreators = Schema.Literals(["ADMINS", "ADMINS_AND_PROJECT_MANAGERS", "ANYONE", "EVERYONE"]).annotate({ "description": "Represents the entity who can create assignments.", "identifier": "SchedulingAssignmentCreators" })
48
+ export type TimeOffDtoV1 = { readonly "active"?: boolean, readonly "regularUserCanSeeOtherUsersTimeOff"?: boolean, readonly "showDefaultPoliciesMessageToUsers"?: ReadonlyArray<string> }
49
+ export const TimeOffDtoV1 = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time-off is active." })), "regularUserCanSeeOtherUsersTimeOff": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether regular user can see other user's time-off." })), "showDefaultPoliciesMessageToUsers": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents the list of show default policies message to users." })).annotate({ "description": "Represents the list of show default policies message to users." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Represents the settings for time-off.", "identifier": "TimeOffDtoV1" })
50
+ export type CreateWorkspaceRequestV1 = { readonly "name"?: string, readonly "organizationId"?: string }
51
+ export const CreateWorkspaceRequestV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace name." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(50).annotate({ "expected": "a value with a length of at most 50" }))), "organizationId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the Cake organization identifier across the system." })) }).annotate({ "identifier": "CreateWorkspaceRequestV1" })
52
+ export type WebhookEventTriggerSourceType = never
53
+ export const WebhookEventTriggerSourceType = Schema.Never.annotate({ "identifier": "WebhookEventTriggerSourceType" })
54
+ export type WebhookEventType = never
55
+ export const WebhookEventType = Schema.Never.annotate({ "identifier": "WebhookEventType" })
16
56
  export type ApprovalRequestCreatorDtoV1 = { readonly "userEmail"?: string, readonly "userId"?: string, readonly "userName"?: string }
17
- export const ApprovalRequestCreatorDtoV1 = Schema.Struct({ "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user email." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })) }).annotate({ "description": "Represents approval request creator object." })
57
+ export const ApprovalRequestCreatorDtoV1 = Schema.Struct({ "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user email." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })) }).annotate({ "description": "Represents approval request creator object.", "identifier": "ApprovalRequestCreatorDtoV1" })
58
+ export type DateRangeDto = { readonly "end"?: string, readonly "start"?: string }
59
+ export const DateRangeDto = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "start": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents date range object.", "identifier": "DateRangeDto" })
18
60
  export type ApprovalRequestOwnerDtoV1 = { readonly "startOfWeek"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "timeZone"?: string, readonly "userId"?: string, readonly "userName"?: string }
19
- export const ApprovalRequestOwnerDtoV1 = Schema.Struct({ "startOfWeek": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time zone." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })) }).annotate({ "description": "Represents approval request owner object." })
61
+ export const ApprovalRequestOwnerDtoV1 = Schema.Struct({ "startOfWeek": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time zone." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })) }).annotate({ "description": "Represents approval request owner object.", "identifier": "ApprovalRequestOwnerDtoV1" })
20
62
  export type ApprovalRequestStatusDtoV1 = { readonly "note"?: string, readonly "state"?: "PENDING" | "APPROVED" | "WITHDRAWN_SUBMISSION" | "WITHDRAWN_APPROVAL" | "REJECTED", readonly "updatedAt"?: string, readonly "updatedBy"?: string, readonly "updatedByUserName"?: string }
21
- export const ApprovalRequestStatusDtoV1 = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an approval requesst note." })), "state": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "WITHDRAWN_SUBMISSION", "WITHDRAWN_APPROVAL", "REJECTED"]).annotate({ "description": "Represents approval state enum." })), "updatedAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "updatedBy": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "updatedByUserName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })) }).annotate({ "description": "Represents approval request status object." })
22
- export type AssignmentPerDayDto = { readonly "date"?: string, readonly "hasAssignment"?: boolean }
23
- export const AssignmentPerDayDto = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "hasAssignment": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents a list of assignment per day objects." })
24
- export type AssignmentUpdateRequestV1 = { readonly "billable"?: boolean, readonly "end": string, readonly "hoursPerDay"?: number, readonly "includeNonWorkingDays"?: boolean, readonly "note"?: string, readonly "seriesUpdateOption"?: "THIS_ONE" | "THIS_AND_FOLLOWING" | "ALL", readonly "start": string, readonly "startTime"?: string, readonly "taskId"?: string }
25
- export const AssignmentUpdateRequestV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "hoursPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents assignment total hours per day.", "format": "double" }).check(Schema.isFinite())), "includeNonWorkingDays": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to include non-working days or not." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an assignment note." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))), "seriesUpdateOption": Schema.optionalKey(Schema.Literals(["THIS_ONE", "THIS_AND_FOLLOWING", "ALL"]).annotate({ "description": "Valid series option" })), "start": Schema.String.annotate({ "description": "Represents start date in yyyy-MM-ddThh:mm:ssZ format." }), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start time in the hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })) })
26
- export type AuthorizationSourceDtoV1 = { readonly "id"?: string, readonly "type"?: "USER_GROUP" }
27
- export const AuthorizationSourceDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents authorization source identifier across the system." })), "type": Schema.optionalKey(Schema.Literal("USER_GROUP").annotate({ "description": "Represents a valid authorization source type." })) }).annotate({ "description": "Represents an authorization data transfer object." })
28
- export type AutomaticAccrualDto = { readonly "amount"?: number, readonly "period"?: "MONTH" | "YEAR", readonly "timeUnit"?: "DAYS" | "HOURS" }
29
- export const AutomaticAccrualDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents automatic accrual's amount", "format": "double" }).check(Schema.isFinite())), "period": Schema.optionalKey(Schema.Literals(["MONTH", "YEAR"]).annotate({ "description": "Represents automatic accrual's period" })), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents automatic accrual's time unit" })) }).annotate({ "description": "Represents automatic approval settings." })
30
- export type AutomaticAccrualRequest = { readonly "amount": number, readonly "period"?: "MONTH" | "YEAR" }
31
- export const AutomaticAccrualRequest = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents amount of automatic accrual.", "format": "double" }).check(Schema.isFinite()).check(Schema.isGreaterThanOrEqualTo(0)), "period": Schema.optionalKey(Schema.Literals(["MONTH", "YEAR"]).annotate({ "description": "Represents automatic accrual period." })) }).annotate({ "description": "Provide automatic accrual settings." })
32
- export type AutomaticLockDtoV1 = { readonly "changeDay"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "dayOfMonth"?: number, readonly "firstDay"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "olderThanPeriod"?: "DAYS" | "WEEKS" | "MONTHS", readonly "olderThanValue"?: number, readonly "type"?: "WEEKLY" | "MONTHLY" | "OLDER_THAN" }
33
- export const AutomaticLockDtoV1 = Schema.Struct({ "changeDay": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "dayOfMonth": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a day of month as integer.", "format": "int32" }).check(Schema.isInt())), "firstDay": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "olderThanPeriod": Schema.optionalKey(Schema.Literals(["DAYS", "WEEKS", "MONTHS"]).annotate({ "description": "Represents a time entry automatic lock period enum." })), "olderThanValue": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an integer as the criteria for locking time entries.", "format": "int32" }).check(Schema.isInt())), "type": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "OLDER_THAN"]).annotate({ "description": "Represents a time entry automatic lock type enum." })) }).annotate({ "description": "Represents an automatic lock object." })
34
- export type BalanceDtoV1 = { readonly "balance"?: number, readonly "id"?: string, readonly "negativeBalanceAmount"?: number, readonly "negativeBalanceLimit"?: boolean, readonly "negativeBalanceUsed"?: number, readonly "policyArchived"?: boolean, readonly "policyId"?: string, readonly "policyName"?: string, readonly "policyTimeUnit"?: "DAYS" | "HOURS", readonly "total"?: number, readonly "used"?: number, readonly "userId"?: string, readonly "userName"?: string, readonly "workspaceId"?: string }
35
- export const BalanceDtoV1 = Schema.Struct({ "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the balance amount of the time unit", "format": "double" }).check(Schema.isFinite())), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represent balance identifier across the system." })), "negativeBalanceAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represent negative balance amount.", "format": "double" }).check(Schema.isFinite())), "negativeBalanceLimit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the negative balance limit is allowed." })), "negativeBalanceUsed": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the amount of balance used outside of existing balance and validity period", "format": "double" }).check(Schema.isFinite())), "policyArchived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is archived." })), "policyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represent policy identifier across the system." })), "policyName": Schema.optionalKey(Schema.String.annotate({ "description": "Represent policy name." })), "policyTimeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represent policy time unit." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the total amount", "format": "double" }).check(Schema.isFinite())), "used": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the balance used amount", "format": "double" }).check(Schema.isFinite())), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represent user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represent user's username." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represent workspace identifier across the system." })) }).annotate({ "description": "Represent the list of balances." })
36
- export type BaseFilterRequest = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string> }
37
- export const BaseFilterRequest = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique())) }).annotate({ "description": "Represents a company filter object. If provided, you'll get a filtered list of invoices that matches the specified company filter." })
38
- export type CalculationType = never
39
- export const CalculationType = Schema.Never
40
- export type ChangeInvoiceStatusRequestV1 = { readonly "invoiceStatus"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE" }
41
- export const ChangeInvoiceStatusRequestV1 = Schema.Struct({ "invoiceStatus": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the invoice status to be set." })) })
42
- export type ChangePolicyStatusRequestV1 = { readonly "status": "ACTIVE" | "ARCHIVED" | "ALL" }
43
- export const ChangePolicyStatusRequestV1 = Schema.Struct({ "status": Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Provide the status you would like to use for changing the policy." }) })
44
- export type ClientDtoV1 = { readonly "address"?: string, readonly "archived"?: boolean, readonly "ccEmails"?: ReadonlyArray<string>, readonly "currencyId"?: string, readonly "email"?: string, readonly "id"?: string, readonly "name"?: string, readonly "note"?: string, readonly "workspaceId"?: string }
45
- export const ClientDtoV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client's address." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether a client is archived or not." })), "ccEmails": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents additional emails for sending invoices." })).annotate({ "description": "Represents additional emails for sending invoices." })), "currencyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency identifier across the system." })), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client email." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents saved notes for the client." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
46
- export type ClientWithCurrencyDtoV1 = { readonly "address"?: string, readonly "archived"?: boolean, readonly "ccEmails"?: ReadonlyArray<string>, readonly "currencyCode"?: string, readonly "currencyId"?: string, readonly "email"?: string, readonly "id"?: string, readonly "name"?: string, readonly "note"?: string, readonly "workspaceId"?: string }
47
- export const ClientWithCurrencyDtoV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client's address." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether a client is archived or not." })), "ccEmails": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents additional emails for sending invoices." })).annotate({ "description": "Represents additional emails for sending invoices." })), "currencyCode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client currency code." })), "currencyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency identifier across the system." })), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client email." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents saved notes for the client." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
48
- export type ContainsArchivedFilterRequest = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
49
- export const ContainsArchivedFilterRequest = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filters entities by status." })) }).annotate({ "description": "Represents a project filter for imported items." })
50
- export type ContainsUserGroupFilterRequest = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL" }
51
- export const ContainsUserGroupFilterRequest = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Filters entities by status." })) }).annotate({ "description": "Provide list with user group ids and corresponding status." })
52
- export type ContainsUserGroupFilterRequestV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL" }
53
- export const ContainsUserGroupFilterRequestV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Filters entities by status." })) }).annotate({ "description": "Represents a user group filter request object." })
54
- export type ContainsUsersFilterRequestForHoliday = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE" | "INACTIVE", readonly "statuses"?: ReadonlyArray<string> }
55
- export const ContainsUsersFilterRequestForHoliday = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE", "INACTIVE"]).annotate({ "description": "Filters entities by status." })), "statuses": Schema.optionalKey(Schema.Array(Schema.String)) }).annotate({ "description": "Provide list with users ids and corresponding status." })
56
- export type ContainsUsersFilterRequestV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "sourceType"?: "USER_GROUP", readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "statuses"?: ReadonlyArray<"PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL"> }
57
- export const ContainsUsersFilterRequestV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique())), "sourceType": Schema.optionalKey(Schema.Literal("USER_GROUP").annotate({ "description": "Valid authorization source type." })), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Filters entities by status." })), "statuses": Schema.optionalKey(Schema.Array(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Valid array of membership statuses." })).annotate({ "description": "Valid array of membership statuses." })) }).annotate({ "description": "Represents a user filter request object." })
58
- export type CopyAssignmentRequestV1 = { readonly "seriesUpdateOption"?: "THIS_ONE" | "THIS_AND_FOLLOWING" | "ALL", readonly "userId": string }
59
- export const CopyAssignmentRequestV1 = Schema.Struct({ "seriesUpdateOption": Schema.optionalKey(Schema.Literals(["THIS_ONE", "THIS_AND_FOLLOWING", "ALL"]).annotate({ "description": "Represents a series update option." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }) })
60
- export type CostRateRequest = { readonly "amount"?: number, readonly "since"?: string, readonly "sinceAsInstant"?: string }
61
- export const CostRateRequest = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a datetime in yyyy-MM-ddThh:mm:ssZ format." })), "sinceAsInstant": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a cost rate request object." })
62
- export type CostRateRequestV1 = { readonly "amount": number, readonly "since"?: string }
63
- export const CostRateRequestV1 = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0)), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date and time in yyyy-MM-ddThh:mm:ssZ format." })) })
63
+ export const ApprovalRequestStatusDtoV1 = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an approval requesst note." })), "state": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "WITHDRAWN_SUBMISSION", "WITHDRAWN_APPROVAL", "REJECTED"]).annotate({ "description": "Represents approval state enum." })), "updatedAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "updatedBy": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "updatedByUserName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })) }).annotate({ "description": "Represents approval request status object.", "identifier": "ApprovalRequestStatusDtoV1" })
64
+ export type RateDto = { readonly "amount"?: number, readonly "currency"?: string }
65
+ export const RateDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })) }).annotate({ "description": "Represents hourly rate object.", "identifier": "RateDto" })
66
+ export type CustomFieldValueDto = { readonly "customFieldId"?: string, readonly "sourceType"?: "WORKSPACE" | "PROJECT" | "TIMEENTRY", readonly "timeEntryId"?: string, readonly "value"?: { } }
67
+ export const CustomFieldValueDto = Schema.Struct({ "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "sourceType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "TIMEENTRY"]).annotate({ "description": "Represents a custom field value source type." })), "timeEntryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of custom field value objects.", "identifier": "CustomFieldValueDto" })
68
+ export type ProjectInfoDto = { readonly "clientId"?: string, readonly "clientName"?: string, readonly "color"?: string, readonly "id"?: string, readonly "name"?: string }
69
+ export const ProjectInfoDto = Schema.Struct({ "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project name." })) }).annotate({ "description": "Represents a project info object.", "identifier": "ProjectInfoDto" })
70
+ export type TagDto = { readonly "archived": boolean, readonly "id": string, readonly "name": string, readonly "workspaceId": string }
71
+ export const TagDto = Schema.Struct({ "archived": Schema.Boolean.annotate({ "description": "Indicates whether tag is archived or not." }), "id": Schema.String.annotate({ "description": "Represents tag identifier across the system." }), "name": Schema.String.annotate({ "description": "Represents tag name." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) }).annotate({ "description": "Represents a list of tag objects.", "identifier": "TagDto" })
72
+ export type TaskInfoDto = { readonly "id"?: string, readonly "name"?: string }
73
+ export const TaskInfoDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })) }).annotate({ "description": "Represents a project info object.", "identifier": "TaskInfoDto" })
74
+ export type TimeIntervalDto = { readonly "duration"?: string | null, readonly "end"?: string | null, readonly "offsetEnd"?: number, readonly "offsetStart"?: number, readonly "start": string, readonly "timeZone"?: string, readonly "zonedEnd"?: string, readonly "zonedStart"?: string }
75
+ export const TimeIntervalDto = Schema.Struct({ "duration": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])), "end": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "format": "date-time" })), "offsetEnd": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "offsetStart": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "start": Schema.String.annotate({ "format": "date-time" }), "timeZone": Schema.optionalKey(Schema.String), "zonedEnd": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "zonedStart": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a time interval object.", "identifier": "TimeIntervalDto" })
76
+ export type ExpenseCategoryDto = { readonly "archived"?: boolean, readonly "hasUnitPrice"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "priceInCents"?: number, readonly "unit"?: string, readonly "workspaceId"?: string }
77
+ export const ExpenseCategoryDto = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag that indicates whether the expense category is archived or not." })), "hasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether expense category has unit price or none." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category name." })), "priceInCents": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents price in cents as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "unit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category unit." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents an expense category object.", "identifier": "ExpenseCategoryDto" })
64
78
  export type CreateApprovalRequest = { readonly "period"?: "WEEKLY" | "SEMI_MONTHLY" | "MONTHLY", readonly "periodStart": string, readonly "type"?: string }
65
- export const CreateApprovalRequest = Schema.Struct({ "period": Schema.optionalKey(Schema.Literals(["WEEKLY", "SEMI_MONTHLY", "MONTHLY"]).annotate({ "description": "Specifies the approval period. It has to match the workspace approval period setting." })), "periodStart": Schema.String.annotate({ "description": "Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format." }).check(Schema.isMinLength(1)), "type": Schema.optionalKey(Schema.String.check(Schema.isPattern(new RegExp("TIMESHEET|EXPENSE")))) })
79
+ export const CreateApprovalRequest = Schema.Struct({ "period": Schema.optionalKey(Schema.Literals(["WEEKLY", "SEMI_MONTHLY", "MONTHLY"]).annotate({ "description": "Specifies the approval period. It has to match the workspace approval period setting." })), "periodStart": Schema.String.annotate({ "description": "Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "type": Schema.optionalKey(Schema.String.check(Schema.isPattern(new RegExp("TIMESHEET|EXPENSE")).annotate({ "expected": "a string matching the RegExp TIMESHEET|EXPENSE" }))) }).annotate({ "identifier": "CreateApprovalRequest" })
66
80
  export type CreateApprovalRequestNoType = { readonly "period"?: "WEEKLY" | "SEMI_MONTHLY" | "MONTHLY", readonly "periodStart": string }
67
- export const CreateApprovalRequestNoType = Schema.Struct({ "period": Schema.optionalKey(Schema.Literals(["WEEKLY", "SEMI_MONTHLY", "MONTHLY"]).annotate({ "description": "Specifies the approval period. It has to match the workspace approval period setting." })), "periodStart": Schema.String.annotate({ "description": "Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format." }).check(Schema.isMinLength(1)) })
81
+ export const CreateApprovalRequestNoType = Schema.Struct({ "period": Schema.optionalKey(Schema.Literals(["WEEKLY", "SEMI_MONTHLY", "MONTHLY"]).annotate({ "description": "Specifies the approval period. It has to match the workspace approval period setting." })), "periodStart": Schema.String.annotate({ "description": "Specifies an approval period start date in yyyy-MM-ddThh:mm:ssZ format." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "CreateApprovalRequestNoType" })
82
+ export type UpdateApprovalRequest = { readonly "note"?: string, readonly "state": "PENDING" | "APPROVED" | "WITHDRAWN_SUBMISSION" | "WITHDRAWN_APPROVAL" | "REJECTED" }
83
+ export const UpdateApprovalRequest = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Additional notes for the approval request." })), "state": Schema.Literals(["PENDING", "APPROVED", "WITHDRAWN_SUBMISSION", "WITHDRAWN_APPROVAL", "REJECTED"]).annotate({ "description": "Specifies the approval state to set." }) }).annotate({ "identifier": "UpdateApprovalRequest" })
84
+ export type ClientWithCurrencyDtoV1 = { readonly "address"?: string, readonly "archived"?: boolean, readonly "ccEmails"?: ReadonlyArray<string>, readonly "currencyCode"?: string, readonly "currencyId"?: string, readonly "email"?: string, readonly "id"?: string, readonly "name"?: string, readonly "note"?: string, readonly "workspaceId"?: string }
85
+ export const ClientWithCurrencyDtoV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client's address." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether a client is archived or not." })), "ccEmails": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents additional emails for sending invoices." })).annotate({ "description": "Represents additional emails for sending invoices." })), "currencyCode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client currency code." })), "currencyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency identifier across the system." })), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client email." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents saved notes for the client." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "ClientWithCurrencyDtoV1" })
68
86
  export type CreateClientRequestV1 = { readonly "address"?: string, readonly "email"?: string, readonly "name"?: string, readonly "note"?: string }
69
- export const CreateClientRequestV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client's address." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client email.", "format": "email" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents additional notes for the client." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))) })
70
- export type CreateCustomAttributeRequest = { readonly "name": string, readonly "namespace": string, readonly "value": string }
71
- export const CreateCustomAttributeRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents custom attribute name." }).check(Schema.isMinLength(1)), "namespace": Schema.String.annotate({ "description": "Represents custom attribute namespace." }).check(Schema.isMinLength(1)), "value": Schema.String.annotate({ "description": "Represents custom attribute value." }).check(Schema.isMinLength(1)) }).annotate({ "description": "Represents a list of create custom field request objects." })
72
- export type CreateExpenseV1Request = { readonly "amount": number, readonly "billable"?: boolean, readonly "categoryId": string, readonly "date": string, readonly "file": string, readonly "notes"?: string, readonly "projectId": string, readonly "taskId"?: string, readonly "userId": string }
73
- export const CreateExpenseV1Request = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an expense amount as the double data type.", "format": "double" }).check(Schema.isFinite()).check(Schema.isLessThanOrEqualTo(92233720368547760)), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "categoryId": Schema.String.annotate({ "description": "Represents a category identifier across the system." }), "date": Schema.String.annotate({ "description": "Provides a valid yyyy-MM-ddThh:mm:ssZ format date.", "format": "date-time" }), "file": Schema.String.annotate({ "format": "binary" }), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))), "projectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }).check(Schema.isMinLength(1)) })
74
- export type CreateInvoiceDtoV1 = { readonly "billFrom"?: string, readonly "clientId"?: string, readonly "currency"?: string, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "number"?: string }
75
- export const CreateInvoiceDtoV1 = Schema.Struct({ "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents to whom the invoice should be billed from." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })) })
76
- export type CreateInvoiceItemRequestV1 = { readonly "applyTaxes": "TAX1" | "TAX2" | "TAX1TAX2" | "NONE", readonly "description": string, readonly "itemType": string, readonly "quantity": number, readonly "unitPrice": number }
77
- export const CreateInvoiceItemRequestV1 = Schema.Struct({ "applyTaxes": Schema.Literals(["TAX1", "TAX2", "TAX1TAX2", "NONE"]).annotate({ "description": "Represents taxes applied to the invoice item. Applies only when the specified taxes are active on the invoice." }), "description": Schema.String.annotate({ "description": "Represents an invoice item description." }), "itemType": Schema.String.annotate({ "description": "Represents an item type." }).check(Schema.isMinLength(1)), "quantity": Schema.Number.annotate({ "description": "Represents an item quantity.", "format": "int64" }).check(Schema.isInt()), "unitPrice": Schema.Number.annotate({ "description": "Represents an item unit price.", "format": "int64" }).check(Schema.isInt()) })
78
- export type CreateInvoicePaymentRequest = { readonly "amount"?: number, readonly "note"?: string, readonly "paymentDate"?: string }
79
- export const CreateInvoicePaymentRequest = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice payment amount as long.", "format": "int64" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment note." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(1000))), "paymentDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment date in yyyy-MM-ddThh:mm:ssZ format." })) })
80
- export type CreateInvoiceRequest = { readonly "clientId": string, readonly "currency": string, readonly "dueDate": string, readonly "issuedDate": string, readonly "number": string, readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
81
- export const CreateInvoiceRequest = Schema.Struct({ "clientId": Schema.String.annotate({ "description": "Represents a client identifier across the system." }).check(Schema.isMinLength(1)), "currency": Schema.String.annotate({ "description": "Represents the currency used by the invoice." }).check(Schema.isMinLength(1)), "dueDate": Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "issuedDate": Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "number": Schema.String.annotate({ "description": "Represents an invoice number." }).check(Schema.isMinLength(1)), "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"])) })
82
- export type CreateProjectFromTemplateV1 = { readonly "clientId"?: string, readonly "color"?: string, readonly "isPublic"?: boolean, readonly "name": string, readonly "templateProjectId": string }
83
- export const CreateProjectFromTemplateV1 = Schema.Struct({ "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client identifier across the system." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the project is public or not." })), "name": Schema.String.annotate({ "description": "Represents a project name." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(250)), "templateProjectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }).check(Schema.isMinLength(1)) })
84
- export type CreateWebhookRequestV1 = { readonly "name"?: string, readonly "triggerSource": ReadonlyArray<string>, readonly "triggerSourceType": "PROJECT_ID" | "USER_ID" | "TAG_ID" | "TASK_ID" | "WORKSPACE_ID" | "ASSIGNMENT_ID" | "EXPENSE_ID", readonly "url": string, readonly "webhookEvent": "NEW_PROJECT" | "NEW_TASK" | "NEW_CLIENT" | "NEW_TIMER_STARTED" | "TIMER_STOPPED" | "TIME_ENTRY_UPDATED" | "TIME_ENTRY_DELETED" | "TIME_ENTRY_SPLIT" | "NEW_TIME_ENTRY" | "TIME_ENTRY_RESTORED" | "NEW_TAG" | "USER_DELETED_FROM_WORKSPACE" | "USER_JOINED_WORKSPACE" | "USER_DEACTIVATED_ON_WORKSPACE" | "USER_ACTIVATED_ON_WORKSPACE" | "USER_EMAIL_CHANGED" | "USER_UPDATED" | "NEW_INVOICE" | "INVOICE_UPDATED" | "NEW_APPROVAL_REQUEST" | "APPROVAL_REQUEST_STATUS_UPDATED" | "TIME_OFF_REQUESTED" | "TIME_OFF_REQUEST_UPDATED" | "TIME_OFF_REQUEST_APPROVED" | "TIME_OFF_REQUEST_REJECTED" | "TIME_OFF_REQUEST_STARTED" | "TIME_OFF_REQUEST_WITHDRAWN" | "BALANCE_UPDATED" | "TAG_UPDATED" | "TAG_DELETED" | "TASK_UPDATED" | "CLIENT_UPDATED" | "TASK_DELETED" | "CLIENT_DELETED" | "EXPENSE_RESTORED" | "ASSIGNMENT_CREATED" | "ASSIGNMENT_DELETED" | "ASSIGNMENT_PUBLISHED" | "ASSIGNMENT_UPDATED" | "EXPENSE_CREATED" | "EXPENSE_DELETED" | "EXPENSE_UPDATED" | "PROJECT_UPDATED" | "PROJECT_DELETED" | "USER_GROUP_CREATED" | "USER_GROUP_UPDATED" | "USER_GROUP_DELETED" | "USERS_INVITED_TO_WORKSPACE" | "LIMITED_USERS_ADDED_TO_WORKSPACE" | "COST_RATE_UPDATED" | "BILLABLE_RATE_UPDATED" }
85
- export const CreateWebhookRequestV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a webhook name." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(30))), "triggerSource": Schema.Array(Schema.String.annotate({ "description": "Represents a list of trigger sources." })).annotate({ "description": "Represents a list of trigger sources." }), "triggerSourceType": Schema.Literals(["PROJECT_ID", "USER_ID", "TAG_ID", "TASK_ID", "WORKSPACE_ID", "ASSIGNMENT_ID", "EXPENSE_ID"]).annotate({ "description": "Represents a webhook event trigger source type." }), "url": Schema.String.annotate({ "description": "Represents a webhook target url." }).check(Schema.isMinLength(1)), "webhookEvent": Schema.Literals(["NEW_PROJECT", "NEW_TASK", "NEW_CLIENT", "NEW_TIMER_STARTED", "TIMER_STOPPED", "TIME_ENTRY_UPDATED", "TIME_ENTRY_DELETED", "TIME_ENTRY_SPLIT", "NEW_TIME_ENTRY", "TIME_ENTRY_RESTORED", "NEW_TAG", "USER_DELETED_FROM_WORKSPACE", "USER_JOINED_WORKSPACE", "USER_DEACTIVATED_ON_WORKSPACE", "USER_ACTIVATED_ON_WORKSPACE", "USER_EMAIL_CHANGED", "USER_UPDATED", "NEW_INVOICE", "INVOICE_UPDATED", "NEW_APPROVAL_REQUEST", "APPROVAL_REQUEST_STATUS_UPDATED", "TIME_OFF_REQUESTED", "TIME_OFF_REQUEST_UPDATED", "TIME_OFF_REQUEST_APPROVED", "TIME_OFF_REQUEST_REJECTED", "TIME_OFF_REQUEST_STARTED", "TIME_OFF_REQUEST_WITHDRAWN", "BALANCE_UPDATED", "TAG_UPDATED", "TAG_DELETED", "TASK_UPDATED", "CLIENT_UPDATED", "TASK_DELETED", "CLIENT_DELETED", "EXPENSE_RESTORED", "ASSIGNMENT_CREATED", "ASSIGNMENT_DELETED", "ASSIGNMENT_PUBLISHED", "ASSIGNMENT_UPDATED", "EXPENSE_CREATED", "EXPENSE_DELETED", "EXPENSE_UPDATED", "PROJECT_UPDATED", "PROJECT_DELETED", "USER_GROUP_CREATED", "USER_GROUP_UPDATED", "USER_GROUP_DELETED", "USERS_INVITED_TO_WORKSPACE", "LIMITED_USERS_ADDED_TO_WORKSPACE", "COST_RATE_UPDATED", "BILLABLE_RATE_UPDATED"]).annotate({ "description": "Represents a webhook event type." }) })
86
- export type CreateWorkspaceRequestV1 = { readonly "name"?: string, readonly "organizationId"?: string }
87
- export const CreateWorkspaceRequestV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace name." }).check(Schema.isMinLength(1)).check(Schema.isMaxLength(50))), "organizationId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the Cake organization identifier across the system." })) })
88
- export type CurrencyWithDefaultInfoDtoV1 = { readonly "code"?: string, readonly "id"?: string, readonly "isDefault"?: boolean }
89
- export const CurrencyWithDefaultInfoDtoV1 = Schema.Struct({ "code": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency code." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency identifier across the system." })), "isDefault": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether curency should be set as default." })) }).annotate({ "description": "Represents currency with default info object." })
87
+ export const CreateClientRequestV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client's address." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client email.", "format": "email" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents additional notes for the client." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))) }).annotate({ "identifier": "CreateClientRequestV1" })
88
+ export type UpdateClientRequestV1 = { readonly "address"?: string, readonly "archived"?: boolean, readonly "ccEmails"?: ReadonlyArray<string>, readonly "currencyId"?: string, readonly "email"?: string, readonly "name"?: string, readonly "note"?: string }
89
+ export const UpdateClientRequestV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client's address." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates if client will be archived or not." })), "ccEmails": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "format": "email" })).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3).annotate({ "expected": "a value with a length of at most 3" }))), "currencyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency identifier across the system." })), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client email.", "format": "email" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents additional notes for the client." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))) }).annotate({ "identifier": "UpdateClientRequestV1" })
90
+ export type ClientDtoV1 = { readonly "address"?: string, readonly "archived"?: boolean, readonly "ccEmails"?: ReadonlyArray<string>, readonly "currencyId"?: string, readonly "email"?: string, readonly "id"?: string, readonly "name"?: string, readonly "note"?: string, readonly "workspaceId"?: string }
91
+ export const ClientDtoV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client's address." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether a client is archived or not." })), "ccEmails": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents additional emails for sending invoices." })).annotate({ "description": "Represents additional emails for sending invoices." })), "currencyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents currency identifier across the system." })), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client email." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents saved notes for the client." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "ClientDtoV1" })
92
+ export type CostRateRequestV1 = { readonly "amount": number, readonly "since"?: string }
93
+ export const CostRateRequestV1 = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date and time in yyyy-MM-ddThh:mm:ssZ format." })) }).annotate({ "identifier": "CostRateRequestV1" })
90
94
  export type CustomFieldDefaultValuesDtoV1 = { readonly "projectId"?: string, readonly "status"?: string, readonly "value"?: { } }
91
- export const CustomFieldDefaultValuesDtoV1 = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "status": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field status" })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value" })) }).annotate({ "description": "Represents a list of custom field default values data transfer objects." })
92
- export type CustomFieldProjectDefaultValuesRequest = { readonly "defaultValue"?: { }, readonly "status"?: "INACTIVE" | "VISIBLE" | "INVISIBLE" }
93
- export const CustomFieldProjectDefaultValuesRequest = Schema.Struct({ "defaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"]).annotate({ "description": "Represents a custom field status." })) })
95
+ export const CustomFieldDefaultValuesDtoV1 = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "status": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field status" })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value" })) }).annotate({ "description": "Represents a list of custom field default values data transfer objects.", "identifier": "CustomFieldDefaultValuesDtoV1" })
94
96
  export type CustomFieldRequestV1 = { readonly "allowedValues"?: ReadonlyArray<string>, readonly "description"?: string, readonly "entityType"?: "TIMEENTRY" | "USER", readonly "name": string, readonly "onlyAdminCanEdit"?: boolean, readonly "placeholder"?: string, readonly "status"?: "INACTIVE" | "VISIBLE" | "INVISIBLE", readonly "type": "TXT" | "NUMBER" | "DROPDOWN_SINGLE" | "DROPDOWN_MULTIPLE" | "CHECKBOX" | "LINK", readonly "workspaceDefaultValue"?: { } }
95
- export const CustomFieldRequestV1 = Schema.Struct({ "allowedValues": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of custom field's allowed values." })).annotate({ "description": "Represents a list of custom field's allowed values." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field description." })), "entityType": Schema.optionalKey(Schema.Literals(["TIMEENTRY", "USER"]).annotate({ "description": "Represents custom field entity type" })), "name": Schema.String.annotate({ "description": "Represents custom field name." }), "onlyAdminCanEdit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is modifiable only by admin users." })), "placeholder": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field placeholder value." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"]).annotate({ "description": "Represents custom field status" })), "type": Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents custom field type." }), "workspaceDefaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value in the workspace.<li>if type = NUMBER, then value must be a number</li><li>if type = DROPDOWN_MULTIPLE, value must be a list</li><li>if type = CHECKBOX, value must be true/false</li><li>otherwise any string</li>" })) })
96
- export type CustomFieldType = never
97
- export const CustomFieldType = Schema.Never
98
- export type CustomFieldValueDto = { readonly "customFieldId"?: string, readonly "sourceType"?: "WORKSPACE" | "PROJECT" | "TIMEENTRY", readonly "timeEntryId"?: string, readonly "value"?: { } }
99
- export const CustomFieldValueDto = Schema.Struct({ "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "sourceType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "TIMEENTRY"]).annotate({ "description": "Represents a custom field value source type." })), "timeEntryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of custom field value objects." })
100
- export type CustomFieldValueDtoV1 = { readonly "customFieldId"?: string, readonly "name"?: string, readonly "timeEntryId"?: string, readonly "type"?: string, readonly "value"?: { } }
101
- export const CustomFieldValueDtoV1 = Schema.Struct({ "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field name." })), "timeEntryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field value source type." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of custom field value objects." })
97
+ export const CustomFieldRequestV1 = Schema.Struct({ "allowedValues": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of custom field's allowed values." })).annotate({ "description": "Represents a list of custom field's allowed values." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field description." })), "entityType": Schema.optionalKey(Schema.Literals(["TIMEENTRY", "USER"]).annotate({ "description": "Represents custom field entity type" })), "name": Schema.String.annotate({ "description": "Represents custom field name." }), "onlyAdminCanEdit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is modifiable only by admin users." })), "placeholder": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field placeholder value." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"]).annotate({ "description": "Represents custom field status" })), "type": Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents custom field type." }), "workspaceDefaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value in the workspace.<li>if type = NUMBER, then value must be a number</li><li>if type = DROPDOWN_MULTIPLE, value must be a list</li><li>if type = CHECKBOX, value must be true/false</li><li>otherwise any string</li>" })) }).annotate({ "identifier": "CustomFieldRequestV1" })
98
+ export type UpdateCustomFieldRequestV1 = { readonly "allowedValues"?: ReadonlyArray<string>, readonly "description"?: string, readonly "name": string, readonly "onlyAdminCanEdit"?: boolean, readonly "placeholder"?: string, readonly "required"?: boolean, readonly "status"?: "INACTIVE" | "VISIBLE" | "INVISIBLE", readonly "type"?: "TXT" | "NUMBER" | "DROPDOWN_SINGLE" | "DROPDOWN_MULTIPLE" | "CHECKBOX" | "LINK", readonly "workspaceDefaultValue"?: { } }
99
+ export const UpdateCustomFieldRequestV1 = Schema.Struct({ "allowedValues": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of custom field's allowed values. If field type is not `DROPDOWN_SINGLE` or `DROPDOWN_MULTIPLE`, the values provided will be ignored by the server." })).annotate({ "description": "Represents a list of custom field's allowed values. If field type is not `DROPDOWN_SINGLE` or `DROPDOWN_MULTIPLE`, the values provided will be ignored by the server." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field description.<br/>If this field is not included in the payload,it will automatically be set to `null`" })), "name": Schema.String.annotate({ "description": "Represents a custom field name." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(250).annotate({ "expected": "a value with a length of at most 250" })), "onlyAdminCanEdit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is modifiable only by admin users." })), "placeholder": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field placeholder value.<br/>If this field is not included in the payload,it will automatically be set to `null`." })), "required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is mandatory or not." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"]).annotate({ "description": "Represents a custom field status.<br/>If this field is not included in the payload,it will automatically be set to default `INACTIVE`." })), "type": Schema.optionalKey(Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents a custom field type. This field is now deprecated and it's value will be ignored by the server. It will be removed entirely in a future release. Please stop including it in your payloads. To change a custom field type, please create a new object with the desired type instead." })), "workspaceDefaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value in the workspace.<li>if type = NUMBER, then value must be a number</li><li>if type = DROPDOWN_MULTIPLE, value must be a list</li><li>if type = CHECKBOX, value must be true/false</li><li>otherwise any string</li>" })) }).annotate({ "identifier": "UpdateCustomFieldRequestV1" })
100
+ export type LogBinDocumentDto = { readonly "deletedAt"?: string, readonly "document"?: { }, readonly "documentCode"?: string, readonly "id"?: string }
101
+ export const LogBinDocumentDto = Schema.Struct({ "deletedAt": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "document": Schema.optionalKey(Schema.Struct({ })), "documentCode": Schema.optionalKey(Schema.String), "id": Schema.optionalKey(Schema.String) }).annotate({ "identifier": "LogBinDocumentDto" })
102
+ export type ExpenseDailyTotalsDtoV1 = { readonly "date"?: string, readonly "dateAsInstant"?: string, readonly "total"?: number }
103
+ export const ExpenseDailyTotalsDtoV1 = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "dateAsInstant": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))) }).annotate({ "description": "Represents a list of expense daily total data transfer objects.", "identifier": "ExpenseDailyTotalsDtoV1" })
104
+ export type ExpenseWeeklyTotalsDtoV1 = { readonly "date"?: string, readonly "total"?: number }
105
+ export const ExpenseWeeklyTotalsDtoV1 = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))) }).annotate({ "description": "Represents a list of expense weekly total data transfer objects.", "identifier": "ExpenseWeeklyTotalsDtoV1" })
106
+ export type CreateExpenseV1Request = { readonly "amount": number, readonly "billable"?: boolean, readonly "categoryId": string, readonly "date": string, readonly "file": string, readonly "notes"?: string, readonly "projectId": string, readonly "taskId"?: string, readonly "userId": string }
107
+ export const CreateExpenseV1Request = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an expense amount as the double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isLessThanOrEqualTo(92233720368547760).annotate({ "expected": "a value less than or equal to 92233720368547760" })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "categoryId": Schema.String.annotate({ "description": "Represents a category identifier across the system." }), "date": Schema.String.annotate({ "description": "Provides a valid yyyy-MM-ddThh:mm:ssZ format date.", "format": "date-time" }), "file": Schema.String.annotate({ "format": "binary" }), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))), "projectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "CreateExpenseV1Request" })
108
+ export type ExpenseDtoV1 = { readonly "billable"?: boolean, readonly "categoryId"?: string, readonly "date"?: string, readonly "fileId"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "locked"?: boolean, readonly "notes"?: string, readonly "projectId"?: string, readonly "quantity"?: number, readonly "taskId"?: string, readonly "total"?: number, readonly "userId"?: string, readonly "workspaceId"?: string }
109
+ export const ExpenseDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "categoryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category identifier across the system." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "locked": Schema.optionalKey(Schema.Boolean), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense quantity as double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total as double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "ExpenseDtoV1" })
110
+ export type ExpenseCategoryDtoV1 = { readonly "archived"?: boolean, readonly "hasUnitPrice"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "priceInCents"?: number, readonly "unit"?: string, readonly "workspaceId"?: string }
111
+ export const ExpenseCategoryDtoV1 = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag that indicates whether the expense category is archived or not." })), "hasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether expense category has unit price or none." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category name." })), "priceInCents": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents price in cents as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "unit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category unit." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a list of expense categories data transfer object.", "identifier": "ExpenseCategoryDtoV1" })
112
+ export type ExpenseCategoryV1Request = { readonly "hasUnitPrice"?: boolean, readonly "name": string, readonly "priceInCents"?: number, readonly "unit"?: string }
113
+ export const ExpenseCategoryV1Request = Schema.Struct({ "hasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether expense category has unit price or none." })), "name": Schema.String.annotate({ "description": "Represents a valid expense category name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(250).annotate({ "expected": "a value with a length of at most 250" })), "priceInCents": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents price in cents as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "unit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a valid expense category unit." })) }).annotate({ "identifier": "ExpenseCategoryV1Request" })
114
+ export type ExpenseCategoryArchiveV1Request = { readonly "archived"?: boolean }
115
+ export const ExpenseCategoryArchiveV1Request = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to archive the expense category or not." })) }).annotate({ "identifier": "ExpenseCategoryArchiveV1Request" })
116
+ export type UpdateExpenseV1Request = { readonly "amount": number, readonly "billable"?: boolean, readonly "categoryId": string, readonly "changeFields": ReadonlyArray<"USER" | "DATE" | "PROJECT" | "TASK" | "CATEGORY" | "NOTES" | "AMOUNT" | "BILLABLE" | "FILE">, readonly "date": string, readonly "file": string, readonly "notes"?: string, readonly "projectId"?: string, readonly "taskId"?: string, readonly "userId": string }
117
+ export const UpdateExpenseV1Request = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an expense amount as the double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })).check(Schema.isLessThanOrEqualTo(92233720368547760).annotate({ "expected": "a value less than or equal to 92233720368547760" })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "categoryId": Schema.String.annotate({ "description": "Represents a category identifier across the system." }), "changeFields": Schema.Array(Schema.Literals(["USER", "DATE", "PROJECT", "TASK", "CATEGORY", "NOTES", "AMOUNT", "BILLABLE", "FILE"]).annotate({ "description": "Represents a list of expense change fields." })).annotate({ "description": "Represents a list of expense change fields." }), "date": Schema.String.annotate({ "description": "Provides a valid yyyy-MM-ddThh:mm:ssZ format date.", "format": "date-time" }), "file": Schema.String.annotate({ "format": "binary" }), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "UpdateExpenseV1Request" })
102
118
  export type DatePeriod = { readonly "endDate"?: string, readonly "startDate"?: string }
103
- export const DatePeriod = Schema.Struct({ "endDate": Schema.optionalKey(Schema.String.annotate({ "format": "date" })), "startDate": Schema.optionalKey(Schema.String.annotate({ "format": "date" })) }).annotate({ "description": "Represents startDate and endDate of the holiday. Date is in format yyyy-mm-dd" })
119
+ export const DatePeriod = Schema.Struct({ "endDate": Schema.optionalKey(Schema.String.annotate({ "format": "date" })), "startDate": Schema.optionalKey(Schema.String.annotate({ "format": "date" })) }).annotate({ "description": "Represents startDate and endDate of the holiday. Date is in format yyyy-mm-dd", "identifier": "DatePeriod" })
120
+ export type DefaultEntitiesRequest = { readonly "projectId"?: string, readonly "taskId"?: string }
121
+ export const DefaultEntitiesRequest = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Default project for automatically created time entries" })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Default task for automatically created time entries" })) }).annotate({ "description": "Provides information about default project and task for automatically created time entries.", "identifier": "DefaultEntitiesRequest" })
104
122
  export type DatePeriodRequest = { readonly "endDate": string, readonly "startDate": string }
105
- export const DatePeriodRequest = Schema.Struct({ "endDate": Schema.String.annotate({ "description": "yyyy-MM-dd format date" }).check(Schema.isMinLength(1)), "startDate": Schema.String.annotate({ "description": "yyyy-MM-dd format date" }).check(Schema.isMinLength(1)) }).annotate({ "description": "Provide startDate and endDate for the holiday." })
106
- export type DateRange = { readonly "end"?: string, readonly "start"?: string }
107
- export const DateRange = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "start": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) })
108
- export type DateRangeDto = { readonly "end"?: string, readonly "start"?: string }
109
- export const DateRangeDto = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "start": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents date range object." })
110
- export type DateRangeV1Request = { readonly "end"?: string, readonly "start"?: string }
111
- export const DateRangeV1Request = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "description": "Provide end date in YYYY-MM-DD format." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Provide start date in YYYY-MM-DD format." })) }).annotate({ "description": "Represents the date range when the new balance will be usable. If null, this will default to the current day until the same day next year." })
123
+ export const DatePeriodRequest = Schema.Struct({ "endDate": Schema.String.annotate({ "description": "yyyy-MM-dd format date" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "startDate": Schema.String.annotate({ "description": "yyyy-MM-dd format date" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "description": "Provide startDate and endDate for the holiday.", "identifier": "DatePeriodRequest" })
124
+ export type UserGroupIdsSchema = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE" | "INACTIVE" }
125
+ export const UserGroupIdsSchema = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN"])), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents ids upon which filtering is performed." })).annotate({ "description": "Represents ids upon which filtering is performed." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE", "INACTIVE"]).annotate({ "description": "Represents user status." })) }).annotate({ "description": "Provide list with user group ids and corresponding status.", "identifier": "UserGroupIdsSchema" })
126
+ export type UserIdsSchema = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE" | "INACTIVE" }
127
+ export const UserIdsSchema = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN"])), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents ids upon which filtering is performed." })).annotate({ "description": "Represents ids upon which filtering is performed." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE", "INACTIVE"]).annotate({ "description": "Represents user status." })) }).annotate({ "description": "Provide list with user ids and corresponding status.", "identifier": "UserIdsSchema" })
128
+ export type ContainsUserGroupFilterRequest = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL" }
129
+ export const ContainsUserGroupFilterRequest = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Filters entities by status." })) }).annotate({ "description": "Provide list with user group ids and corresponding status.", "identifier": "ContainsUserGroupFilterRequest" })
130
+ export type ContainsUsersFilterRequestForHoliday = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE" | "INACTIVE", readonly "statuses"?: ReadonlyArray<string> }
131
+ export const ContainsUsersFilterRequestForHoliday = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE", "INACTIVE"]).annotate({ "description": "Filters entities by status." })), "statuses": Schema.optionalKey(Schema.Array(Schema.String)) }).annotate({ "description": "Provide list with users ids and corresponding status.", "identifier": "ContainsUsersFilterRequestForHoliday" })
132
+ export type AutoImportHolidaySettingDto = { readonly "day"?: number, readonly "enabled"?: boolean, readonly "month"?: number }
133
+ export const AutoImportHolidaySettingDto = Schema.Struct({ "day": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "enabled": Schema.optionalKey(Schema.Boolean), "month": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "description": "Represents holiday auto import settings.", "identifier": "AutoImportHolidaySettingDto" })
112
134
  export type DefaultEntitiesDto = { readonly "projectId"?: string, readonly "taskId"?: string }
113
- export const DefaultEntitiesDto = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String), "taskId": Schema.optionalKey(Schema.String) })
114
- export type DefaultEntitiesRequest = { readonly "projectId"?: string, readonly "taskId"?: string }
115
- export const DefaultEntitiesRequest = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Default project for automatically created time entries" })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Default task for automatically created time entries" })) }).annotate({ "description": "Provides information about default project and task for automatically created time entries." })
116
- export type DeleteBalanceAssignmentV1Request = { readonly "note": string }
117
- export const DeleteBalanceAssignmentV1Request = Schema.Struct({ "note": Schema.String.annotate({ "description": "Represents a note explaining balance deletion" }).check(Schema.isMinLength(1)) })
118
- export type EntityCreationPermission = never
119
- export const EntityCreationPermission = Schema.Never
135
+ export const DefaultEntitiesDto = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String), "taskId": Schema.optionalKey(Schema.String) }).annotate({ "identifier": "DefaultEntitiesDto" })
120
136
  export type EntityIdNameDto = { readonly "id"?: string, readonly "name"?: string }
121
- export const EntityIdNameDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String) }).annotate({ "description": "Contains names of user groups that are assigned to holiday." })
122
- export type EstimateDtoV1 = { readonly "estimate"?: string, readonly "type"?: "AUTO" | "MANUAL" }
123
- export const EstimateDtoV1 = Schema.Struct({ "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents a project estimate object." })
124
- export type EstimateRequest = { readonly "estimate"?: string, readonly "type"?: "AUTO" | "MANUAL" }
125
- export const EstimateRequest = Schema.Struct({ "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration in ISO-8601 format." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents an estimate request object." })
126
- export type EstimateResetDto = { readonly "dayOfMonth"?: number, readonly "dayOfWeek"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "hour"?: number, readonly "interval"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "month"?: "JANUARY" | "FEBRUARY" | "MARCH" | "APRIL" | "MAY" | "JUNE" | "JULY" | "AUGUST" | "SEPTEMBER" | "OCTOBER" | "NOVEMBER" | "DECEMBER" }
127
- export const EstimateResetDto = Schema.Struct({ "dayOfMonth": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "dayOfWeek": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"])), "hour": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "interval": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"])), "month": Schema.optionalKey(Schema.Literals(["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"])) }).annotate({ "description": "Represents project estimate reset object" })
128
- export type EstimateResetRequest = { readonly "active"?: boolean, readonly "dayOfMonth"?: number, readonly "dayOfWeek"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "hour"?: number, readonly "interval"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "isActive"?: boolean, readonly "month"?: "JANUARY" | "FEBRUARY" | "MARCH" | "APRIL" | "MAY" | "JUNE" | "JULY" | "AUGUST" | "SEPTEMBER" | "OCTOBER" | "NOVEMBER" | "DECEMBER" }
129
- export const EstimateResetRequest = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean), "dayOfMonth": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a day of the month.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(31))), "dayOfWeek": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "hour": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an hour of the day in 24 hour time format.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0)).check(Schema.isLessThanOrEqualTo(23))), "interval": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "isActive": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "month": Schema.optionalKey(Schema.Literals(["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"]).annotate({ "description": "Represents a month enum." })) }).annotate({ "description": "Represents estimate reset request object." })
130
- export type EstimateWithOptionsDto = { readonly "active"?: boolean, readonly "estimate"?: number, readonly "includeExpenses"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
131
- export const EstimateWithOptionsDto = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean), "estimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an estimate as long.", "format": "int64" }).check(Schema.isInt())), "includeExpenses": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether estimate includes non-billable or not." })), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents a project budget estimate object." })
132
- export type EstimateWithOptionsRequest = { readonly "active"?: boolean, readonly "estimate"?: number, readonly "includeExpenses"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
133
- export const EstimateWithOptionsRequest = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to set estimate as active or not." })), "estimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an estimate as long.", "format": "int64" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "includeExpenses": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to include billable expenses." })), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents estimate with options request object." })
134
- export type ExpenseCategoryArchiveV1Request = { readonly "archived"?: boolean }
135
- export const ExpenseCategoryArchiveV1Request = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to archive the expense category or not." })) })
136
- export type ExpenseCategoryDto = { readonly "archived"?: boolean, readonly "hasUnitPrice"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "priceInCents"?: number, readonly "unit"?: string, readonly "workspaceId"?: string }
137
- export const ExpenseCategoryDto = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag that indicates whether the expense category is archived or not." })), "hasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether expense category has unit price or none." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category name." })), "priceInCents": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents price in cents as integer.", "format": "int32" }).check(Schema.isInt())), "unit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category unit." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents an expense category object." })
138
- export type ExpenseCategoryDtoV1 = { readonly "archived"?: boolean, readonly "hasUnitPrice"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "priceInCents"?: number, readonly "unit"?: string, readonly "workspaceId"?: string }
139
- export const ExpenseCategoryDtoV1 = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag that indicates whether the expense category is archived or not." })), "hasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether expense category has unit price or none." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category name." })), "priceInCents": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents price in cents as integer.", "format": "int32" }).check(Schema.isInt())), "unit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense category unit." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a list of expense categories data transfer object." })
140
- export type ExpenseCategoryV1Request = { readonly "hasUnitPrice"?: boolean, readonly "name": string, readonly "priceInCents"?: number, readonly "unit"?: string }
141
- export const ExpenseCategoryV1Request = Schema.Struct({ "hasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether expense category has unit price or none." })), "name": Schema.String.annotate({ "description": "Represents a valid expense category name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(250)), "priceInCents": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents price in cents as integer.", "format": "int32" }).check(Schema.isInt())), "unit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a valid expense category unit." })) })
142
- export type ExpenseDailyTotalsDtoV1 = { readonly "date"?: string, readonly "dateAsInstant"?: string, readonly "total"?: number }
143
- export const ExpenseDailyTotalsDtoV1 = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "dateAsInstant": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total.", "format": "double" }).check(Schema.isFinite())) }).annotate({ "description": "Represents a list of expense daily total data transfer objects." })
144
- export type ExpenseDtoV1 = { readonly "billable"?: boolean, readonly "categoryId"?: string, readonly "date"?: string, readonly "fileId"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "locked"?: boolean, readonly "notes"?: string, readonly "projectId"?: string, readonly "quantity"?: number, readonly "taskId"?: string, readonly "total"?: number, readonly "userId"?: string, readonly "workspaceId"?: string }
145
- export const ExpenseDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "categoryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category identifier across the system." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "locked": Schema.optionalKey(Schema.Boolean), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense quantity as double data type.", "format": "double" }).check(Schema.isFinite())), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total as double data type.", "format": "double" }).check(Schema.isFinite())), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
146
- export type ExpenseWeeklyTotalsDtoV1 = { readonly "date"?: string, readonly "total"?: number }
147
- export const ExpenseWeeklyTotalsDtoV1 = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total.", "format": "double" }).check(Schema.isFinite())) }).annotate({ "description": "Represents a list of expense weekly total data transfer objects." })
148
- export type Feature = never
149
- export const Feature = Schema.Never
150
- export type FeaturePlan = never
151
- export const FeaturePlan = Schema.Never
152
- export type GetTimeEntriesByIdsRequest = { readonly "hydrated"?: boolean, readonly "timeEntryIds": ReadonlyArray<string> }
153
- export const GetTimeEntriesByIdsRequest = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to include additional information of time entries or not." })), "timeEntryIds": Schema.Array(Schema.String.annotate({ "description": "Represents time entry identifiers across the system." })).annotate({ "description": "Represents time entry identifiers across the system." }).check(Schema.isMinLength(1)) })
154
- export type GetTimeOffRequestsV1Request = { readonly "end"?: string, readonly "page"?: number, readonly "pageSize"?: number, readonly "start"?: string, readonly "statuses"?: ReadonlyArray<"PENDING" | "APPROVED" | "REJECTED" | "ALL">, readonly "userGroups"?: ReadonlyArray<string>, readonly "users"?: ReadonlyArray<string> }
155
- export const GetTimeOffRequestsV1Request = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the end of the filtering period. Used with `start` to filter for time-off requests periods that occur (fully or partially) within this range. Both parameters must be provided for filtering to take effect. Provide end in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt()).check(Schema.isLessThanOrEqualTo(1000))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(200))), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the beginning of the filtering period. Used with `end` to filter for time-off requests periods that occur (fully or partially) within this range. Both parameters must be provided for filtering to take effect. Provide start in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "statuses": Schema.optionalKey(Schema.Array(Schema.Literals(["PENDING", "APPROVED", "REJECTED", "ALL"]).annotate({ "description": "Filters time off requests by status." })).annotate({ "description": "Filters time off requests by status." }).check(Schema.isUnique())), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide the user group ids of time off requests." })).annotate({ "description": "Provide the user group ids of time off requests." }).check(Schema.isUnique())), "users": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide the user ids of time off requests. If empty, will return time off requests of all users (with a maximum of 5000 users)." })).annotate({ "description": "Provide the user ids of time off requests. If empty, will return time off requests of all users (with a maximum of 5000 users)." }).check(Schema.isUnique())) })
156
- export type GetUsersRequestV1 = { readonly "accountStatuses"?: ReadonlyArray<string>, readonly "email"?: string, readonly "includeRoles"?: boolean, readonly "memberships"?: "ALL" | "NONE" | "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "name"?: string, readonly "page"?: number, readonly "pageSize"?: number, readonly "projectId"?: string, readonly "roles"?: ReadonlyArray<"WORKSPACE_ADMIN" | "OWNER" | "TEAM_MANAGER" | "PROJECT_MANAGER">, readonly "sortColumn"?: "ID" | "EMAIL" | "NAME" | "NAME_LOWERCASE" | "ACCESS" | "HOURLYRATE" | "COSTRATE", readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "userGroups"?: ReadonlyArray<string> }
157
- export const GetUsersRequestV1 = Schema.Struct({ "accountStatuses": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users with the corresponding account status filter. If not, this will only filter ACTIVE, PENDING_EMAIL_VERIFICATION, and NOT_REGISTERED Users." })).annotate({ "description": "If provided, you'll get a filtered list of users with the corresponding account status filter. If not, this will only filter ACTIVE, PENDING_EMAIL_VERIFICATION, and NOT_REGISTERED Users." }).check(Schema.isUnique())), "email": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their email address." })), "includeRoles": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If you pass along includeRoles=true, you'll get each user's detailed manager role (including projects and members for whom they're managers)" })), "memberships": Schema.optionalKey(Schema.Literals(["ALL", "NONE", "WORKSPACE", "PROJECT", "USERGROUP"]).annotate({ "description": "If provided, you'll get all users along with workspaces, groups, or projects they have access to." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their name." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a list of users that have access to the project." })), "roles": Schema.optionalKey(Schema.Array(Schema.Literals(["WORKSPACE_ADMIN", "OWNER", "TEAM_MANAGER", "PROJECT_MANAGER"]).annotate({ "description": "If provided, you'll get a filtered list of users that have any of the specified roles. Owners are counted as admins when filtering." })).annotate({ "description": "If provided, you'll get a filtered list of users that have any of the specified roles. Owners are counted as admins when filtering." }).check(Schema.isUnique())), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "EMAIL", "NAME", "NAME_LOWERCASE", "ACCESS", "HOURLYRATE", "COSTRATE"]).annotate({ "description": "Sorting criteria" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "Sorting mode" })), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "If provided, you'll get a filtered list of users with the corresponding status." })), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a list of users that belong to the specified user group IDs." })).annotate({ "description": "If provided, you'll get a list of users that belong to the specified user group IDs." }).check(Schema.isUnique())) })
158
- export type HourlyRateDtoV1 = { readonly "amount"?: number, readonly "currency"?: string }
159
- export const HourlyRateDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt())), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })) }).annotate({ "description": "Represents an hourly rate object." })
160
- export type HourlyRateRequest = { readonly "amount": number, readonly "since"?: string }
161
- export const HourlyRateRequest = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents a cost rate amount as integer.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0)), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a datetime in yyyy-MM-ddThh:mm:ssZ format." })) }).annotate({ "description": "Represents an hourly rate request object." })
162
- export type HourlyRateRequestV1 = { readonly "amount": number, readonly "since"?: string }
163
- export const HourlyRateRequestV1 = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an hourly rate amount as integer.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0)), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date and time in yyyy-MM-ddThh:mm:ssZ format." })) })
164
- export type InvoiceDefaultSettingsDto = { readonly "companyId"?: string, readonly "defaultImportExpenseItemTypeId"?: string, readonly "defaultImportTimeItemTypeId"?: string, readonly "dueDays"?: number, readonly "itemType"?: string, readonly "itemTypeId"?: string, readonly "notes"?: string, readonly "subject"?: string, readonly "tax"?: number, readonly "tax2"?: number, readonly "tax2Percent"?: number, readonly "taxPercent"?: number, readonly "taxType"?: "COMPOUND" | "SIMPLE" | "NONE" }
165
- export const InvoiceDefaultSettingsDto = Schema.Struct({ "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "defaultImportExpenseItemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "defaultImportTimeItemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "dueDays": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice number of due days.", "format": "int32" }).check(Schema.isInt())), "itemType": Schema.optionalKey(Schema.String.annotate({ "writeOnly": true })), "itemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice note." })), "subject": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice subject." })), "tax": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "tax2": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "tax2Percent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite())), "taxPercent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite())), "taxType": Schema.optionalKey(Schema.Literals(["COMPOUND", "SIMPLE", "NONE"]).annotate({ "description": "Represents a tax type." })) }).annotate({ "description": "Represents an invoice default settings object." })
166
- export type InvoiceDefaultSettingsRequestV1 = { readonly "companyId"?: string, readonly "dueDays"?: number, readonly "itemTypeId"?: string, readonly "notes": string, readonly "subject": string, readonly "tax2Percent"?: number, readonly "taxPercent"?: number, readonly "taxType"?: "COMPOUND" | "SIMPLE" | "NONE" }
167
- export const InvoiceDefaultSettingsRequestV1 = Schema.Struct({ "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "dueDays": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice number of due days.", "format": "int32" }).check(Schema.isInt())), "itemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "notes": Schema.String.annotate({ "description": "Represents an invoice note." }), "subject": Schema.String.annotate({ "description": "Represents an invoice subject." }), "tax2Percent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite())), "taxPercent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite())), "taxType": Schema.optionalKey(Schema.Literals(["COMPOUND", "SIMPLE", "NONE"]).annotate({ "description": "Represents a tax type." })) }).annotate({ "description": "Represents an invoice default settings object." })
137
+ export const EntityIdNameDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String) }).annotate({ "description": "Contains names of users that are assigned to holiday.", "identifier": "EntityIdNameDto" })
138
+ export type RateWithCurrencyRequestV1 = { readonly "amount": number, readonly "currency": string, readonly "since"?: string }
139
+ export const RateWithCurrencyRequestV1 = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })), "currency": Schema.String.annotate({ "description": "Represents a currency." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" })), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date and time in yyyy-MM-ddThh:mm:ssZ format." })) }).annotate({ "identifier": "RateWithCurrencyRequestV1" })
168
140
  export type InvoiceDtoV1 = { readonly "amount"?: number, readonly "balance"?: number, readonly "clientId"?: string, readonly "clientName"?: string, readonly "currency"?: string, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "number"?: string, readonly "paid"?: number, readonly "status"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE" }
169
- export const InvoiceDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount as long.", "format": "int64" }).check(Schema.isInt())), "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance amount as long.", "format": "int64" }).check(Schema.isInt())), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name for an invoice." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })), "paid": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice paid amount as long.", "format": "int64" }).check(Schema.isInt())), "status": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the status of an invoice." })) }).annotate({ "description": "Represents a list of invoices." })
141
+ export const InvoiceDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name for an invoice." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })), "paid": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice paid amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "status": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the status of an invoice." })) }).annotate({ "description": "Represents a list of invoices.", "identifier": "InvoiceDtoV1" })
142
+ export type CreateInvoiceRequest = { readonly "clientId": string, readonly "currency": string, readonly "dueDate": string, readonly "issuedDate": string, readonly "number": string, readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
143
+ export const CreateInvoiceRequest = Schema.Struct({ "clientId": Schema.String.annotate({ "description": "Represents a client identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "currency": Schema.String.annotate({ "description": "Represents the currency used by the invoice." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dueDate": Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "issuedDate": Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "number": Schema.String.annotate({ "description": "Represents an invoice number." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"])) }).annotate({ "identifier": "CreateInvoiceRequest" })
144
+ export type CreateInvoiceDtoV1 = { readonly "billFrom"?: string, readonly "clientId"?: string, readonly "currency"?: string, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "number"?: string }
145
+ export const CreateInvoiceDtoV1 = Schema.Struct({ "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents to whom the invoice should be billed from." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })) }).annotate({ "identifier": "CreateInvoiceDtoV1" })
146
+ export type ContainsArchivedFilterRequest = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
147
+ export const ContainsArchivedFilterRequest = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filters entities by status." })) }).annotate({ "description": "Represents a project filter for imported items.", "identifier": "ContainsArchivedFilterRequest" })
148
+ export type BaseFilterRequest = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string> }
149
+ export const BaseFilterRequest = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Represents a company filter object. If provided, you'll get a filtered list of invoices that matches the specified company filter.", "identifier": "BaseFilterRequest" })
150
+ export type TimeRangeRequestDtoV1 = { readonly "issue-date-end"?: string, readonly "issue-date-start"?: string }
151
+ export const TimeRangeRequestDtoV1 = Schema.Struct({ "issue-date-end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format. This is the lower bound of the time range." })), "issue-date-start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format. This is the lower bound of the time range." })) }).annotate({ "description": "Represents a time range object. If provided, you'll get a filtered list of invoices that has issue date within the time range specified.", "identifier": "TimeRangeRequestDtoV1" })
152
+ export type VisibleZeroFieldsInvoice = never
153
+ export const VisibleZeroFieldsInvoice = Schema.Never.annotate({ "identifier": "VisibleZeroFieldsInvoice" })
154
+ export type InvoiceDefaultSettingsDto = { readonly "companyId"?: string, readonly "defaultImportExpenseItemTypeId"?: string, readonly "defaultImportTimeItemTypeId"?: string, readonly "dueDays"?: number, readonly "itemType"?: string, readonly "itemTypeId"?: string, readonly "notes"?: string, readonly "subject"?: string, readonly "tax"?: number, readonly "tax2"?: number, readonly "tax2Percent"?: number, readonly "taxPercent"?: number, readonly "taxType"?: "COMPOUND" | "SIMPLE" | "NONE" }
155
+ export const InvoiceDefaultSettingsDto = Schema.Struct({ "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "defaultImportExpenseItemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "defaultImportTimeItemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "dueDays": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice number of due days.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "itemType": Schema.optionalKey(Schema.String.annotate({ "writeOnly": true })), "itemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice note." })), "subject": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice subject." })), "tax": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "tax2": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "tax2Percent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "taxPercent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "taxType": Schema.optionalKey(Schema.Literals(["COMPOUND", "SIMPLE", "NONE"]).annotate({ "description": "Represents a tax type." })) }).annotate({ "description": "Represents an invoice default settings object.", "identifier": "InvoiceDefaultSettingsDto" })
170
156
  export type InvoiceExportFields = { readonly "RTL"?: boolean, readonly "itemType"?: boolean, readonly "quantity"?: boolean, readonly "rtl"?: boolean, readonly "tax"?: boolean, readonly "tax2"?: boolean, readonly "unitPrice"?: boolean }
171
- export const InvoiceExportFields = Schema.Struct({ "RTL": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "itemType": Schema.optionalKey(Schema.Boolean), "quantity": Schema.optionalKey(Schema.Boolean), "rtl": Schema.optionalKey(Schema.Boolean), "tax": Schema.optionalKey(Schema.Boolean), "tax2": Schema.optionalKey(Schema.Boolean), "unitPrice": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents an invoice export fields object." })
172
- export type InvoiceExportFieldsRequest = { readonly "itemType"?: boolean, readonly "quantity"?: boolean, readonly "rtl"?: boolean, readonly "tax"?: boolean, readonly "tax2"?: boolean, readonly "unitPrice"?: boolean }
173
- export const InvoiceExportFieldsRequest = Schema.Struct({ "itemType": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export item type." })), "quantity": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export quantity." })), "rtl": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export RTL." })), "tax": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export tax." })), "tax2": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export tax2." })), "unitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export unit price." })) }).annotate({ "description": "Represents an invoice export fields object." })
174
- export type InvoicePaymentDtoV1 = { readonly "amount"?: number, readonly "author"?: string, readonly "date"?: string, readonly "id"?: string, readonly "note"?: string }
175
- export const InvoicePaymentDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice payment amount as long.", "format": "int64" }).check(Schema.isInt())), "author": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment author." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice payment identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment note." })) })
157
+ export const InvoiceExportFields = Schema.Struct({ "RTL": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "itemType": Schema.optionalKey(Schema.Boolean), "quantity": Schema.optionalKey(Schema.Boolean), "rtl": Schema.optionalKey(Schema.Boolean), "tax": Schema.optionalKey(Schema.Boolean), "tax2": Schema.optionalKey(Schema.Boolean), "unitPrice": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents an invoice export fields object.", "identifier": "InvoiceExportFields" })
176
158
  export type LabelsCustomization = { readonly "amount"?: string, readonly "billFrom"?: string, readonly "billTo"?: string, readonly "description"?: string, readonly "discount"?: string, readonly "dueDate"?: string, readonly "issueDate"?: string, readonly "itemType"?: string, readonly "notes"?: string, readonly "paid"?: string, readonly "quantity"?: string, readonly "subtotal"?: string, readonly "tax"?: string, readonly "tax2"?: string, readonly "total"?: string, readonly "totalAmount"?: string, readonly "unitPrice"?: string }
177
- export const LabelsCustomization = Schema.Struct({ "amount": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice amount." })), "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a string an invoice is billed from." })), "billTo": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a string an invoice is billed to." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a description of an invoice." })), "discount": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice discount amount." })), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a due date in yyyy-MM-dd format." })), "issueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an issue date in yyyy-MM-dd format." })), "itemType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an item type." })), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an invoice." })), "paid": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice paid amount." })), "quantity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents quantity." })), "subtotal": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice subtotal." })), "tax": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice tax amount." })), "tax2": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice tax amount." })), "total": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice total amount." })), "totalAmount": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice total amount." })), "unitPrice": Schema.optionalKey(Schema.String.annotate({ "description": "Represents unit price." })) }).annotate({ "description": "Represents a label customization object." })
159
+ export const LabelsCustomization = Schema.Struct({ "amount": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice amount." })), "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a string an invoice is billed from." })), "billTo": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a string an invoice is billed to." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a description of an invoice." })), "discount": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice discount amount." })), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a due date in yyyy-MM-dd format." })), "issueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an issue date in yyyy-MM-dd format." })), "itemType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an item type." })), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an invoice." })), "paid": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice paid amount." })), "quantity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents quantity." })), "subtotal": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice subtotal." })), "tax": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice tax amount." })), "tax2": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice tax amount." })), "total": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice total amount." })), "totalAmount": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice total amount." })), "unitPrice": Schema.optionalKey(Schema.String.annotate({ "description": "Represents unit price." })) }).annotate({ "description": "Represents a label customization object.", "identifier": "LabelsCustomization" })
160
+ export type InvoiceDefaultSettingsRequestV1 = { readonly "companyId"?: string, readonly "dueDays"?: number, readonly "itemTypeId"?: string, readonly "notes": string, readonly "subject": string, readonly "tax2Percent"?: number, readonly "taxPercent"?: number, readonly "taxType"?: "COMPOUND" | "SIMPLE" | "NONE" }
161
+ export const InvoiceDefaultSettingsRequestV1 = Schema.Struct({ "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "dueDays": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice number of due days.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "itemTypeId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type identifier across the system." })), "notes": Schema.String.annotate({ "description": "Represents an invoice note." }), "subject": Schema.String.annotate({ "description": "Represents an invoice subject." }), "tax2Percent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "taxPercent": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a tax amount in percentage.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "taxType": Schema.optionalKey(Schema.Literals(["COMPOUND", "SIMPLE", "NONE"]).annotate({ "description": "Represents a tax type." })) }).annotate({ "description": "Represents an invoice default settings object.", "identifier": "InvoiceDefaultSettingsRequestV1" })
162
+ export type InvoiceExportFieldsRequest = { readonly "itemType"?: boolean, readonly "quantity"?: boolean, readonly "rtl"?: boolean, readonly "tax"?: boolean, readonly "tax2"?: boolean, readonly "unitPrice"?: boolean }
163
+ export const InvoiceExportFieldsRequest = Schema.Struct({ "itemType": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export item type." })), "quantity": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export quantity." })), "rtl": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export RTL." })), "tax": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export tax." })), "tax2": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export tax2." })), "unitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to export unit price." })) }).annotate({ "description": "Represents an invoice export fields object.", "identifier": "InvoiceExportFieldsRequest" })
178
164
  export type LabelsCustomizationRequest = { readonly "amount": string, readonly "billFrom": string, readonly "billTo": string, readonly "description": string, readonly "discount": string, readonly "dueDate": string, readonly "issueDate": string, readonly "itemType": string, readonly "notes": string, readonly "paid": string, readonly "quantity": string, readonly "subtotal": string, readonly "tax": string, readonly "tax2": string, readonly "total": string, readonly "totalAmountDue": string, readonly "unitPrice": string }
179
- export const LabelsCustomizationRequest = Schema.Struct({ "amount": Schema.String.annotate({ "description": "Represents invoice amount label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "billFrom": Schema.String.annotate({ "description": "Represents invoice bill from label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "billTo": Schema.String.annotate({ "description": "Represents invoice bill to label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "description": Schema.String.annotate({ "description": "Represents invoice description label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "discount": Schema.String.annotate({ "description": "Represents invoice discount amount label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "dueDate": Schema.String.annotate({ "description": "Represents invoice due date label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "issueDate": Schema.String.annotate({ "description": "Represents invoice issue date label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "itemType": Schema.String.annotate({ "description": "Represents invoice item type label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "notes": Schema.String.annotate({ "description": "Represents invoice notes label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "paid": Schema.String.annotate({ "description": "Represents invoice paid amount label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "quantity": Schema.String.annotate({ "description": "Represents invoice quantity label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "subtotal": Schema.String.annotate({ "description": "Represents invoice subtotal label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "tax": Schema.String.annotate({ "description": "Represents invoice tax amount label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "tax2": Schema.String.annotate({ "description": "Represents invoice tax 2 amount label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "total": Schema.String.annotate({ "description": "Represents invoice total amount label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "totalAmountDue": Schema.String.annotate({ "description": "Represents invoice total amount due label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)), "unitPrice": Schema.String.annotate({ "description": "Represents invoice unit price label." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(20)) }).annotate({ "description": "Represents a label customization object." })
180
- export type LogBinDocumentDto = { readonly "deletedAt"?: string, readonly "document"?: { }, readonly "documentCode"?: string, readonly "id"?: string }
181
- export const LogBinDocumentDto = Schema.Struct({ "deletedAt": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "document": Schema.optionalKey(Schema.Struct({ })), "documentCode": Schema.optionalKey(Schema.String), "id": Schema.optionalKey(Schema.String) })
182
- export type MilestoneDto = { readonly "date"?: string, readonly "id"?: string, readonly "name"?: string, readonly "projectId"?: string, readonly "workspaceId"?: string }
183
- export const MilestoneDto = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents milestone identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents milestone name." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a list of milestone objects." })
184
- export type MonthlyRecurringType = never
185
- export const MonthlyRecurringType = Schema.Never
186
- export type NegativeBalanceDto = { readonly "amount"?: number, readonly "period"?: string, readonly "shouldReset"?: boolean, readonly "timeUnit"?: string }
187
- export const NegativeBalanceDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "format": "double" }).check(Schema.isFinite())), "period": Schema.optionalKey(Schema.String), "shouldReset": Schema.optionalKey(Schema.Boolean), "timeUnit": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents the data about negative balance including amount, time unit and period." })
188
- export type NegativeBalanceRequest = { readonly "amount": number, readonly "period"?: "MONTH" | "YEAR", readonly "shouldReset"?: boolean }
189
- export const NegativeBalanceRequest = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents negative balance amount.", "format": "double" }).check(Schema.isFinite()).check(Schema.isGreaterThanOrEqualTo(0)), "period": Schema.optionalKey(Schema.Literals(["MONTH", "YEAR"]).annotate({ "description": "Represents negative balance period." })), "shouldReset": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether negative balance should be reset at the end of the negative balance period." })) }).annotate({ "description": "Provide the negative balance data you would like to use for updating the policy." })
165
+ export const LabelsCustomizationRequest = Schema.Struct({ "amount": Schema.String.annotate({ "description": "Represents invoice amount label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "billFrom": Schema.String.annotate({ "description": "Represents invoice bill from label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "billTo": Schema.String.annotate({ "description": "Represents invoice bill to label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "description": Schema.String.annotate({ "description": "Represents invoice description label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "discount": Schema.String.annotate({ "description": "Represents invoice discount amount label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "dueDate": Schema.String.annotate({ "description": "Represents invoice due date label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "issueDate": Schema.String.annotate({ "description": "Represents invoice issue date label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "itemType": Schema.String.annotate({ "description": "Represents invoice item type label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "notes": Schema.String.annotate({ "description": "Represents invoice notes label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "paid": Schema.String.annotate({ "description": "Represents invoice paid amount label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "quantity": Schema.String.annotate({ "description": "Represents invoice quantity label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "subtotal": Schema.String.annotate({ "description": "Represents invoice subtotal label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "tax": Schema.String.annotate({ "description": "Represents invoice tax amount label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "tax2": Schema.String.annotate({ "description": "Represents invoice tax 2 amount label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "total": Schema.String.annotate({ "description": "Represents invoice total amount label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "totalAmountDue": Schema.String.annotate({ "description": "Represents invoice total amount due label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })), "unitPrice": Schema.String.annotate({ "description": "Represents invoice unit price label." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(20).annotate({ "expected": "a value with a length of at most 20" })) }).annotate({ "description": "Represents a label customization object.", "identifier": "LabelsCustomizationRequest" })
166
+ export type CalculationType = never
167
+ export const CalculationType = Schema.Never.annotate({ "identifier": "CalculationType" })
168
+ export type ApplyTaxes = never
169
+ export const ApplyTaxes = Schema.Never.annotate({ "identifier": "ApplyTaxes" })
170
+ export type TaxType = never
171
+ export const TaxType = Schema.Never.annotate({ "identifier": "TaxType" })
172
+ export type CreateInvoiceItemRequestV1 = { readonly "applyTaxes": "TAX1" | "TAX2" | "TAX1TAX2" | "NONE", readonly "description": string, readonly "itemType": string, readonly "quantity": number, readonly "unitPrice": number }
173
+ export const CreateInvoiceItemRequestV1 = Schema.Struct({ "applyTaxes": Schema.Literals(["TAX1", "TAX2", "TAX1TAX2", "NONE"]).annotate({ "description": "Represents taxes applied to the invoice item. Applies only when the specified taxes are active on the invoice." }), "description": Schema.String.annotate({ "description": "Represents an invoice item description." }), "itemType": Schema.String.annotate({ "description": "Represents an item type.`Service` will be default" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "quantity": Schema.Number.annotate({ "description": "Represents an item quantity.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })), "unitPrice": Schema.Number.annotate({ "description": "Represents an item unit price.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })) }).annotate({ "identifier": "CreateInvoiceItemRequestV1" })
174
+ export type InvoicePaymentDtoV1 = { readonly "amount"?: number, readonly "author"?: string, readonly "date"?: string, readonly "id"?: string, readonly "note"?: string }
175
+ export const InvoicePaymentDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice payment amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "author": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment author." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice payment identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment note." })) }).annotate({ "identifier": "InvoicePaymentDtoV1" })
176
+ export type CreateInvoicePaymentRequest = { readonly "amount"?: number, readonly "note"?: string, readonly "paymentDate"?: string }
177
+ export const CreateInvoicePaymentRequest = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice payment amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment note." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(1000).annotate({ "expected": "a value with a length of at most 1000" }))), "paymentDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice payment date in yyyy-MM-ddThh:mm:ssZ format." })) }).annotate({ "identifier": "CreateInvoicePaymentRequest" })
178
+ export type ChangeInvoiceStatusRequestV1 = { readonly "invoiceStatus"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE" }
179
+ export const ChangeInvoiceStatusRequestV1 = Schema.Struct({ "invoiceStatus": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the invoice status to be set." })) }).annotate({ "identifier": "ChangeInvoiceStatusRequestV1" })
180
+ export type UpsertUserCustomFieldRequest = { readonly "customFieldId": string, readonly "value"?: { } }
181
+ export const UpsertUserCustomFieldRequest = Schema.Struct({ "customFieldId": Schema.String.annotate({ "description": "Represents custom field identifier across the system." }), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of upsert user custom field request.", "identifier": "UpsertUserCustomFieldRequest" })
182
+ export type EstimateWithOptionsDto = { readonly "active"?: boolean, readonly "estimate"?: number, readonly "includeExpenses"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
183
+ export const EstimateWithOptionsDto = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean), "estimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an estimate as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "includeExpenses": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether estimate includes non-billable or not." })), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents a project budget estimate object.", "identifier": "EstimateWithOptionsDto" })
184
+ export type EstimateDtoV1 = { readonly "estimate"?: string, readonly "type"?: "AUTO" | "MANUAL" }
185
+ export const EstimateDtoV1 = Schema.Struct({ "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents a project estimate object.", "identifier": "EstimateDtoV1" })
186
+ export type TimeEstimateDto = { readonly "active"?: boolean, readonly "estimate"?: string, readonly "includeNonBillable"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
187
+ export const TimeEstimateDto = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project duration in milliseconds." })), "includeNonBillable": Schema.optionalKey(Schema.Boolean), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents a project time estimate object.", "identifier": "TimeEstimateDto" })
188
+ export type EstimateRequest = { readonly "estimate"?: string, readonly "type"?: "AUTO" | "MANUAL" }
189
+ export const EstimateRequest = Schema.Struct({ "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration in ISO-8601 format." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents an estimate request object.", "identifier": "EstimateRequest" })
190
+ export type HourlyRateRequestV1 = { readonly "amount": number, readonly "since"?: string }
191
+ export const HourlyRateRequestV1 = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an hourly rate amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date and time in yyyy-MM-ddThh:mm:ssZ format." })) }).annotate({ "identifier": "HourlyRateRequestV1" })
192
+ export type HourlyRateRequest = { readonly "amount": number, readonly "since"?: string }
193
+ export const HourlyRateRequest = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents a cost rate amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a datetime in yyyy-MM-ddThh:mm:ssZ format." })) }).annotate({ "description": "Represents an hourly rate request object.", "identifier": "HourlyRateRequest" })
194
+ export type CostRateRequest = { readonly "amount"?: number, readonly "since"?: string, readonly "sinceAsInstant"?: string }
195
+ export const CostRateRequest = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a datetime in yyyy-MM-ddThh:mm:ssZ format." })), "sinceAsInstant": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a cost rate request object.", "identifier": "CostRateRequest" })
196
+ export type EstimateResetDto = { readonly "dayOfMonth"?: number, readonly "dayOfWeek"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "hour"?: number, readonly "interval"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "month"?: "JANUARY" | "FEBRUARY" | "MARCH" | "APRIL" | "MAY" | "JUNE" | "JULY" | "AUGUST" | "SEPTEMBER" | "OCTOBER" | "NOVEMBER" | "DECEMBER" }
197
+ export const EstimateResetDto = Schema.Struct({ "dayOfMonth": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "dayOfWeek": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"])), "hour": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "interval": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"])), "month": Schema.optionalKey(Schema.Literals(["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"])) }).annotate({ "description": "Represents project estimate reset object", "identifier": "EstimateResetDto" })
198
+ export type CreateProjectFromTemplateV1 = { readonly "clientId"?: string, readonly "color"?: string, readonly "isPublic"?: boolean, readonly "name": string, readonly "templateProjectId": string }
199
+ export const CreateProjectFromTemplateV1 = Schema.Struct({ "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client identifier across the system." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the project is public or not." })), "name": Schema.String.annotate({ "description": "Represents a project name." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(250).annotate({ "expected": "a value with a length of at most 250" })), "templateProjectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "CreateProjectFromTemplateV1" })
200
+ export type CustomFieldProjectDefaultValuesRequest = { readonly "defaultValue"?: { }, readonly "status"?: "INACTIVE" | "VISIBLE" | "INVISIBLE" }
201
+ export const CustomFieldProjectDefaultValuesRequest = Schema.Struct({ "defaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"]).annotate({ "description": "Represents a custom field status." })) }).annotate({ "identifier": "CustomFieldProjectDefaultValuesRequest" })
202
+ export type EstimateWithOptionsRequest = { readonly "active"?: boolean, readonly "estimate"?: number, readonly "includeExpenses"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
203
+ export const EstimateWithOptionsRequest = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to set estimate as active or not." })), "estimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an estimate as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "includeExpenses": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to include billable expenses." })), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents estimate with options request object.", "identifier": "EstimateWithOptionsRequest" })
204
+ export type EstimateResetRequest = { readonly "active"?: boolean, readonly "dayOfMonth"?: number, readonly "dayOfWeek"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "hour"?: number, readonly "interval"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "isActive"?: boolean, readonly "month"?: "JANUARY" | "FEBRUARY" | "MARCH" | "APRIL" | "MAY" | "JUNE" | "JULY" | "AUGUST" | "SEPTEMBER" | "OCTOBER" | "NOVEMBER" | "DECEMBER" }
205
+ export const EstimateResetRequest = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean), "dayOfMonth": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a day of the month.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(31).annotate({ "expected": "a value less than or equal to 31" }))), "dayOfWeek": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "hour": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an hour of the day in 24 hour time format.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })).check(Schema.isLessThanOrEqualTo(23).annotate({ "expected": "a value less than or equal to 23" }))), "interval": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "isActive": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "month": Schema.optionalKey(Schema.Literals(["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"]).annotate({ "description": "Represents a month enum." })) }).annotate({ "description": "Represents estimate reset request object.", "identifier": "EstimateResetRequest" })
206
+ export type TimeEstimateRequest = { readonly "active"?: boolean, readonly "estimate"?: string, readonly "includeNonBillable"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
207
+ export const TimeEstimateRequest = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to include only active or inactive estimates." })), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration in ISO-8601 format." })), "includeNonBillable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to include non-billable expenses." })), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents project time estimate request object.", "identifier": "TimeEstimateRequest" })
208
+ export type TaskStatus = never
209
+ export const TaskStatus = Schema.Never.annotate({ "identifier": "TaskStatus" })
210
+ export type TaskRequestV1 = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "budgetEstimate"?: number, readonly "estimate"?: string, readonly "id"?: string, readonly "name": string, readonly "status"?: "ACTIVE" | "DONE" | "ALL", readonly "userGroupIds"?: ReadonlyArray<string> }
211
+ export const TaskRequestV1 = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a task budget estimate as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate in ISO-8601 format." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.String.annotate({ "description": "Represents task name." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(1000).annotate({ "expected": "a value with a length of at most 1000" })), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "DONE", "ALL"]).annotate({ "description": "Represents task status." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "TaskRequestV1" })
212
+ export type UpdateTaskRequest = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "billable"?: boolean, readonly "budgetEstimate"?: number, readonly "estimate"?: string, readonly "name": string, readonly "status"?: "ACTIVE" | "DONE" | "ALL", readonly "userGroupIds"?: ReadonlyArray<string> }
213
+ export const UpdateTaskRequest = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a task is billable or not." })), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a task budget estimate as integer.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "name": Schema.String.annotate({ "description": "Represents task name." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(1000).annotate({ "expected": "a value with a length of at most 1000" })), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "DONE", "ALL"]).annotate({ "description": "Represents task status." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "UpdateTaskRequest" })
190
214
  export type PatchProjectTemplateRequest = { readonly "isTemplate"?: boolean }
191
- export const PatchProjectTemplateRequest = Schema.Struct({ "isTemplate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })) })
192
- export type Period = { readonly "end"?: string, readonly "start"?: string }
193
- export const Period = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "start": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) })
194
- export type PeriodV1Request = { readonly "days"?: number, readonly "end"?: string, readonly "start"?: string }
195
- export const PeriodV1Request = Schema.Struct({ "days": Schema.optionalKey(Schema.Number.annotate({ "description": "Provide number of days.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(999))), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Provide end date in YYYY-MM-DD format." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Provide start date in YYYY-MM-DD format." })) }).annotate({ "description": "Represents period of time off request including start and end date." })
196
- export type PolicyApprovalDto = { readonly "requiresApproval"?: boolean, readonly "specificMembers"?: boolean, readonly "teamManagers"?: boolean, readonly "userIds"?: ReadonlyArray<string> }
197
- export const PolicyApprovalDto = Schema.Struct({ "requiresApproval": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether it requires approval" })), "specificMembers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether it requires specific members" })), "teamManagers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether it requires team manager's approval" })), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents set of user's identifier across the system" })).annotate({ "description": "Represents set of user's identifier across the system" }).check(Schema.isUnique())) }).annotate({ "description": "Represents approval settings." })
198
- export type ProjectInfoDto = { readonly "clientId"?: string, readonly "clientName"?: string, readonly "color"?: string, readonly "id"?: string, readonly "name"?: string }
199
- export const ProjectInfoDto = Schema.Struct({ "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project name." })) }).annotate({ "description": "Represents a project info object." })
200
- export type ProjectTaskTupleDto = { readonly "projectId"?: string, readonly "taskId"?: string }
201
- export const ProjectTaskTupleDto = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })) }).annotate({ "description": "Represents a list of template's projects and tasks." })
202
- export type ProjectTaskTupleRequest = { readonly "projectId": string, readonly "taskId"?: string, readonly "type"?: string }
203
- export const ProjectTaskTupleRequest = Schema.Struct({ "projectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }).check(Schema.isMinLength(1)), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry type." })) }).annotate({ "description": "Represents a list of template's projects and tasks." })
215
+ export const PatchProjectTemplateRequest = Schema.Struct({ "isTemplate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })) }).annotate({ "identifier": "PatchProjectTemplateRequest" })
216
+ export type AssignmentPerDayDto = { readonly "date"?: string, readonly "hasAssignment"?: boolean }
217
+ export const AssignmentPerDayDto = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "hasAssignment": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents a list of assignment per day objects.", "identifier": "AssignmentPerDayDto" })
218
+ export type MilestoneDto = { readonly "date"?: string, readonly "id"?: string, readonly "name"?: string, readonly "projectId"?: string, readonly "workspaceId"?: string }
219
+ export const MilestoneDto = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents milestone identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents milestone name." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a list of milestone objects.", "identifier": "MilestoneDto" })
204
220
  export type ProjectTotalsRequestV1 = { readonly "end": string, readonly "page"?: number, readonly "pageSize"?: number, readonly "search"?: string, readonly "start": string, readonly "statusFilter"?: "PUBLISHED" | "UNPUBLISHED" | "ALL" }
205
- export const ProjectTotalsRequestV1 = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isLessThanOrEqualTo(200))), "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a term for searching projects and clients by name." })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "statusFilter": Schema.optionalKey(Schema.Literals(["PUBLISHED", "UNPUBLISHED", "ALL"]).annotate({ "description": "Filters assignments by status." })) })
206
- export type RateDto = { readonly "amount"?: number, readonly "currency"?: string }
207
- export const RateDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt())), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })) }).annotate({ "description": "Represents cost rate object." })
208
- export type RateDtoV1 = { readonly "amount"?: number, readonly "currency"?: string }
209
- export const RateDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt())), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })) }).annotate({ "description": "Represents cost rate object." })
210
- export type RateWithCurrencyRequestV1 = { readonly "amount": number, readonly "currency": string, readonly "since"?: string }
211
- export const RateWithCurrencyRequestV1 = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an amount as integer.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0)), "currency": Schema.String.annotate({ "description": "Represents a currency." }).check(Schema.isMinLength(1)).check(Schema.isMaxLength(100)), "since": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date and time in yyyy-MM-ddThh:mm:ssZ format." })) })
212
- export type RecurringEndType = never
213
- export const RecurringEndType = Schema.Never
221
+ export const ProjectTotalsRequestV1 = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isLessThanOrEqualTo(200).annotate({ "expected": "a value less than or equal to 200" }))), "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a term for searching projects and clients by name." })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "statusFilter": Schema.optionalKey(Schema.Literals(["PUBLISHED", "UNPUBLISHED", "ALL"]).annotate({ "description": "Filters assignments by status." })) }).annotate({ "identifier": "ProjectTotalsRequestV1" })
222
+ export type ContainsUsersFilterRequestV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "sourceType"?: "USER_GROUP", readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "statuses"?: ReadonlyArray<"PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL"> }
223
+ export const ContainsUsersFilterRequestV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "sourceType": Schema.optionalKey(Schema.Literal("USER_GROUP").annotate({ "description": "Valid authorization source type." })), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Filters entities by status." })), "statuses": Schema.optionalKey(Schema.Array(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Valid array of membership statuses." })).annotate({ "description": "Valid array of membership statuses." })) }).annotate({ "description": "Represents a user filter request object.", "identifier": "ContainsUsersFilterRequestV1" })
224
+ export type ContainsUserGroupFilterRequestV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL" }
225
+ export const ContainsUserGroupFilterRequestV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Filter type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of filter identifiers." })).annotate({ "description": "Represents a list of filter identifiers." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Filters entities by status." })) }).annotate({ "description": "Represents a user group filter request object.", "identifier": "ContainsUserGroupFilterRequestV1" })
214
226
  export type RecurringFrequency = never
215
- export const RecurringFrequency = Schema.Never
216
- export type RoleRequestV1 = { readonly "entityId": string, readonly "role": "WORKSPACE_ADMIN" | "TEAM_MANAGER" | "PROJECT_MANAGER", readonly "sourceType"?: "USER_GROUP" }
217
- export const RoleRequestV1 = Schema.Struct({ "entityId": Schema.String.annotate({ "description": "Represents an entity identifier across the system." }).check(Schema.isMinLength(1)), "role": Schema.Literals(["WORKSPACE_ADMIN", "TEAM_MANAGER", "PROJECT_MANAGER"]).annotate({ "description": "Represents a valid role." }), "sourceType": Schema.optionalKey(Schema.Literal("USER_GROUP").annotate({ "description": "Optional field used to indicate that the target of the operation is a\nuser group, in which case the value USER_GROUP should be used, alongside a valid user group\nID for the entityId field. If omitted, a user ID should be used for the entityId field.\n" })) })
218
- export type RoundDto = { readonly "minutes"?: string, readonly "round"?: string }
219
- export const RoundDto = Schema.Struct({ "minutes": Schema.optionalKey(Schema.String), "round": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents a time rounding object." })
227
+ export const RecurringFrequency = Schema.Never.annotate({ "identifier": "RecurringFrequency" })
228
+ export type MonthlyRecurringType = never
229
+ export const MonthlyRecurringType = Schema.Never.annotate({ "identifier": "MonthlyRecurringType" })
230
+ export type RecurringEndType = never
231
+ export const RecurringEndType = Schema.Never.annotate({ "identifier": "RecurringEndType" })
220
232
  export type SchedulingExcludeDay = { readonly "date"?: string, readonly "type"?: "WEEKEND" | "HOLIDAY" | "TIME_OFF" }
221
- export const SchedulingExcludeDay = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a datetimr in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "type": Schema.optionalKey(Schema.Literals(["WEEKEND", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents the scheduling exclude day enum." })) }).annotate({ "description": "Represents a list of excluded days objects" })
222
- export type StatusTimeOffRequestV1Request = { readonly "note"?: string, readonly "status"?: "APPROVED" | "REJECTED" }
223
- export const StatusTimeOffRequestV1Request = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the note you would like to use for changing the time off request." })), "status": Schema.optionalKey(Schema.Literals(["APPROVED", "REJECTED"]).annotate({ "description": "Provide the status you would like to use for changing the time off request." })) })
224
- export type StopTimeEntryRequest = { readonly "end": string }
225
- export const StopTimeEntryRequest = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }) })
226
- export type SummaryReportSettingsDtoV1 = { readonly "group": string, readonly "subgroup": string }
227
- export const SummaryReportSettingsDtoV1 = Schema.Struct({ "group": Schema.String.check(Schema.isMinLength(1)), "subgroup": Schema.String.check(Schema.isMinLength(1)) }).annotate({ "description": "Represents a summary report settings object." })
228
- export type TagDto = { readonly "archived": boolean, readonly "id": string, readonly "name": string, readonly "workspaceId": string }
229
- export const TagDto = Schema.Struct({ "archived": Schema.Boolean.annotate({ "description": "Indicates whether tag is archived or not." }), "id": Schema.String.annotate({ "description": "Represents tag identifier across the system." }), "name": Schema.String.annotate({ "description": "Represents tag name." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) }).annotate({ "description": "Represents a list of tag objects." })
233
+ export const SchedulingExcludeDay = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a datetimr in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "type": Schema.optionalKey(Schema.Literals(["WEEKEND", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents the scheduling exclude day enum." })) }).annotate({ "description": "Represents a list of excluded days objects", "identifier": "SchedulingExcludeDay" })
234
+ export type AssignmentUpdateRequestV1 = { readonly "billable"?: boolean, readonly "end": string, readonly "hoursPerDay"?: number, readonly "includeNonWorkingDays"?: boolean, readonly "note"?: string, readonly "seriesUpdateOption"?: "THIS_ONE" | "THIS_AND_FOLLOWING" | "ALL", readonly "start": string, readonly "startTime"?: string, readonly "taskId"?: string }
235
+ export const AssignmentUpdateRequestV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "hoursPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents assignment total hours per day.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "includeNonWorkingDays": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to include non-working days or not." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an assignment note." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))), "seriesUpdateOption": Schema.optionalKey(Schema.Literals(["THIS_ONE", "THIS_AND_FOLLOWING", "ALL"]).annotate({ "description": "Valid series option" })), "start": Schema.String.annotate({ "description": "Represents start date in yyyy-MM-ddThh:mm:ssZ format." }), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start time in the hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })) }).annotate({ "identifier": "AssignmentUpdateRequestV1" })
236
+ export type TotalsPerDayDto = { readonly "date"?: string, readonly "totalHours"?: number }
237
+ export const TotalsPerDayDto = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "totalHours": Schema.optionalKey(Schema.Number.annotate({ "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))) }).annotate({ "description": "Represents total hours per day object.", "identifier": "TotalsPerDayDto" })
238
+ export type CopyAssignmentRequestV1 = { readonly "seriesUpdateOption"?: "THIS_ONE" | "THIS_AND_FOLLOWING" | "ALL", readonly "userId": string }
239
+ export const CopyAssignmentRequestV1 = Schema.Struct({ "seriesUpdateOption": Schema.optionalKey(Schema.Literals(["THIS_ONE", "THIS_AND_FOLLOWING", "ALL"]).annotate({ "description": "Represents a series update option." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }) }).annotate({ "identifier": "CopyAssignmentRequestV1" })
230
240
  export type TagDtoV1 = { readonly "archived": boolean, readonly "id": string, readonly "name": string, readonly "workspaceId": string }
231
- export const TagDtoV1 = Schema.Struct({ "archived": Schema.Boolean.annotate({ "description": "Indicates whether a tag is archived or not." }), "id": Schema.String.annotate({ "description": "Represents tag identifier across the system." }), "name": Schema.String.annotate({ "description": "Represents tag name." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) })
241
+ export const TagDtoV1 = Schema.Struct({ "archived": Schema.Boolean.annotate({ "description": "Indicates whether a tag is archived or not." }), "id": Schema.String.annotate({ "description": "Represents tag identifier across the system." }), "name": Schema.String.annotate({ "description": "Represents tag name." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) }).annotate({ "identifier": "TagDtoV1" })
232
242
  export type TagRequest = { readonly "name"?: string }
233
- export const TagRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a tag name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))) })
234
- export type TaskInfoDto = { readonly "id"?: string, readonly "name"?: string }
235
- export const TaskInfoDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })) }).annotate({ "description": "Represents a project info object." })
236
- export type TaskRequestV1 = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "budgetEstimate"?: number, readonly "estimate"?: string, readonly "id"?: string, readonly "name": string, readonly "status"?: "ACTIVE" | "DONE" | "ALL", readonly "userGroupIds"?: ReadonlyArray<string> }
237
- export const TaskRequestV1 = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique())), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a task budget estimate as long.", "format": "int64" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate in ISO-8601 format." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.String.annotate({ "description": "Represents task name." }).check(Schema.isMinLength(1)).check(Schema.isMaxLength(1000)), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "DONE", "ALL"]).annotate({ "description": "Represents task status." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique())) })
238
- export type TaskStatus = never
239
- export const TaskStatus = Schema.Never
240
- export type TaxType = never
241
- export const TaxType = Schema.Never
243
+ export const TagRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a tag name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))) }).annotate({ "identifier": "TagRequest" })
244
+ export type UpdateTagRequest = { readonly "archived"?: boolean, readonly "name"?: string }
245
+ export const UpdateTagRequest = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a tag will be archived or not." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a tag name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))) }).annotate({ "identifier": "UpdateTagRequest" })
242
246
  export type TemplateDto = { readonly "id"?: string, readonly "name"?: string, readonly "userId"?: string, readonly "workspaceId"?: string }
243
- export const TemplateDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template name." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) })
247
+ export const TemplateDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template name." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) }).annotate({ "identifier": "TemplateDto" })
248
+ export type ProjectTaskTupleRequest = { readonly "projectId": string, readonly "taskId"?: string, readonly "type"?: string }
249
+ export const ProjectTaskTupleRequest = Schema.Struct({ "projectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry type." })) }).annotate({ "description": "Represents a list of template's projects and tasks.", "identifier": "ProjectTaskTupleRequest" })
250
+ export type ProjectTaskTupleDto = { readonly "projectId"?: string, readonly "taskId"?: string }
251
+ export const ProjectTaskTupleDto = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })) }).annotate({ "description": "Represents a list of template's projects and tasks.", "identifier": "ProjectTaskTupleDto" })
244
252
  export type TemplatePatchRequest = { readonly "name": string }
245
- export const TemplatePatchRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents a template name." }).check(Schema.isMinLength(1)) })
246
- export type TimeEntryId = { readonly "dateOfCreationFromObjectId"?: string }
247
- export const TimeEntryId = Schema.Struct({ "dateOfCreationFromObjectId": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a list of invoiced time entry ids" })
248
- export type TimeEstimateDto = { readonly "active"?: boolean, readonly "estimate"?: string, readonly "includeNonBillable"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
249
- export const TimeEstimateDto = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project duration in milliseconds." })), "includeNonBillable": Schema.optionalKey(Schema.Boolean), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents a project time estimate object." })
250
- export type TimeEstimateRequest = { readonly "active"?: boolean, readonly "estimate"?: string, readonly "includeNonBillable"?: boolean, readonly "resetOption"?: "WEEKLY" | "MONTHLY" | "YEARLY", readonly "type"?: "AUTO" | "MANUAL" }
251
- export const TimeEstimateRequest = Schema.Struct({ "active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to include only active or inactive estimates." })), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration in ISO-8601 format." })), "includeNonBillable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to include non-billable expenses." })), "resetOption": Schema.optionalKey(Schema.Literals(["WEEKLY", "MONTHLY", "YEARLY"]).annotate({ "description": "Represents a reset option enum." })), "type": Schema.optionalKey(Schema.Literals(["AUTO", "MANUAL"]).annotate({ "description": "Represents an estimate type enum." })) }).annotate({ "description": "Represents project time estimate request object." })
252
- export type TimeIntervalDto = { readonly "duration"?: string | null, readonly "end"?: string, readonly "offsetEnd"?: number, readonly "offsetStart"?: number, readonly "start": string, readonly "timeZone"?: string, readonly "zonedEnd"?: string, readonly "zonedStart"?: string }
253
- export const TimeIntervalDto = Schema.Struct({ "duration": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])), "end": Schema.optionalKey(Schema.Union([Schema.String.annotate({ "format": "date-time" })])), "offsetEnd": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "offsetStart": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "start": Schema.String.annotate({ "format": "date-time" }), "timeZone": Schema.optionalKey(Schema.String), "zonedEnd": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "zonedStart": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a time interval object." })
254
- export type TimeIntervalDtoV1 = { readonly "duration"?: string | null, readonly "end"?: string | null, readonly "start"?: string }
255
- export const TimeIntervalDtoV1 = Schema.Struct({ "duration": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents a time duration." })), "end": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents an end date in yyyy-MM-ddThh:mm:ssZ format." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })) }).annotate({ "description": "Represents a time interval object." })
256
- export type TimeOffRequestStatus = { readonly "changedAt"?: string, readonly "changedByUserId"?: string, readonly "changedByUserName"?: string, readonly "changedForUserName"?: string, readonly "note"?: string, readonly "statusType"?: "PENDING" | "APPROVED" | "REJECTED" | "ALL" }
257
- export const TimeOffRequestStatus = Schema.Struct({ "changedAt": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "changedByUserId": Schema.optionalKey(Schema.String), "changedByUserName": Schema.optionalKey(Schema.String), "changedForUserName": Schema.optionalKey(Schema.String), "note": Schema.optionalKey(Schema.String), "statusType": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "REJECTED", "ALL"])) }).annotate({ "description": "Represents the status the time off request." })
258
- export type TimeRangeRequestDtoV1 = { readonly "issue-date-end"?: string, readonly "issue-date-start"?: string }
259
- export const TimeRangeRequestDtoV1 = Schema.Struct({ "issue-date-end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format. This is the lower bound of the time range." })), "issue-date-start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format. This is the lower bound of the time range." })) }).annotate({ "description": "Represents a time range object. If provided, you'll get a filtered list of invoices that has issue date within the time range specified." })
260
- export type TotalsPerDayDto = { readonly "date"?: string, readonly "totalHours"?: number }
261
- export const TotalsPerDayDto = Schema.Struct({ "date": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "totalHours": Schema.optionalKey(Schema.Number.annotate({ "format": "double" }).check(Schema.isFinite())) }).annotate({ "description": "Represents total hours per day object." })
262
- export type UpdateApprovalRequest = { readonly "note"?: string, readonly "state": "PENDING" | "APPROVED" | "WITHDRAWN_SUBMISSION" | "WITHDRAWN_APPROVAL" | "REJECTED" }
263
- export const UpdateApprovalRequest = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Additional notes for the approval request." })), "state": Schema.Literals(["PENDING", "APPROVED", "WITHDRAWN_SUBMISSION", "WITHDRAWN_APPROVAL", "REJECTED"]).annotate({ "description": "Specifies the approval state to set." }) })
264
- export type UpdateClientRequestV1 = { readonly "address"?: string, readonly "archived"?: boolean, readonly "ccEmails"?: ReadonlyArray<string>, readonly "currencyId"?: string, readonly "email"?: string, readonly "name"?: string, readonly "note"?: string }
265
- export const UpdateClientRequestV1 = Schema.Struct({ "address": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client's address." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates if client will be archived or not." })), "ccEmails": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "format": "email" })).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3))), "currencyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency identifier across the system." })), "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client email.", "format": "email" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a client name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents additional notes for the client." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))) })
253
+ export const TemplatePatchRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents a template name." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "TemplatePatchRequest" })
254
+ export type CreateCustomAttributeRequest = { readonly "name": string, readonly "namespace": string, readonly "value": string }
255
+ export const CreateCustomAttributeRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents custom attribute name." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "namespace": Schema.String.annotate({ "description": "Represents custom attribute namespace." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "value": Schema.String.annotate({ "description": "Represents custom attribute value." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "description": "Represents a list of create custom field request objects.", "identifier": "CreateCustomAttributeRequest" })
266
256
  export type UpdateCustomFieldRequest = { readonly "customFieldId": string, readonly "sourceType"?: "WORKSPACE" | "PROJECT" | "TIMEENTRY", readonly "value"?: { } }
267
- export const UpdateCustomFieldRequest = Schema.Struct({ "customFieldId": Schema.String.annotate({ "description": "Represents custom field identifier across the system." }), "sourceType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "TIMEENTRY"]).annotate({ "description": "Represents a custom field value source type." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's value." })) }).annotate({ "description": "Represents a list of value objects for user’s custom fields." })
268
- export type UpdateCustomFieldRequestV1 = { readonly "allowedValues"?: ReadonlyArray<string>, readonly "description"?: string, readonly "name": string, readonly "onlyAdminCanEdit"?: boolean, readonly "placeholder"?: string, readonly "required"?: boolean, readonly "status"?: "INACTIVE" | "VISIBLE" | "INVISIBLE", readonly "type": "TXT" | "NUMBER" | "DROPDOWN_SINGLE" | "DROPDOWN_MULTIPLE" | "CHECKBOX" | "LINK", readonly "workspaceDefaultValue"?: { } }
269
- export const UpdateCustomFieldRequestV1 = Schema.Struct({ "allowedValues": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of custom field's allowed values." })).annotate({ "description": "Represents a list of custom field's allowed values." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field description." })), "name": Schema.String.annotate({ "description": "Represents a custom field name." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(250)), "onlyAdminCanEdit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is modifiable only by admin users." })), "placeholder": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field placeholder value." })), "required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is mandatory or not." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"]).annotate({ "description": "Represents a custom field status" })), "type": Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents a custom field type." }), "workspaceDefaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value in the workspace." })) })
270
- export type UpdateExpenseV1Request = { readonly "amount": number, readonly "billable"?: boolean, readonly "categoryId": string, readonly "changeFields": ReadonlyArray<"USER" | "DATE" | "PROJECT" | "TASK" | "CATEGORY" | "NOTES" | "AMOUNT" | "BILLABLE" | "FILE">, readonly "date": string, readonly "file": string, readonly "notes"?: string, readonly "projectId"?: string, readonly "taskId"?: string, readonly "userId": string }
271
- export const UpdateExpenseV1Request = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents an expense amount as the double data type.", "format": "double" }).check(Schema.isFinite()).check(Schema.isGreaterThanOrEqualTo(0)).check(Schema.isLessThanOrEqualTo(92233720368547760)), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "categoryId": Schema.String.annotate({ "description": "Represents a category identifier across the system." }), "changeFields": Schema.Array(Schema.Literals(["USER", "DATE", "PROJECT", "TASK", "CATEGORY", "NOTES", "AMOUNT", "BILLABLE", "FILE"]).annotate({ "description": "Represents a list of expense change fields." })).annotate({ "description": "Represents a list of expense change fields." }), "date": Schema.String.annotate({ "description": "Provides a valid yyyy-MM-ddThh:mm:ssZ format date.", "format": "date-time" }), "file": Schema.String.annotate({ "format": "binary" }), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }).check(Schema.isMinLength(1)) })
272
- export type UpdateTagRequest = { readonly "archived"?: boolean, readonly "name"?: string }
273
- export const UpdateTagRequest = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a tag will be archived or not." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a tag name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))) })
274
- export type UpdateTaskRequest = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "billable"?: boolean, readonly "budgetEstimate"?: number, readonly "estimate"?: string, readonly "name": string, readonly "status"?: "ACTIVE" | "DONE" | "ALL", readonly "userGroupIds"?: ReadonlyArray<string> }
275
- export const UpdateTaskRequest = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique())), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a task is billable or not." })), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a task budget estimate as integer.", "format": "int64" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "name": Schema.String.annotate({ "description": "Represents task name." }).check(Schema.isMinLength(1)).check(Schema.isMaxLength(1000)), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "DONE", "ALL"]).annotate({ "description": "Represents task status." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique())) })
257
+ export const UpdateCustomFieldRequest = Schema.Struct({ "customFieldId": Schema.String.annotate({ "description": "Represents custom field identifier across the system." }), "sourceType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "TIMEENTRY"]).annotate({ "description": "Represents a custom field value source type." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's value." })) }).annotate({ "description": "Represents a list of value objects for user’s custom fields.", "identifier": "UpdateCustomFieldRequest" })
258
+ export type CustomFieldValueDtoV1 = { readonly "customFieldId"?: string, readonly "name"?: string, readonly "timeEntryId"?: string, readonly "type"?: string, readonly "value"?: { } }
259
+ export const CustomFieldValueDtoV1 = Schema.Struct({ "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field name." })), "timeEntryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field value source type." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of custom field value objects.", "identifier": "CustomFieldValueDtoV1" })
260
+ export type TimeIntervalDtoV1 = { readonly "duration"?: string | null, readonly "end"?: string | null, readonly "start"?: string, readonly "timeZone"?: string, readonly "zonedEnd"?: string, readonly "zonedStart"?: string }
261
+ export const TimeIntervalDtoV1 = Schema.Struct({ "duration": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents a time duration." })), "end": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents an end date in yyyy-MM-ddThh:mm:ssZ format." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the user's timezone." })), "zonedEnd": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the end time in the user's timezone.", "format": "date-time" })), "zonedStart": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the start time in the user's timezone.", "format": "date-time" })) }).annotate({ "description": "Represents a time interval object.", "identifier": "TimeIntervalDtoV1" })
262
+ export type GetTimeEntriesByIdsRequest = { readonly "hydrated"?: boolean, readonly "timeEntryIds": ReadonlyArray<string> }
263
+ export const GetTimeEntriesByIdsRequest = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to include additional information of time entries or not." })), "timeEntryIds": Schema.Array(Schema.String.annotate({ "description": "Represents time entry identifiers across the system." })).annotate({ "description": "Represents time entry identifiers across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "GetTimeEntriesByIdsRequest" })
264
+ export type TimeEntryId = { readonly "dateOfCreationFromObjectId"?: string }
265
+ export const TimeEntryId = Schema.Struct({ "dateOfCreationFromObjectId": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a list of invoiced time entry ids", "identifier": "TimeEntryId" })
266
+ export type DateRangeV1Request = { readonly "end"?: string, readonly "start"?: string }
267
+ export const DateRangeV1Request = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "description": "Provide end date in YYYY-MM-DD format." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Provide start date in YYYY-MM-DD format." })) }).annotate({ "description": "Represents the date range when the new balance will be usable. If null, this will default to the current day until the same day next year.", "identifier": "DateRangeV1Request" })
268
+ export type DeleteBalanceAssignmentV1Request = { readonly "note": string }
269
+ export const DeleteBalanceAssignmentV1Request = Schema.Struct({ "note": Schema.String.annotate({ "description": "Represents a note explaining balance deletion" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "DeleteBalanceAssignmentV1Request" })
270
+ export type PolicyApprovalDto = { readonly "requiresApproval"?: boolean, readonly "specificMembers"?: boolean, readonly "teamManagers"?: boolean, readonly "userIds"?: ReadonlyArray<string> }
271
+ export const PolicyApprovalDto = Schema.Struct({ "requiresApproval": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether it requires approval" })), "specificMembers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether it requires specific members" })), "teamManagers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether it requires team manager's approval" })), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents set of user's identifier across the system" })).annotate({ "description": "Represents set of user's identifier across the system" }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Represents approval settings.", "identifier": "PolicyApprovalDto" })
272
+ export type AutomaticAccrualDto = { readonly "amount"?: number, readonly "period"?: "MONTH" | "YEAR", readonly "timeUnit"?: "DAYS" | "HOURS" }
273
+ export const AutomaticAccrualDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents automatic accrual's amount", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "period": Schema.optionalKey(Schema.Literals(["MONTH", "YEAR"]).annotate({ "description": "Represents automatic accrual's period" })), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents automatic accrual's time unit" })) }).annotate({ "description": "Represents automatic approval settings.", "identifier": "AutomaticAccrualDto" })
274
+ export type NegativeBalanceDto = { readonly "amount"?: number, readonly "period"?: string, readonly "shouldReset"?: boolean, readonly "timeUnit"?: string }
275
+ export const NegativeBalanceDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "period": Schema.optionalKey(Schema.String), "shouldReset": Schema.optionalKey(Schema.Boolean), "timeUnit": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents the data about negative balance including amount, time unit and period.", "identifier": "NegativeBalanceDto" })
276
+ export type AutomaticAccrualRequest = { readonly "amount": number, readonly "period"?: "MONTH" | "YEAR" }
277
+ export const AutomaticAccrualRequest = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents amount of automatic accrual.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })), "period": Schema.optionalKey(Schema.Literals(["MONTH", "YEAR"]).annotate({ "description": "Represents automatic accrual period." })) }).annotate({ "description": "Provide automatic accrual settings.", "identifier": "AutomaticAccrualRequest" })
278
+ export type NegativeBalanceRequest = { readonly "amount": number, readonly "period"?: "MONTH" | "YEAR", readonly "shouldReset"?: boolean }
279
+ export const NegativeBalanceRequest = Schema.Struct({ "amount": Schema.Number.annotate({ "description": "Represents negative balance amount.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" })), "period": Schema.optionalKey(Schema.Literals(["MONTH", "YEAR"]).annotate({ "description": "Represents negative balance period." })), "shouldReset": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether negative balance should be reset at the end of the negative balance period." })) }).annotate({ "description": "Provide the negative balance data you would like to use for updating the policy.", "identifier": "NegativeBalanceRequest" })
280
+ export type ChangePolicyStatusRequestV1 = { readonly "status": "ACTIVE" | "ARCHIVED" | "ALL" }
281
+ export const ChangePolicyStatusRequestV1 = Schema.Struct({ "status": Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Provide the status you would like to use for changing the policy." }) }).annotate({ "identifier": "ChangePolicyStatusRequestV1" })
282
+ export type PeriodV1Request = { readonly "days"?: number, readonly "end"?: string, readonly "start"?: string }
283
+ export const PeriodV1Request = Schema.Struct({ "days": Schema.optionalKey(Schema.Number.annotate({ "description": "Provide number of days.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(999).annotate({ "expected": "a value less than or equal to 999" }))), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Provide end date in YYYY-MM-DD format." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Provide start date in YYYY-MM-DD format." })) }).annotate({ "description": "Represents period of time off request including start and end date.", "identifier": "PeriodV1Request" })
284
+ export type TimeOffRequestStatus = { readonly "changedAt"?: string, readonly "changedAtTimeZone"?: string, readonly "changedByUserId"?: string, readonly "changedByUserName"?: string, readonly "changedForUserName"?: string, readonly "note"?: string, readonly "statusType"?: "PENDING" | "APPROVED" | "REJECTED" | "ALL" }
285
+ export const TimeOffRequestStatus = Schema.Struct({ "changedAt": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "changedAtTimeZone": Schema.optionalKey(Schema.String), "changedByUserId": Schema.optionalKey(Schema.String), "changedByUserName": Schema.optionalKey(Schema.String), "changedForUserName": Schema.optionalKey(Schema.String), "note": Schema.optionalKey(Schema.String), "statusType": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "REJECTED", "ALL"])) }).annotate({ "description": "Represents the status the time off request.", "identifier": "TimeOffRequestStatus" })
286
+ export type Period = { readonly "end"?: string, readonly "start"?: string }
287
+ export const Period = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "start": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "identifier": "Period" })
288
+ export type StatusTimeOffRequestV1Request = { readonly "note"?: string, readonly "status"?: "APPROVED" | "REJECTED" }
289
+ export const StatusTimeOffRequestV1Request = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the note you would like to use for changing the time off request." })), "status": Schema.optionalKey(Schema.Literals(["APPROVED", "REJECTED"]).annotate({ "description": "Provide the status you would like to use for changing the time off request." })) }).annotate({ "identifier": "StatusTimeOffRequestV1Request" })
290
+ export type GetTimeOffRequestsV1Request = { readonly "end"?: string, readonly "page"?: number, readonly "pageSize"?: number, readonly "start"?: string, readonly "statuses"?: ReadonlyArray<"PENDING" | "APPROVED" | "REJECTED" | "ALL">, readonly "userGroups"?: ReadonlyArray<string>, readonly "users"?: ReadonlyArray<string> }
291
+ export const GetTimeOffRequestsV1Request = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the end of the filtering period. Used with `start` to filter for time-off requests periods that occur (fully or partially) within this range. Both parameters must be provided for filtering to take effect. Provide end in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isLessThanOrEqualTo(1000).annotate({ "expected": "a value less than or equal to 1000" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(200).annotate({ "expected": "a value less than or equal to 200" }))), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the beginning of the filtering period. Used with `end` to filter for time-off requests periods that occur (fully or partially) within this range. Both parameters must be provided for filtering to take effect. Provide start in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "statuses": Schema.optionalKey(Schema.Array(Schema.Literals(["PENDING", "APPROVED", "REJECTED", "ALL"]).annotate({ "description": "Filters time off requests by status." })).annotate({ "description": "Filters time off requests by status." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide the user group ids of time off requests." })).annotate({ "description": "Provide the user group ids of time off requests." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "users": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide the user ids of time off requests. If empty, will return time off requests of all users (with a maximum of 5000 users)." })).annotate({ "description": "Provide the user ids of time off requests. If empty, will return time off requests of all users (with a maximum of 5000 users)." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "GetTimeOffRequestsV1Request" })
292
+ export type UserRedactedDtoV1 = { readonly "id"?: string, readonly "name"?: string }
293
+ export const UserRedactedDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents a list of assigned team managers for this user group.", "identifier": "UserRedactedDtoV1" })
294
+ export type UserGroupRequest = { readonly "name"?: string }
295
+ export const UserGroupRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))) }).annotate({ "identifier": "UserGroupRequest" })
276
296
  export type UpdateUserGroupRequest = { readonly "name"?: string }
277
- export const UpdateUserGroupRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))) })
297
+ export const UpdateUserGroupRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group name." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))) }).annotate({ "identifier": "UpdateUserGroupRequest" })
298
+ export type UserGroupUserRequest = { readonly "userId": string }
299
+ export const UserGroupUserRequest = Schema.Struct({ "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }) }).annotate({ "identifier": "UserGroupUserRequest" })
300
+ export type StopTimeEntryRequest = { readonly "end": string }
301
+ export const StopTimeEntryRequest = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }) }).annotate({ "identifier": "StopTimeEntryRequest" })
302
+ export type AddUserToWorkspaceRequest = { readonly "email": string }
303
+ export const AddUserToWorkspaceRequest = Schema.Struct({ "email": Schema.String.annotate({ "description": "Represents an email address of the user." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "AddUserToWorkspaceRequest" })
304
+ export type GetUsersRequestV1 = { readonly "accountStatuses"?: ReadonlyArray<string>, readonly "email"?: string, readonly "includeRoles"?: boolean, readonly "memberships"?: "ALL" | "NONE" | "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "name"?: string, readonly "page"?: number, readonly "pageSize"?: number, readonly "projectId"?: string, readonly "roles"?: ReadonlyArray<"WORKSPACE_ADMIN" | "OWNER" | "TEAM_MANAGER" | "PROJECT_MANAGER">, readonly "sortColumn"?: "ID" | "EMAIL" | "NAME" | "NAME_LOWERCASE" | "ACCESS" | "HOURLYRATE" | "COSTRATE", readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "userGroups"?: ReadonlyArray<string> }
305
+ export const GetUsersRequestV1 = Schema.Struct({ "accountStatuses": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users with the corresponding account status filter. If not, this will only filter ACTIVE, PENDING_EMAIL_VERIFICATION, and NOT_REGISTERED Users." })).annotate({ "description": "If provided, you'll get a filtered list of users with the corresponding account status filter. If not, this will only filter ACTIVE, PENDING_EMAIL_VERIFICATION, and NOT_REGISTERED Users." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "email": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their email address." })), "includeRoles": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If you pass along includeRoles=true, you'll get each user's detailed manager role (including projects and members for whom they're managers)" })), "memberships": Schema.optionalKey(Schema.Literals(["ALL", "NONE", "WORKSPACE", "PROJECT", "USERGROUP"]).annotate({ "description": "If provided, you'll get all users along with workspaces, groups, or projects they have access to." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their name." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a list of users that have access to the project." })), "roles": Schema.optionalKey(Schema.Array(Schema.Literals(["WORKSPACE_ADMIN", "OWNER", "TEAM_MANAGER", "PROJECT_MANAGER"]).annotate({ "description": "If provided, you'll get a filtered list of users that have any of the specified roles. Owners are counted as admins when filtering." })).annotate({ "description": "If provided, you'll get a filtered list of users that have any of the specified roles. Owners are counted as admins when filtering." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "EMAIL", "NAME", "NAME_LOWERCASE", "ACCESS", "HOURLYRATE", "COSTRATE"]).annotate({ "description": "Sorting criteria" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "Sorting mode" })), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "If provided, you'll get a filtered list of users with the corresponding status." })), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a list of users that belong to the specified user group IDs." })).annotate({ "description": "If provided, you'll get a list of users that belong to the specified user group IDs." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "GetUsersRequestV1" })
278
306
  export type UpdateUserStatusRequest = { readonly "status": "ACTIVE" | "INACTIVE" }
279
- export const UpdateUserStatusRequest = Schema.Struct({ "status": Schema.Literals(["ACTIVE", "INACTIVE"]).annotate({ "description": "Represents membership status." }) })
280
- export type UpdateWebhookRequestV1 = { readonly "name"?: string, readonly "triggerSource": ReadonlyArray<string>, readonly "triggerSourceType": "PROJECT_ID" | "USER_ID" | "TAG_ID" | "TASK_ID" | "WORKSPACE_ID" | "ASSIGNMENT_ID" | "EXPENSE_ID", readonly "url": string, readonly "webhookEvent": "NEW_PROJECT" | "NEW_TASK" | "NEW_CLIENT" | "NEW_TIMER_STARTED" | "TIMER_STOPPED" | "TIME_ENTRY_UPDATED" | "TIME_ENTRY_DELETED" | "TIME_ENTRY_SPLIT" | "NEW_TIME_ENTRY" | "TIME_ENTRY_RESTORED" | "NEW_TAG" | "USER_DELETED_FROM_WORKSPACE" | "USER_JOINED_WORKSPACE" | "USER_DEACTIVATED_ON_WORKSPACE" | "USER_ACTIVATED_ON_WORKSPACE" | "USER_EMAIL_CHANGED" | "USER_UPDATED" | "NEW_INVOICE" | "INVOICE_UPDATED" | "NEW_APPROVAL_REQUEST" | "APPROVAL_REQUEST_STATUS_UPDATED" | "TIME_OFF_REQUESTED" | "TIME_OFF_REQUEST_UPDATED" | "TIME_OFF_REQUEST_APPROVED" | "TIME_OFF_REQUEST_REJECTED" | "TIME_OFF_REQUEST_STARTED" | "TIME_OFF_REQUEST_WITHDRAWN" | "BALANCE_UPDATED" | "TAG_UPDATED" | "TAG_DELETED" | "TASK_UPDATED" | "CLIENT_UPDATED" | "TASK_DELETED" | "CLIENT_DELETED" | "EXPENSE_RESTORED" | "ASSIGNMENT_CREATED" | "ASSIGNMENT_DELETED" | "ASSIGNMENT_PUBLISHED" | "ASSIGNMENT_UPDATED" | "EXPENSE_CREATED" | "EXPENSE_DELETED" | "EXPENSE_UPDATED" | "PROJECT_UPDATED" | "PROJECT_DELETED" | "USER_GROUP_CREATED" | "USER_GROUP_UPDATED" | "USER_GROUP_DELETED" | "USERS_INVITED_TO_WORKSPACE" | "LIMITED_USERS_ADDED_TO_WORKSPACE" | "COST_RATE_UPDATED" | "BILLABLE_RATE_UPDATED" }
281
- export const UpdateWebhookRequestV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a webhook name." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(30))), "triggerSource": Schema.Array(Schema.String.annotate({ "description": "Represents a list of trigger sources." })).annotate({ "description": "Represents a list of trigger sources." }), "triggerSourceType": Schema.Literals(["PROJECT_ID", "USER_ID", "TAG_ID", "TASK_ID", "WORKSPACE_ID", "ASSIGNMENT_ID", "EXPENSE_ID"]).annotate({ "description": "Represents a webhook event trigger source type." }), "url": Schema.String.annotate({ "description": "Represents a workspace identifier across the system." }).check(Schema.isMinLength(1)), "webhookEvent": Schema.Literals(["NEW_PROJECT", "NEW_TASK", "NEW_CLIENT", "NEW_TIMER_STARTED", "TIMER_STOPPED", "TIME_ENTRY_UPDATED", "TIME_ENTRY_DELETED", "TIME_ENTRY_SPLIT", "NEW_TIME_ENTRY", "TIME_ENTRY_RESTORED", "NEW_TAG", "USER_DELETED_FROM_WORKSPACE", "USER_JOINED_WORKSPACE", "USER_DEACTIVATED_ON_WORKSPACE", "USER_ACTIVATED_ON_WORKSPACE", "USER_EMAIL_CHANGED", "USER_UPDATED", "NEW_INVOICE", "INVOICE_UPDATED", "NEW_APPROVAL_REQUEST", "APPROVAL_REQUEST_STATUS_UPDATED", "TIME_OFF_REQUESTED", "TIME_OFF_REQUEST_UPDATED", "TIME_OFF_REQUEST_APPROVED", "TIME_OFF_REQUEST_REJECTED", "TIME_OFF_REQUEST_STARTED", "TIME_OFF_REQUEST_WITHDRAWN", "BALANCE_UPDATED", "TAG_UPDATED", "TAG_DELETED", "TASK_UPDATED", "CLIENT_UPDATED", "TASK_DELETED", "CLIENT_DELETED", "EXPENSE_RESTORED", "ASSIGNMENT_CREATED", "ASSIGNMENT_DELETED", "ASSIGNMENT_PUBLISHED", "ASSIGNMENT_UPDATED", "EXPENSE_CREATED", "EXPENSE_DELETED", "EXPENSE_UPDATED", "PROJECT_UPDATED", "PROJECT_DELETED", "USER_GROUP_CREATED", "USER_GROUP_UPDATED", "USER_GROUP_DELETED", "USERS_INVITED_TO_WORKSPACE", "LIMITED_USERS_ADDED_TO_WORKSPACE", "COST_RATE_UPDATED", "BILLABLE_RATE_UPDATED"]).annotate({ "description": "Represents a webhook event type." }) })
282
- export type UploadFileResponseV1 = { readonly "name"?: string, readonly "url"?: string }
283
- export const UploadFileResponseV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "File name of the uploaded image" })), "url": Schema.optionalKey(Schema.String.annotate({ "description": "The URL of the uploaded image in the server" })) })
284
- export type UpsertUserCustomFieldRequest = { readonly "customFieldId": string, readonly "value"?: { } }
285
- export const UpsertUserCustomFieldRequest = Schema.Struct({ "customFieldId": Schema.String.annotate({ "description": "Represents custom field identifier across the system." }), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of upsert user custom field request." })
307
+ export const UpdateUserStatusRequest = Schema.Struct({ "status": Schema.Literals(["ACTIVE", "INACTIVE"]).annotate({ "description": "Represents membership status." }) }).annotate({ "identifier": "UpdateUserStatusRequest" })
286
308
  export type UpsertUserCustomFieldRequestV1 = { readonly "value"?: { } }
287
- export const UpsertUserCustomFieldRequestV1 = Schema.Struct({ "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) })
288
- export type UserGroupIdsSchema = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE" | "INACTIVE" }
289
- export const UserGroupIdsSchema = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN"])), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents ids upon which filtering is performed." })).annotate({ "description": "Represents ids upon which filtering is performed." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE", "INACTIVE"]).annotate({ "description": "Represents user status." })) }).annotate({ "description": "Provide list with user group ids and corresponding status." })
290
- export type UserGroupRequest = { readonly "name"?: string }
291
- export const UserGroupRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))) })
292
- export type UserGroupUserRequest = { readonly "userId": string }
293
- export const UserGroupUserRequest = Schema.Struct({ "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }) })
294
- export type UserIdsSchema = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE" | "INACTIVE" }
295
- export const UserIdsSchema = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN"])), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents ids upon which filtering is performed." })).annotate({ "description": "Represents ids upon which filtering is performed." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE", "INACTIVE"]).annotate({ "description": "Represents user status." })) }).annotate({ "description": "Provide list with user ids and corresponding status." })
296
- export type UserRedactedDtoV1 = { readonly "id"?: string, readonly "name"?: string }
297
- export const UserRedactedDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents a list of assigned team managers for this user group." })
298
- export type VisibleZeroFieldsInvoice = never
299
- export const VisibleZeroFieldsInvoice = Schema.Never
300
- export type WebhookEventStatusWithLatestLogDtoV1 = { readonly "id"?: string, readonly "requestBody"?: string, readonly "respondedAt"?: string, readonly "responseBody"?: string, readonly "retryCount"?: number, readonly "status"?: string, readonly "statusCode"?: number, readonly "webhookId"?: string, readonly "webhookLogId"?: string }
301
- export const WebhookEventStatusWithLatestLogDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })), "requestBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents request body." })), "respondedAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time of response." })), "responseBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents response body." })), "retryCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents how many times we tried to deliver the webhook event.", "format": "int32" }).check(Schema.isInt())), "status": Schema.optionalKey(Schema.String.annotate({ "description": "Represents delivery status of the webhook event." })), "statusCode": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents response status code.", "format": "int32" }).check(Schema.isInt())), "webhookId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })), "webhookLogId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })) })
302
- export type WebhookEventTriggerSourceType = never
303
- export const WebhookEventTriggerSourceType = Schema.Never
304
- export type WebhookEventType = never
305
- export const WebhookEventType = Schema.Never
309
+ export const UpsertUserCustomFieldRequestV1 = Schema.Struct({ "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "identifier": "UpsertUserCustomFieldRequestV1" })
310
+ export type RoleRequestV1 = { readonly "entityId": string, readonly "role": "WORKSPACE_ADMIN" | "TEAM_MANAGER" | "PROJECT_MANAGER", readonly "sourceType"?: "USER_GROUP" }
311
+ export const RoleRequestV1 = Schema.Struct({ "entityId": Schema.String.annotate({ "description": "Represents an entity identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "role": Schema.Literals(["WORKSPACE_ADMIN", "TEAM_MANAGER", "PROJECT_MANAGER"]).annotate({ "description": "Represents a valid role." }), "sourceType": Schema.optionalKey(Schema.Literal("USER_GROUP").annotate({ "description": "Optional field used to indicate that the target of the operation is a\nuser group, in which case the value USER_GROUP should be used, alongside a valid user group\nID for the entityId field. If omitted, a user ID should be used for the entityId field.\n" })) }).annotate({ "identifier": "RoleRequestV1" })
312
+ export type AuthorizationSourceDtoV1 = { readonly "id"?: string, readonly "type"?: "USER_GROUP" }
313
+ export const AuthorizationSourceDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents authorization source identifier across the system." })), "type": Schema.optionalKey(Schema.Literal("USER_GROUP").annotate({ "description": "Represents a valid authorization source type." })) }).annotate({ "description": "Represents an authorization data transfer object.", "identifier": "AuthorizationSourceDtoV1" })
314
+ export type CreateWebhookRequestV1 = { readonly "name"?: string, readonly "triggerSource": ReadonlyArray<string>, readonly "triggerSourceType": "PROJECT_ID" | "USER_ID" | "TAG_ID" | "TASK_ID" | "WORKSPACE_ID" | "ASSIGNMENT_ID" | "EXPENSE_ID", readonly "url": string, readonly "webhookEvent": "NEW_PROJECT" | "NEW_TASK" | "NEW_CLIENT" | "NEW_TIMER_STARTED" | "TIMER_STOPPED" | "TIME_ENTRY_UPDATED" | "TIME_ENTRY_DELETED" | "TIME_ENTRY_SPLIT" | "NEW_TIME_ENTRY" | "TIME_ENTRY_RESTORED" | "NEW_TAG" | "USER_DELETED_FROM_WORKSPACE" | "USER_JOINED_WORKSPACE" | "USER_DEACTIVATED_ON_WORKSPACE" | "USER_ACTIVATED_ON_WORKSPACE" | "USER_EMAIL_CHANGED" | "USER_UPDATED" | "NEW_INVOICE" | "INVOICE_UPDATED" | "NEW_APPROVAL_REQUEST" | "APPROVAL_REQUEST_STATUS_UPDATED" | "TIME_OFF_REQUESTED" | "TIME_OFF_REQUEST_UPDATED" | "TIME_OFF_REQUEST_APPROVED" | "TIME_OFF_REQUEST_REJECTED" | "TIME_OFF_REQUEST_STARTED" | "TIME_OFF_REQUEST_WITHDRAWN" | "BALANCE_UPDATED" | "TAG_UPDATED" | "TAG_DELETED" | "TASK_UPDATED" | "CLIENT_UPDATED" | "TASK_DELETED" | "CLIENT_DELETED" | "EXPENSE_RESTORED" | "ASSIGNMENT_CREATED" | "ASSIGNMENT_DELETED" | "ASSIGNMENT_PUBLISHED" | "ASSIGNMENT_UPDATED" | "EXPENSE_CREATED" | "EXPENSE_DELETED" | "EXPENSE_UPDATED" | "PROJECT_UPDATED" | "PROJECT_DELETED" | "USER_GROUP_CREATED" | "USER_GROUP_UPDATED" | "USER_GROUP_DELETED" | "USERS_INVITED_TO_WORKSPACE" | "LIMITED_USERS_ADDED_TO_WORKSPACE" | "COST_RATE_UPDATED" | "BILLABLE_RATE_UPDATED" }
315
+ export const CreateWebhookRequestV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a webhook name." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(30).annotate({ "expected": "a value with a length of at most 30" }))), "triggerSource": Schema.Array(Schema.String.annotate({ "description": "Represents a list of trigger sources." })).annotate({ "description": "Represents a list of trigger sources." }), "triggerSourceType": Schema.Literals(["PROJECT_ID", "USER_ID", "TAG_ID", "TASK_ID", "WORKSPACE_ID", "ASSIGNMENT_ID", "EXPENSE_ID"]).annotate({ "description": "Represents a webhook event trigger source type." }), "url": Schema.String.annotate({ "description": "Represents a webhook target url." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "webhookEvent": Schema.Literals(["NEW_PROJECT", "NEW_TASK", "NEW_CLIENT", "NEW_TIMER_STARTED", "TIMER_STOPPED", "TIME_ENTRY_UPDATED", "TIME_ENTRY_DELETED", "TIME_ENTRY_SPLIT", "NEW_TIME_ENTRY", "TIME_ENTRY_RESTORED", "NEW_TAG", "USER_DELETED_FROM_WORKSPACE", "USER_JOINED_WORKSPACE", "USER_DEACTIVATED_ON_WORKSPACE", "USER_ACTIVATED_ON_WORKSPACE", "USER_EMAIL_CHANGED", "USER_UPDATED", "NEW_INVOICE", "INVOICE_UPDATED", "NEW_APPROVAL_REQUEST", "APPROVAL_REQUEST_STATUS_UPDATED", "TIME_OFF_REQUESTED", "TIME_OFF_REQUEST_UPDATED", "TIME_OFF_REQUEST_APPROVED", "TIME_OFF_REQUEST_REJECTED", "TIME_OFF_REQUEST_STARTED", "TIME_OFF_REQUEST_WITHDRAWN", "BALANCE_UPDATED", "TAG_UPDATED", "TAG_DELETED", "TASK_UPDATED", "CLIENT_UPDATED", "TASK_DELETED", "CLIENT_DELETED", "EXPENSE_RESTORED", "ASSIGNMENT_CREATED", "ASSIGNMENT_DELETED", "ASSIGNMENT_PUBLISHED", "ASSIGNMENT_UPDATED", "EXPENSE_CREATED", "EXPENSE_DELETED", "EXPENSE_UPDATED", "PROJECT_UPDATED", "PROJECT_DELETED", "USER_GROUP_CREATED", "USER_GROUP_UPDATED", "USER_GROUP_DELETED", "USERS_INVITED_TO_WORKSPACE", "LIMITED_USERS_ADDED_TO_WORKSPACE", "COST_RATE_UPDATED", "BILLABLE_RATE_UPDATED"]).annotate({ "description": "Represents a webhook event type." }) }).annotate({ "identifier": "CreateWebhookRequestV1" })
316
+ export type UpdateWebhookRequestV1 = { readonly "name"?: string, readonly "triggerSource": ReadonlyArray<string>, readonly "triggerSourceType": "PROJECT_ID" | "USER_ID" | "TAG_ID" | "TASK_ID" | "WORKSPACE_ID" | "ASSIGNMENT_ID" | "EXPENSE_ID", readonly "url": string, readonly "webhookEvent": "NEW_PROJECT" | "NEW_TASK" | "NEW_CLIENT" | "NEW_TIMER_STARTED" | "TIMER_STOPPED" | "TIME_ENTRY_UPDATED" | "TIME_ENTRY_DELETED" | "TIME_ENTRY_SPLIT" | "NEW_TIME_ENTRY" | "TIME_ENTRY_RESTORED" | "NEW_TAG" | "USER_DELETED_FROM_WORKSPACE" | "USER_JOINED_WORKSPACE" | "USER_DEACTIVATED_ON_WORKSPACE" | "USER_ACTIVATED_ON_WORKSPACE" | "USER_EMAIL_CHANGED" | "USER_UPDATED" | "NEW_INVOICE" | "INVOICE_UPDATED" | "NEW_APPROVAL_REQUEST" | "APPROVAL_REQUEST_STATUS_UPDATED" | "TIME_OFF_REQUESTED" | "TIME_OFF_REQUEST_UPDATED" | "TIME_OFF_REQUEST_APPROVED" | "TIME_OFF_REQUEST_REJECTED" | "TIME_OFF_REQUEST_STARTED" | "TIME_OFF_REQUEST_WITHDRAWN" | "BALANCE_UPDATED" | "TAG_UPDATED" | "TAG_DELETED" | "TASK_UPDATED" | "CLIENT_UPDATED" | "TASK_DELETED" | "CLIENT_DELETED" | "EXPENSE_RESTORED" | "ASSIGNMENT_CREATED" | "ASSIGNMENT_DELETED" | "ASSIGNMENT_PUBLISHED" | "ASSIGNMENT_UPDATED" | "EXPENSE_CREATED" | "EXPENSE_DELETED" | "EXPENSE_UPDATED" | "PROJECT_UPDATED" | "PROJECT_DELETED" | "USER_GROUP_CREATED" | "USER_GROUP_UPDATED" | "USER_GROUP_DELETED" | "USERS_INVITED_TO_WORKSPACE" | "LIMITED_USERS_ADDED_TO_WORKSPACE" | "COST_RATE_UPDATED" | "BILLABLE_RATE_UPDATED" }
317
+ export const UpdateWebhookRequestV1 = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a webhook name." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(30).annotate({ "expected": "a value with a length of at most 30" }))), "triggerSource": Schema.Array(Schema.String.annotate({ "description": "Represents a list of trigger sources." })).annotate({ "description": "Represents a list of trigger sources." }), "triggerSourceType": Schema.Literals(["PROJECT_ID", "USER_ID", "TAG_ID", "TASK_ID", "WORKSPACE_ID", "ASSIGNMENT_ID", "EXPENSE_ID"]).annotate({ "description": "Represents a webhook event trigger source type." }), "url": Schema.String.annotate({ "description": "Represents a workspace identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "webhookEvent": Schema.Literals(["NEW_PROJECT", "NEW_TASK", "NEW_CLIENT", "NEW_TIMER_STARTED", "TIMER_STOPPED", "TIME_ENTRY_UPDATED", "TIME_ENTRY_DELETED", "TIME_ENTRY_SPLIT", "NEW_TIME_ENTRY", "TIME_ENTRY_RESTORED", "NEW_TAG", "USER_DELETED_FROM_WORKSPACE", "USER_JOINED_WORKSPACE", "USER_DEACTIVATED_ON_WORKSPACE", "USER_ACTIVATED_ON_WORKSPACE", "USER_EMAIL_CHANGED", "USER_UPDATED", "NEW_INVOICE", "INVOICE_UPDATED", "NEW_APPROVAL_REQUEST", "APPROVAL_REQUEST_STATUS_UPDATED", "TIME_OFF_REQUESTED", "TIME_OFF_REQUEST_UPDATED", "TIME_OFF_REQUEST_APPROVED", "TIME_OFF_REQUEST_REJECTED", "TIME_OFF_REQUEST_STARTED", "TIME_OFF_REQUEST_WITHDRAWN", "BALANCE_UPDATED", "TAG_UPDATED", "TAG_DELETED", "TASK_UPDATED", "CLIENT_UPDATED", "TASK_DELETED", "CLIENT_DELETED", "EXPENSE_RESTORED", "ASSIGNMENT_CREATED", "ASSIGNMENT_DELETED", "ASSIGNMENT_PUBLISHED", "ASSIGNMENT_UPDATED", "EXPENSE_CREATED", "EXPENSE_DELETED", "EXPENSE_UPDATED", "PROJECT_UPDATED", "PROJECT_DELETED", "USER_GROUP_CREATED", "USER_GROUP_UPDATED", "USER_GROUP_DELETED", "USERS_INVITED_TO_WORKSPACE", "LIMITED_USERS_ADDED_TO_WORKSPACE", "COST_RATE_UPDATED", "BILLABLE_RATE_UPDATED"]).annotate({ "description": "Represents a webhook event type." }) }).annotate({ "identifier": "UpdateWebhookRequestV1" })
318
+ export type WebhookLogSearchRequestV1 = { readonly "from"?: string, readonly "sortByNewest"?: boolean | null, readonly "status"?: "ALL" | "SUCCEEDED" | "FAILED", readonly "to"?: string }
319
+ export const WebhookLogSearchRequestV1 = Schema.Struct({ "from": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time in yyyy-MM-ddThh:mm:ssZ format. If provided, results will include logs which occurred after this value.", "format": "date-time" })), "sortByNewest": Schema.optionalKey(Schema.Union([Schema.Boolean, Schema.Null]).annotate({ "description": "If set to true, logs will be sorted with most recent first." })), "status": Schema.optionalKey(Schema.Literals(["ALL", "SUCCEEDED", "FAILED"]).annotate({ "description": "Filters logs by status." })), "to": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time in yyyy-MM-ddThh:mm:ssZ format. If provided, results will include logs which occurred before this value.", "format": "date-time" })) }).annotate({ "identifier": "WebhookLogSearchRequestV1" })
306
320
  export type WebhookLogDtoV1 = { readonly "id"?: string, readonly "requestBody"?: string, readonly "respondedAt"?: string, readonly "responseBody"?: string, readonly "statusCode"?: number, readonly "webhookEventStatusId"?: string, readonly "webhookId"?: string }
307
- export const WebhookLogDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })), "requestBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents request body." })), "respondedAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time of response." })), "responseBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents response body." })), "statusCode": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents response status code.", "format": "int32" }).check(Schema.isInt())), "webhookEventStatusId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook event status identifier across the system." })), "webhookId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook identifier across the system." })) })
308
- export type WebhookLogSearchRequestV1 = { readonly "from"?: string, readonly "sortByNewest"?: boolean, readonly "status"?: "ALL" | "SUCCEEDED" | "FAILED", readonly "to"?: string }
309
- export const WebhookLogSearchRequestV1 = Schema.Struct({ "from": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time in yyyy-MM-ddThh:mm:ssZ format. If provided, results will include logs which occurred after this value.", "format": "date-time" })), "sortByNewest": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, logs will be sorted with most recent first." })), "status": Schema.optionalKey(Schema.Literals(["ALL", "SUCCEEDED", "FAILED"]).annotate({ "description": "Filters logs by status." })), "to": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time in yyyy-MM-ddThh:mm:ssZ format. If provided, results will include logs which occurred before this value.", "format": "date-time" })) })
310
- export type WorkspaceSubdomainDtoV1 = { readonly "enabled"?: boolean, readonly "name"?: string }
311
- export const WorkspaceSubdomainDtoV1 = Schema.Struct({ "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether subdomain is enabled on workspace" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents subdomain name" })) }).annotate({ "description": "Represents the workspace subdomain" })
312
- export type AmountDto = { readonly "type"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "value"?: number }
313
- export const AmountDto = Schema.Struct({ "type": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "Represents amount type" })), "value": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents amount value" }).check(Schema.isFinite())) }).annotate({ "description": "List of amounts" })
314
- export type AttendanceDto = { readonly "break"?: number, readonly "capacity"?: number, readonly "date"?: string, readonly "endTime"?: string, readonly "hasRunningEntry"?: boolean, readonly "imageUrl"?: string, readonly "overtime"?: number, readonly "remainingCapacity"?: number, readonly "startTime"?: string, readonly "timeOff"?: number, readonly "totalDuration"?: number, readonly "userId"?: string, readonly "userName"?: string }
315
- export const AttendanceDto = Schema.Struct({ "break": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "capacity": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "date": Schema.optionalKey(Schema.String), "endTime": Schema.optionalKey(Schema.String), "hasRunningEntry": Schema.optionalKey(Schema.Boolean), "imageUrl": Schema.optionalKey(Schema.String), "overtime": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "remainingCapacity": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "startTime": Schema.optionalKey(Schema.String), "timeOff": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "totalDuration": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt())), "userId": Schema.optionalKey(Schema.String), "userName": Schema.optionalKey(Schema.String) }).annotate({ "description": "List of entities" })
316
- export type AuditFilterV1 = { readonly "duration"?: number, readonly "durationShorter"?: boolean, readonly "withoutProject"?: boolean, readonly "withoutTask"?: boolean }
317
- export const AuditFilterV1 = Schema.Struct({ "duration": Schema.optionalKey(Schema.Number.annotate({ "description": "Represent audit duration.", "format": "int32" }).check(Schema.isInt())), "durationShorter": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represent audit duration shorter." })), "withoutProject": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to filter without a project." })), "withoutTask": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to filter without a task." })) })
321
+ export const WebhookLogDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })), "requestBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents request body." })), "respondedAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time of response." })), "responseBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents response body." })), "statusCode": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents response status code.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "webhookEventStatusId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook event status identifier across the system." })), "webhookId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook identifier across the system." })) }).annotate({ "identifier": "WebhookLogDtoV1" })
322
+ export type WebhookEventStatusWithLatestLogDtoV1 = { readonly "id"?: string, readonly "requestBody"?: string, readonly "respondedAt"?: string, readonly "responseBody"?: string, readonly "retryCount"?: number, readonly "status"?: string, readonly "statusCode"?: number, readonly "webhookId"?: string, readonly "webhookLogId"?: string }
323
+ export const WebhookEventStatusWithLatestLogDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })), "requestBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents request body." })), "respondedAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents date and time of response." })), "responseBody": Schema.optionalKey(Schema.String.annotate({ "description": "Represents response body." })), "retryCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents how many times we tried to deliver the webhook event.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "status": Schema.optionalKey(Schema.String.annotate({ "description": "Represents delivery status of the webhook event." })), "statusCode": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents response status code.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "webhookId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })), "webhookLogId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents log identifier across the system." })) }).annotate({ "identifier": "WebhookEventStatusWithLatestLogDtoV1" })
318
324
  export type CompareBalanceFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
319
- export const CompareBalanceFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents balance of work (difference between overtime and undertime) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150." })) })
325
+ export const CompareBalanceFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents balance of work (difference between overtime and undertime) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150." })) }).annotate({ "identifier": "CompareBalanceFilter" })
320
326
  export type CompareBreakFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
321
- export const CompareBreakFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of breaks in the day in hours, multiplied by 100. For example, if desired value is 0.5h, input should be 50" })) })
327
+ export const CompareBreakFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of breaks in the day in hours, multiplied by 100. For example, if desired value is 0.5h, input should be 50" })) }).annotate({ "identifier": "CompareBreakFilter" })
322
328
  export type CompareCapacityFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
323
- export const CompareCapacityFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents daily work capacity of user in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750." })) })
329
+ export const CompareCapacityFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents daily work capacity of user in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750." })) }).annotate({ "identifier": "CompareCapacityFilter" })
324
330
  export type CompareEndFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
325
- export const CompareEndFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents end time in 24-hour notation." })) })
331
+ export const CompareEndFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents end time in 24-hour notation." })) }).annotate({ "identifier": "CompareEndFilter" })
326
332
  export type CompareOvertimeFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
327
- export const CompareOvertimeFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of overtime work (difference between work and capacity - if positive) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150." })) })
333
+ export const CompareOvertimeFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of overtime work (difference between work and capacity - if positive) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150." })) }).annotate({ "identifier": "CompareOvertimeFilter" })
328
334
  export type CompareStartFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
329
- export const CompareStartFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents start time in 24-hour notation." })) })
335
+ export const CompareStartFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents start time in 24-hour notation." })) }).annotate({ "identifier": "CompareStartFilter" })
330
336
  export type CompareUndertimeFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
331
- export const CompareUndertimeFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of undertime work (difference between work and capacity - if negative) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150." })) })
337
+ export const CompareUndertimeFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of undertime work (difference between work and capacity - if negative) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150." })) }).annotate({ "identifier": "CompareUndertimeFilter" })
332
338
  export type CompareWorkFilter = { readonly "filtrationType"?: "EXACTLY" | "LARGER_THAN" | "SMALLER_THAN", readonly "value"?: string }
333
- export const CompareWorkFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of completed work for day in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750." })) })
339
+ export const CompareWorkFilter = Schema.Struct({ "filtrationType": Schema.optionalKey(Schema.Literals(["EXACTLY", "LARGER_THAN", "SMALLER_THAN"])), "value": Schema.optionalKey(Schema.String.annotate({ "description": "Represents duration of completed work for day in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750." })) }).annotate({ "identifier": "CompareWorkFilter" })
334
340
  export type ContainsArchivedFilterV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
335
- export const ContainsArchivedFilterV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filter entities in 'contains' by their status." })) })
336
- export type ContainsTagFilterV1 = { readonly "containedInTimeentry"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
337
- export const ContainsTagFilterV1 = Schema.Struct({ "containedInTimeentry": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "If provided, you'll get result filtered by value of contained in time entry." })), "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filter entities in 'contains' by their status." })) }).annotate({ "description": "Represents an object for filtering entries by tags." })
338
- export type ContainsTaskFilterV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
339
- export const ContainsTaskFilterV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filter entities in 'contains' by their status." })) }).annotate({ "description": "Represents filter criteria for expenses associated with tasks." })
340
- export type ContainsUsersFilterV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE_WITH_PENDING" | "ACTIVE" | "PENDING" | "INACTIVE" }
341
- export const ContainsUsersFilterV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique())), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE_WITH_PENDING", "ACTIVE", "PENDING", "INACTIVE"]).annotate({ "description": "Filter entities in 'contains' by their status." })) })
341
+ export const ContainsArchivedFilterV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filter entities in 'contains' by their status." })) }).annotate({ "identifier": "ContainsArchivedFilterV1" })
342
342
  export type CustomFieldFilterV1 = { readonly "id"?: string, readonly "isEmpty"?: boolean, readonly "numberCondition"?: "EQUAL" | "GREATER_THAN" | "LESS_THAN", readonly "type"?: "TXT" | "NUMBER" | "DROPDOWN_SINGLE" | "DROPDOWN_MULTIPLE" | "CHECKBOX" | "LINK", readonly "value"?: { } }
343
- export const CustomFieldFilterV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field identifier across the system." })), "isEmpty": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the custom field is empty." })), "numberCondition": Schema.optionalKey(Schema.Literals(["EQUAL", "GREATER_THAN", "LESS_THAN"]).annotate({ "description": "Represents a custom field number condition." })), "type": Schema.optionalKey(Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents a type of custom field." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field value." })) }).annotate({ "description": "Represents list of time entry custom field filter objects." })
344
- export type DailyTotalDto = { readonly "amount"?: number, readonly "date"?: string, readonly "duration"?: number }
345
- export const DailyTotalDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.check(Schema.isFinite())), "date": Schema.optionalKey(Schema.String), "duration": Schema.optionalKey(Schema.Number.check(Schema.isFinite())) }).annotate({ "description": "Represents list of days" })
343
+ export const CustomFieldFilterV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a custom field identifier across the system." })), "isEmpty": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the custom field is empty." })), "numberCondition": Schema.optionalKey(Schema.Literals(["EQUAL", "GREATER_THAN", "LESS_THAN"]).annotate({ "description": "Represents a custom field number condition." })), "type": Schema.optionalKey(Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents a type of custom field." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field value." })) }).annotate({ "description": "Represents list of time entry custom field filter objects.", "identifier": "CustomFieldFilterV1" })
344
+ export type AuditFilterV1 = { readonly "duration"?: number, readonly "durationShorter"?: boolean, readonly "withoutProject"?: boolean, readonly "withoutTask"?: boolean }
345
+ export const AuditFilterV1 = Schema.Struct({ "duration": Schema.optionalKey(Schema.Number.annotate({ "description": "Represent audit duration.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "durationShorter": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represent audit duration shorter." })), "withoutProject": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to filter without a project." })), "withoutTask": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to filter without a task." })) }).annotate({ "identifier": "AuditFilterV1" })
346
346
  export type DetailedOptionsV1 = { readonly "totals"?: "CALCULATE" | "EXCLUDE" }
347
- export const DetailedOptionsV1 = Schema.Struct({ "totals": Schema.optionalKey(Schema.Literals(["CALCULATE", "EXCLUDE"])) })
348
- export type EntityName = { readonly "id"?: string, readonly "name"?: string }
349
- export const EntityName = Schema.Struct({ "id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String) })
350
- export type ExpenseTotalsDtoV1 = { readonly "expensesCount"?: number, readonly "totalAmount"?: number, readonly "totalAmountBillable"?: number }
351
- export const ExpenseTotalsDtoV1 = Schema.Struct({ "expensesCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expenses count", "format": "int32" }).check(Schema.isInt())), "totalAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total amount of expenses", "format": "double" }).check(Schema.isFinite())), "totalAmountBillable": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total billable amount of expenses", "format": "double" }).check(Schema.isFinite())) }).annotate({ "description": "Represents expense totals" })
352
- export type ReportTagDto = { readonly "id"?: string, readonly "name"?: string }
353
- export const ReportTagDto = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents tag identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents tag name." })) }).annotate({ "description": "List of tags" })
354
- export type ReportTimeIntervalDto = { readonly "duration"?: number, readonly "end"?: string, readonly "start"?: string }
355
- export const ReportTimeIntervalDto = Schema.Struct({ "duration": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the duration of interval.", "format": "int32" }).check(Schema.isInt())), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the end datetime. Date is in format YYYY-MM-DDTHH:MM:SS.ssssssZ" })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the start datetime. Date is in format YYYY-MM-DDTHH:MM:SS.ssssssZ" })) }).annotate({ "description": "Represents time interval" })
347
+ export const DetailedOptionsV1 = Schema.Struct({ "totals": Schema.optionalKey(Schema.Literals(["CALCULATE", "EXCLUDE"])) }).annotate({ "identifier": "DetailedOptionsV1" })
356
348
  export type SummaryFilterV1 = { readonly "groups"?: ReadonlyArray<string>, readonly "sortColumn"?: "GROUP" | "DURATION" | "AMOUNT" | "EARNED" | "COST" | "PROFIT", readonly "summaryChartType"?: "BILLABILITY" | "PROJECT" }
357
- export const SummaryFilterV1 = Schema.Struct({ "groups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents group ids" })).annotate({ "description": "Represents group ids" })), "sortColumn": Schema.optionalKey(Schema.Literals(["GROUP", "DURATION", "AMOUNT", "EARNED", "COST", "PROFIT"]).annotate({ "description": "If provided, you'll get sorted result by provided sort column." })), "summaryChartType": Schema.optionalKey(Schema.Literals(["BILLABILITY", "PROJECT"]).annotate({ "description": "If provided, you'll get sorted result by provided summary chart type." })) }).annotate({ "description": "Represents a summary report filter." })
358
- export type SummaryReportChartDto = { readonly "earned"?: number, readonly "id"?: string, readonly "totalAmount"?: number, readonly "totalBillableTime"?: number, readonly "totalTime"?: number }
359
- export const SummaryReportChartDto = Schema.Struct({ "earned": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents how much is earned" }).check(Schema.isFinite())), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents summary report identifier across the system." })), "totalAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total amount" }).check(Schema.isFinite())), "totalBillableTime": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total billable time" }).check(Schema.isFinite())), "totalTime": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total time" }).check(Schema.isFinite())) }).annotate({ "description": "List of summary report charts" })
360
- export type UpdateSharedReportRequestV1 = { readonly "fixedDate"?: boolean, readonly "isPublic"?: boolean, readonly "name": string, readonly "visibleToUserGroups"?: ReadonlyArray<string>, readonly "visibleToUsers"?: ReadonlyArray<string> }
361
- export const UpdateSharedReportRequestV1 = Schema.Struct({ "fixedDate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report has a fixed date range." })), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report is public." })), "name": Schema.String.annotate({ "description": "Represents a shared reports name." }), "visibleToUserGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide user groups ids to which the shared report is visible." })).annotate({ "description": "Provide user groups ids to which the shared report is visible." }).check(Schema.isUnique())), "visibleToUsers": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide user ids to which the shared report is visible." })).annotate({ "description": "Provide user ids to which the shared report is visible." }).check(Schema.isUnique())) })
362
- export type UserDto = { readonly "dateFormat"?: string, readonly "email": string, readonly "id": string, readonly "name": string, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "weekStart"?: string, readonly "activeWorkspace": string, readonly "defaultWorkspace": string, readonly "profilePicture"?: string, readonly "status": string }
363
- export const UserDto = Schema.Struct({ "dateFormat": Schema.optionalKey(Schema.String), "email": Schema.String, "id": Schema.String, "name": Schema.String, "timeFormat": Schema.optionalKey(Schema.String), "timeZone": Schema.optionalKey(Schema.String), "weekStart": Schema.optionalKey(Schema.String), "activeWorkspace": Schema.String, "defaultWorkspace": Schema.String, "profilePicture": Schema.optionalKey(Schema.String), "status": Schema.String })
349
+ export const SummaryFilterV1 = Schema.Struct({ "groups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents group ids" })).annotate({ "description": "Represents group ids" })), "sortColumn": Schema.optionalKey(Schema.Literals(["GROUP", "DURATION", "AMOUNT", "EARNED", "COST", "PROFIT"]).annotate({ "description": "If provided, you'll get sorted result by provided sort column." })), "summaryChartType": Schema.optionalKey(Schema.Literals(["BILLABILITY", "PROJECT"]).annotate({ "description": "If provided, you'll get sorted result by provided summary chart type." })) }).annotate({ "description": "Represents a summary report filter.", "identifier": "SummaryFilterV1" })
350
+ export type ContainsTagFilterV1 = { readonly "containedInTimeentry"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
351
+ export const ContainsTagFilterV1 = Schema.Struct({ "containedInTimeentry": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "If provided, you'll get result filtered by value of contained in time entry." })), "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filter entities in 'contains' by their status." })) }).annotate({ "description": "Represents an object for filtering entries by tags.", "identifier": "ContainsTagFilterV1" })
352
+ export type ContainsTaskFilterV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL" }
353
+ export const ContainsTaskFilterV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"]).annotate({ "description": "Filter entities in 'contains' by their status." })) }).annotate({ "description": "Represents filter criteria for expenses associated with tasks.", "identifier": "ContainsTaskFilterV1" })
354
+ export type ContainsUsersFilterV1 = { readonly "contains"?: "CONTAINS" | "DOES_NOT_CONTAIN" | "CONTAINS_ONLY", readonly "ids"?: ReadonlyArray<string>, readonly "status"?: "ALL" | "ACTIVE_WITH_PENDING" | "ACTIVE" | "PENDING" | "INACTIVE" }
355
+ export const ContainsUsersFilterV1 = Schema.Struct({ "contains": Schema.optionalKey(Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN", "CONTAINS_ONLY"]).annotate({ "description": "Represents a contains type." })), "ids": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Filter includes provided list of ids." })).annotate({ "description": "Filter includes provided list of ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "status": Schema.optionalKey(Schema.Literals(["ALL", "ACTIVE_WITH_PENDING", "ACTIVE", "PENDING", "INACTIVE"]).annotate({ "description": "Filter entities in 'contains' by their status." })) }).annotate({ "identifier": "ContainsUsersFilterV1" })
364
356
  export type WeeklyFilterV1 = { readonly "group"?: string, readonly "subgroup"?: string }
365
- export const WeeklyFilterV1 = Schema.Struct({ "group": Schema.optionalKey(Schema.String.annotate({ "description": "Weekly filter will include group identifier." })), "subgroup": Schema.optionalKey(Schema.String.annotate({ "description": "Weekly filter will include subgroup identifier." })) }).annotate({ "description": "Represents a weekly report filter." })
357
+ export const WeeklyFilterV1 = Schema.Struct({ "group": Schema.optionalKey(Schema.String.annotate({ "description": "Weekly filter will include group identifier." })), "subgroup": Schema.optionalKey(Schema.String.annotate({ "description": "Weekly filter will include subgroup identifier." })) }).annotate({ "description": "Represents a weekly report filter.", "identifier": "WeeklyFilterV1" })
366
358
  export type InvoicingInfo = { readonly "invoiceId"?: string, readonly "manuallyInvoiced"?: boolean }
367
- export const InvoicingInfo = Schema.Struct({ "invoiceId": Schema.optionalKey(Schema.String), "manuallyInvoiced": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Expense's invoicing info." })
368
- export type AuditLogDtoV1 = { readonly "action"?: "CREATE_TIME_PERSONAL_TIMER" | "CREATE_TIME_PERSONAL_MANUAL" | "CREATE_TIME_IMPORT" | "CREATE_TIME_KIOSK" | "CREATE_TIME_FOR_OTHER" | "RESTORE_TIME" | "RESTORE_TIME_FOR_OTHER" | "UPDATE_TIME_PERSONAL" | "UPDATE_TIME_FOR_OTHER" | "DELETE_TIME_PERSONAL" | "DELETE_TIME_FOR_OTHER" | "CREATE_PROJECT" | "CREATE_PROJECT_IMPORT" | "CREATE_PROJECT_QUICKBOOKS" | "UPDATE_PROJECT" | "DELETE_PROJECT" | "CREATE_TASK" | "CREATE_TASK_IMPORT" | "UPDATE_TASK" | "DELETE_TASK" | "CREATE_CLIENT" | "CREATE_CLIENT_IMPORT" | "CREATE_CLIENT_QUICKBOOKS" | "UPDATE_CLIENT" | "DELETE_CLIENT" | "CREATE_TAG" | "CREATE_TAG_IMPORT" | "UPDATE_TAG" | "DELETE_TAG" | "CREATE_EXPENSE" | "CREATE_EXPENSE_FOR_OTHER" | "RESTORE_EXPENSE" | "RESTORE_EXPENSE_FOR_OTHER" | "UPDATE_EXPENSE" | "UPDATE_EXPENSE_FOR_OTHER" | "DELETE_EXPENSE" | "DELETE_EXPENSE_FOR_OTHER", readonly "content"?: string, readonly "previousContent"?: string, readonly "timestamp"?: string, readonly "userEmail"?: string, readonly "userId"?: string, readonly "userName"?: string, readonly "workspaceId"?: string }
369
- export const AuditLogDtoV1 = Schema.Struct({ "action": Schema.optionalKey(Schema.Literals(["CREATE_TIME_PERSONAL_TIMER", "CREATE_TIME_PERSONAL_MANUAL", "CREATE_TIME_IMPORT", "CREATE_TIME_KIOSK", "CREATE_TIME_FOR_OTHER", "RESTORE_TIME", "RESTORE_TIME_FOR_OTHER", "UPDATE_TIME_PERSONAL", "UPDATE_TIME_FOR_OTHER", "DELETE_TIME_PERSONAL", "DELETE_TIME_FOR_OTHER", "CREATE_PROJECT", "CREATE_PROJECT_IMPORT", "CREATE_PROJECT_QUICKBOOKS", "UPDATE_PROJECT", "DELETE_PROJECT", "CREATE_TASK", "CREATE_TASK_IMPORT", "UPDATE_TASK", "DELETE_TASK", "CREATE_CLIENT", "CREATE_CLIENT_IMPORT", "CREATE_CLIENT_QUICKBOOKS", "UPDATE_CLIENT", "DELETE_CLIENT", "CREATE_TAG", "CREATE_TAG_IMPORT", "UPDATE_TAG", "DELETE_TAG", "CREATE_EXPENSE", "CREATE_EXPENSE_FOR_OTHER", "RESTORE_EXPENSE", "RESTORE_EXPENSE_FOR_OTHER", "UPDATE_EXPENSE", "UPDATE_EXPENSE_FOR_OTHER", "DELETE_EXPENSE", "DELETE_EXPENSE_FOR_OTHER"]).annotate({ "description": "Represents an audit log action type." })), "content": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the current value of the modified entity" })), "previousContent": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the previous value of the modified entity." })), "timestamp": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a timestamp of when the audit log entry was created." })), "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the email address of the user." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the user." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) })
359
+ export const InvoicingInfo = Schema.Struct({ "invoiceId": Schema.optionalKey(Schema.String), "manuallyInvoiced": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Expense's invoicing info.", "identifier": "invoicingInfo" })
360
+ export type ExpenseTotalsDtoV1 = { readonly "expensesCount"?: number, readonly "totalAmount"?: number, readonly "totalAmountBillable"?: number }
361
+ export const ExpenseTotalsDtoV1 = Schema.Struct({ "expensesCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expenses count", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "totalAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total amount of expenses", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "totalAmountBillable": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total billable amount of expenses", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))) }).annotate({ "description": "Represents expense totals", "identifier": "ExpenseTotalsDtoV1" })
362
+ export type UpdateSharedReportRequestV1 = { readonly "fixedDate"?: boolean, readonly "isPublic"?: boolean, readonly "name": string, readonly "visibleToUserGroups"?: ReadonlyArray<string>, readonly "visibleToUsers"?: ReadonlyArray<string> }
363
+ export const UpdateSharedReportRequestV1 = Schema.Struct({ "fixedDate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report has a fixed date range." })), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report is public." })), "name": Schema.String.annotate({ "description": "Represents a shared reports name." }), "visibleToUserGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide user groups ids to which the shared report is visible." })).annotate({ "description": "Provide user groups ids to which the shared report is visible." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "visibleToUsers": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Provide user ids to which the shared report is visible." })).annotate({ "description": "Provide user ids to which the shared report is visible." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "UpdateSharedReportRequestV1" })
370
364
  export type Authors = { readonly "authorIds": ReadonlyArray<string>, readonly "contains": "CONTAINS" | "DOES_NOT_CONTAIN" }
371
- export const Authors = Schema.Struct({ "authorIds": Schema.Array(Schema.String.annotate({ "description": "Represents a set of author user ids. Include \"SYSTEM\" in this set to retrieve system related audit logs." })).annotate({ "description": "Represents a set of author user ids. Include \"SYSTEM\" in this set to retrieve system related audit logs." }).check(Schema.isUnique()), "contains": Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN"]) }).annotate({ "description": "Represents the audit log author filter." })
372
- export type InvoiceItemDto = { readonly "amount"?: number, readonly "applyTaxes"?: ApplyTaxes, readonly "description"?: string, readonly "expenseIds"?: ReadonlyArray<string>, readonly "importType"?: "NOT_IMPORTED" | "TIME_ENTRY_IMPORT" | "EXPENSE_IMPORT", readonly "itemType"?: string, readonly "order"?: number, readonly "quantity"?: number, readonly "timeEntryIds"?: ReadonlyArray<string>, readonly "unitPrice"?: number }
373
- export const InvoiceItemDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents item amount.", "format": "int64" }).check(Schema.isInt())), "applyTaxes": Schema.optionalKey(ApplyTaxes), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice item description." })), "expenseIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of imported expense ids." })).annotate({ "description": "Represents a list of imported expense ids." })), "importType": Schema.optionalKey(Schema.Literals(["NOT_IMPORTED", "TIME_ENTRY_IMPORT", "EXPENSE_IMPORT"]).annotate({ "description": "Represents the invoice item import type." })), "itemType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type." })), "order": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an integer.", "format": "int32" }).check(Schema.isInt())), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents item quantity.", "format": "int64" }).check(Schema.isInt())), "timeEntryIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of imported time entry ids." })).annotate({ "description": "Represents a list of imported time entry ids." })), "unitPrice": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents item unit price.", "format": "int64" }).check(Schema.isInt())) }).annotate({ "description": "Represents a list of invoice item datatransfer objects." })
374
- export type RoleDtoV1 = { readonly "id"?: string, readonly "name"?: string, readonly "source"?: AuthorizationSourceDtoV1 }
375
- export const RoleDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents role identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a role name." })), "source": Schema.optionalKey(AuthorizationSourceDtoV1) }).annotate({ "description": "Represents a role data transfer object." })
376
- export type ImportTimeEntriesAndExpensesRequestV1 = { readonly "expenseFieldsForDetailedGroup"?: ReadonlyArray<"PROJECT" | "TASK" | "CATEGORY" | "NOTE" | "DATE" | "USER">, readonly "expensesGroupBy"?: "CATEGORY" | "PROJECT" | "USER", readonly "expensesGroupType"?: "GROUPED" | "DETAILED", readonly "from": string, readonly "importExpenses": boolean, readonly "projectFilter": ContainsArchivedFilterRequest, readonly "roundTimeEntryDuration"?: boolean, readonly "timeEntryFieldsForDetailedGroup"?: ReadonlyArray<"PROJECT" | "TASK" | "TAGS" | "DESCRIPTION" | "DATE" | "USER">, readonly "timeEntryGroupType": "SINGLE_ITEM" | "GROUPED" | "DETAILED", readonly "timeEntryPrimaryGroupBy"?: "USER" | "PROJECT" | "DATE", readonly "timeEntrySecondaryGroupBy"?: "PROJECT" | "USER" | "TASK" | "DATE" | "DESCRIPTION" | "NONE", readonly "to": string }
377
- export const ImportTimeEntriesAndExpensesRequestV1 = Schema.Struct({ "expenseFieldsForDetailedGroup": Schema.optionalKey(Schema.Array(Schema.Literals(["PROJECT", "TASK", "CATEGORY", "NOTE", "DATE", "USER"]).annotate({ "description": "Represents a set of expense fields to include when using the DETAILED expense grouping type." })).annotate({ "description": "Represents a set of expense fields to include when using the DETAILED expense grouping type." }).check(Schema.isUnique())), "expensesGroupBy": Schema.optionalKey(Schema.Literals(["CATEGORY", "PROJECT", "USER"]).annotate({ "description": "Represents a group field when using the GROUPED expense group type." })), "expensesGroupType": Schema.optionalKey(Schema.Literals(["GROUPED", "DETAILED"]).annotate({ "description": "Represents an expense group type." })), "from": Schema.String.annotate({ "description": "Represents date and time in the yyyy-MM-ddThh:mm:ssZ format." }), "importExpenses": Schema.Boolean.annotate({ "description": "Indicates if billable expenses should be imported alongside time entries." }), "projectFilter": ContainsArchivedFilterRequest, "roundTimeEntryDuration": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates if imported time entry durations should be rounded to the nearest 15 minute interval." })), "timeEntryFieldsForDetailedGroup": Schema.optionalKey(Schema.Array(Schema.Literals(["PROJECT", "TASK", "TAGS", "DESCRIPTION", "DATE", "USER"]).annotate({ "description": "Represents a set of time entry fields to include when using DETAILED time entry grouping type." })).annotate({ "description": "Represents a set of time entry fields to include when using DETAILED time entry grouping type." }).check(Schema.isUnique())), "timeEntryGroupType": Schema.Literals(["SINGLE_ITEM", "GROUPED", "DETAILED"]).annotate({ "description": "Represents a time entry group type." }), "timeEntryPrimaryGroupBy": Schema.optionalKey(Schema.Literals(["USER", "PROJECT", "DATE"]).annotate({ "description": "Represents a primary group field when using the GROUPED time entry grouping type." })), "timeEntrySecondaryGroupBy": Schema.optionalKey(Schema.Literals(["PROJECT", "USER", "TASK", "DATE", "DESCRIPTION", "NONE"]).annotate({ "description": "Represents a secondary group field when using the GROUPED time entry grouping type. Should not have the same grouping type as the primary group field." })), "to": Schema.String.annotate({ "description": "Represents date and time in the yyyy-MM-ddThh:mm:ssZ format." }) })
378
- export type GetUserTotalsRequestV1 = { readonly "end": string, readonly "page"?: number, readonly "pageSize"?: number, readonly "search"?: string, readonly "start": string, readonly "statusFilter"?: "PUBLISHED" | "UNPUBLISHED" | "ALL", readonly "userFilter"?: ContainsUsersFilterRequestV1, readonly "userGroupFilter"?: ContainsUserGroupFilterRequestV1 }
379
- export const GetUserTotalsRequestV1 = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isLessThanOrEqualTo(200))), "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the keyword for searching users by name or email." })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "statusFilter": Schema.optionalKey(Schema.Literals(["PUBLISHED", "UNPUBLISHED", "ALL"]).annotate({ "description": "Filters assignments by status." })), "userFilter": Schema.optionalKey(ContainsUsersFilterRequestV1), "userGroupFilter": Schema.optionalKey(ContainsUserGroupFilterRequestV1) })
380
- export type PublishAssignmentsRequestV1 = { readonly "end": string, readonly "notifyUsers"?: boolean, readonly "search"?: string, readonly "start": string, readonly "userFilter"?: ContainsUsersFilterRequestV1, readonly "userGroupFilter"?: ContainsUserGroupFilterRequestV1, readonly "viewType"?: "PROJECTS" | "TEAM" | "ALL" }
381
- export const PublishAssignmentsRequestV1 = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents end date in yyyy-MM-ddThh:mm:ssZ format." }), "notifyUsers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to notify users when assignment is published." })), "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a search string." })), "start": Schema.String.annotate({ "description": "Represents start date in yyyy-MM-ddThh:mm:ssZ format." }), "userFilter": Schema.optionalKey(ContainsUsersFilterRequestV1), "userGroupFilter": Schema.optionalKey(ContainsUserGroupFilterRequestV1), "viewType": Schema.optionalKey(Schema.Literals(["PROJECTS", "TEAM", "ALL"]).annotate({ "description": "Represents view type." })) })
382
- export type CustomFieldDtoV1 = { readonly "allowedValues"?: ReadonlyArray<string>, readonly "description"?: string, readonly "entityType"?: string, readonly "id"?: string, readonly "name"?: string, readonly "onlyAdminCanEdit"?: boolean, readonly "placeholder"?: string, readonly "projectDefaultValues"?: ReadonlyArray<CustomFieldDefaultValuesDtoV1>, readonly "required"?: boolean, readonly "status"?: string, readonly "type"?: string, readonly "workspaceDefaultValue"?: { }, readonly "workspaceId"?: string }
383
- export const CustomFieldDtoV1 = Schema.Struct({ "allowedValues": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of custom field's allowed values." })).annotate({ "description": "Represents a list of custom field's allowed values." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field description." })), "entityType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field entity type" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field name." })), "onlyAdminCanEdit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is modifiable only by admin users." })), "placeholder": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field placeholder value." })), "projectDefaultValues": Schema.optionalKey(Schema.Array(CustomFieldDefaultValuesDtoV1).annotate({ "description": "Represents a list of custom field default values data transfer objects." })), "required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is mandatory or not." })), "status": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field status" })), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field type." })), "workspaceDefaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value in the workspace." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
365
+ export const Authors = Schema.Struct({ "authorIds": Schema.Array(Schema.String.annotate({ "description": "Represents a set of author user ids. Include \"SYSTEM\" in this set to retrieve system related audit logs." })).annotate({ "description": "Represents a set of author user ids. Include \"SYSTEM\" in this set to retrieve system related audit logs." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" })), "contains": Schema.Literals(["CONTAINS", "DOES_NOT_CONTAIN"]) }).annotate({ "description": "Represents the audit log author filter.", "identifier": "authors" })
366
+ export type AuditLogDtoV1 = { readonly "action"?: "CREATE_TIME_PERSONAL_TIMER" | "CREATE_TIME_PERSONAL_MANUAL" | "CREATE_TIME_IMPORT" | "CREATE_TIME_KIOSK" | "CREATE_TIME_FOR_OTHER" | "RESTORE_TIME" | "RESTORE_TIME_FOR_OTHER" | "UPDATE_TIME_PERSONAL" | "UPDATE_TIME_FOR_OTHER" | "DELETE_TIME_PERSONAL" | "DELETE_TIME_FOR_OTHER" | "CREATE_PROJECT" | "CREATE_PROJECT_IMPORT" | "CREATE_PROJECT_QUICKBOOKS" | "UPDATE_PROJECT" | "DELETE_PROJECT" | "CREATE_TASK" | "CREATE_TASK_IMPORT" | "UPDATE_TASK" | "DELETE_TASK" | "CREATE_CLIENT" | "CREATE_CLIENT_IMPORT" | "CREATE_CLIENT_QUICKBOOKS" | "UPDATE_CLIENT" | "DELETE_CLIENT" | "CREATE_TAG" | "CREATE_TAG_IMPORT" | "UPDATE_TAG" | "DELETE_TAG" | "CREATE_EXPENSE" | "CREATE_EXPENSE_FOR_OTHER" | "RESTORE_EXPENSE" | "RESTORE_EXPENSE_FOR_OTHER" | "UPDATE_EXPENSE" | "UPDATE_EXPENSE_FOR_OTHER" | "DELETE_EXPENSE" | "DELETE_EXPENSE_FOR_OTHER", readonly "content"?: string, readonly "previousContent"?: string, readonly "timestamp"?: string, readonly "userEmail"?: string, readonly "userId"?: string, readonly "userName"?: string, readonly "workspaceId"?: string }
367
+ export const AuditLogDtoV1 = Schema.Struct({ "action": Schema.optionalKey(Schema.Literals(["CREATE_TIME_PERSONAL_TIMER", "CREATE_TIME_PERSONAL_MANUAL", "CREATE_TIME_IMPORT", "CREATE_TIME_KIOSK", "CREATE_TIME_FOR_OTHER", "RESTORE_TIME", "RESTORE_TIME_FOR_OTHER", "UPDATE_TIME_PERSONAL", "UPDATE_TIME_FOR_OTHER", "DELETE_TIME_PERSONAL", "DELETE_TIME_FOR_OTHER", "CREATE_PROJECT", "CREATE_PROJECT_IMPORT", "CREATE_PROJECT_QUICKBOOKS", "UPDATE_PROJECT", "DELETE_PROJECT", "CREATE_TASK", "CREATE_TASK_IMPORT", "UPDATE_TASK", "DELETE_TASK", "CREATE_CLIENT", "CREATE_CLIENT_IMPORT", "CREATE_CLIENT_QUICKBOOKS", "UPDATE_CLIENT", "DELETE_CLIENT", "CREATE_TAG", "CREATE_TAG_IMPORT", "UPDATE_TAG", "DELETE_TAG", "CREATE_EXPENSE", "CREATE_EXPENSE_FOR_OTHER", "RESTORE_EXPENSE", "RESTORE_EXPENSE_FOR_OTHER", "UPDATE_EXPENSE", "UPDATE_EXPENSE_FOR_OTHER", "DELETE_EXPENSE", "DELETE_EXPENSE_FOR_OTHER"]).annotate({ "description": "Represents an audit log action type." })), "content": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the current value of the modified entity" })), "previousContent": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the previous value of the modified entity." })), "timestamp": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a timestamp of when the audit log entry was created." })), "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the email address of the user." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the user." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) }).annotate({ "identifier": "AuditLogDtoV1" })
384
368
  export type UserCustomFieldValueDtoV1 = { readonly "customFieldId"?: string, readonly "customFieldName"?: string, readonly "customFieldType"?: CustomFieldType, readonly "userId"?: string, readonly "value"?: { } }
385
- export const UserCustomFieldValueDtoV1 = Schema.Struct({ "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "customFieldName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field name." })), "customFieldType": Schema.optionalKey(CustomFieldType), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of value objects for user’s custom fields." })
386
- export type HolidayDtoV1 = { readonly "automaticTimeEntryCreation"?: boolean, readonly "datePeriod"?: DatePeriod, readonly "everyoneIncludingNew"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "occursAnnually"?: boolean, readonly "projectId"?: string, readonly "taskId"?: string, readonly "userGroupIds"?: ReadonlyArray<string>, readonly "userIds"?: ReadonlyArray<string>, readonly "workspaceId"?: string }
387
- export const HolidayDtoV1 = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates that time entries will be automatically created for this holiday." })), "datePeriod": Schema.optionalKey(DatePeriod), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents holiday identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the holiday." })), "occursAnnually": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents projectId for automatic time entry creation." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents taskId for automatic time entry creation." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which user groups are included." })).annotate({ "description": "Indicates which user groups are included." }).check(Schema.isUnique())), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which users are included." })).annotate({ "description": "Indicates which users are included." }).check(Schema.isUnique())), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
388
- export type ApprovalRequestDtoV1 = { readonly "creator"?: ApprovalRequestCreatorDtoV1, readonly "dateRange"?: DateRangeDto, readonly "id"?: string, readonly "owner"?: ApprovalRequestOwnerDtoV1, readonly "status"?: ApprovalRequestStatusDtoV1, readonly "type"?: string, readonly "workspaceId"?: string }
389
- export const ApprovalRequestDtoV1 = Schema.Struct({ "creator": Schema.optionalKey(ApprovalRequestCreatorDtoV1), "dateRange": Schema.optionalKey(DateRangeDto), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the workspace." })), "owner": Schema.optionalKey(ApprovalRequestOwnerDtoV1), "status": Schema.optionalKey(ApprovalRequestStatusDtoV1), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request type." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a valid approval request data transfer object." })
390
- export type AssignmentHydratedDtoV1 = { readonly "billable"?: boolean, readonly "clientId"?: string, readonly "clientName"?: string, readonly "hoursPerDay"?: number, readonly "id"?: string, readonly "note"?: string, readonly "period"?: DateRangeDto, readonly "projectArchived"?: boolean, readonly "projectBillable"?: boolean, readonly "projectColor"?: string, readonly "projectId"?: string, readonly "projectName"?: string, readonly "startTime"?: string, readonly "taskId"?: string, readonly "taskName"?: string, readonly "userId"?: string, readonly "userName"?: string, readonly "workspaceId"?: string }
391
- export const AssignmentHydratedDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "hoursPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of hours per day as double.", "format": "double" }).check(Schema.isFinite())), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment note." })), "period": Schema.optionalKey(DateRangeDto), "projectArchived": Schema.optionalKey(Schema.Boolean), "projectBillable": Schema.optionalKey(Schema.Boolean), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents start time in hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "taskName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
392
- export type CreateBalanceAssignmentV1Request = { readonly "balance": number, readonly "dateRange"?: DateRangeV1Request, readonly "note"?: string, readonly "policyId": string, readonly "userIds": ReadonlyArray<string> }
393
- export const CreateBalanceAssignmentV1Request = Schema.Struct({ "balance": Schema.Number.annotate({ "description": "Represents the amount of balance to be created", "format": "double" }).check(Schema.isFinite()).check(Schema.isLessThanOrEqualTo(10000)), "dateRange": Schema.optionalKey(DateRangeV1Request), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents note attached to updating balance." })), "policyId": Schema.String.annotate({ "description": "Represents the identifier of the policy where the balance assignment will be created" }).check(Schema.isMinLength(1)), "userIds": Schema.Array(Schema.String.annotate({ "description": "Represents list of users' identifiers whose balance is to be updated." })).annotate({ "description": "Represents list of users' identifiers whose balance is to be updated." }).check(Schema.isMinLength(1)).check(Schema.isUnique()) })
394
- export type UpdateBalanceAssignmentV1Request = { readonly "balanceChange": number, readonly "dateRange"?: DateRangeV1Request, readonly "note"?: string }
395
- export const UpdateBalanceAssignmentV1Request = Schema.Struct({ "balanceChange": Schema.Number.annotate({ "description": "Represents the change in balance of the balance assignment", "format": "double" }).check(Schema.isFinite()).check(Schema.isGreaterThanOrEqualTo(-10000)).check(Schema.isLessThanOrEqualTo(10000)), "dateRange": Schema.optionalKey(DateRangeV1Request), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents note attached to updating balance." })) })
396
- export type UpdateBalanceRequestV1 = { readonly "dateRange"?: DateRangeV1Request, readonly "note"?: string, readonly "sync"?: boolean, readonly "userIds": ReadonlyArray<string>, readonly "value": number }
397
- export const UpdateBalanceRequestV1 = Schema.Struct({ "dateRange": Schema.optionalKey(DateRangeV1Request), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a new balance note value." })), "sync": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the call should be executed synchronously. By default, call is done asynchronously" })), "userIds": Schema.Array(Schema.String.annotate({ "description": "Represents the list of users' identifiers whose balance is to be updated." })).annotate({ "description": "Represents the list of users' identifiers whose balance is to be updated." }).check(Schema.isMinLength(1)).check(Schema.isUnique()), "value": Schema.Number.annotate({ "description": "Represents the change in balance value.", "format": "double" }).check(Schema.isFinite()).check(Schema.isGreaterThanOrEqualTo(-10000)).check(Schema.isLessThanOrEqualTo(10000)) })
398
- export type AutomaticTimeEntryCreationDto = { readonly "defaultEntities"?: DefaultEntitiesDto, readonly "enabled"?: boolean }
399
- export const AutomaticTimeEntryCreationDto = Schema.Struct({ "defaultEntities": Schema.optionalKey(DefaultEntitiesDto), "enabled": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents automatic time entry creation settings." })
400
- export type AutomaticTimeEntryCreationRequest = { readonly "defaultEntities": DefaultEntitiesRequest, readonly "enabled"?: boolean }
401
- export const AutomaticTimeEntryCreationRequest = Schema.Struct({ "defaultEntities": DefaultEntitiesRequest, "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates that automatic time entry creation is enabled." })) }).annotate({ "description": "Provides automatic time entry creation settings." })
369
+ export const UserCustomFieldValueDtoV1 = Schema.Struct({ "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "customFieldName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field name." })), "customFieldType": Schema.optionalKey(CustomFieldType), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents custom field value." })) }).annotate({ "description": "Represents a list of value objects for user’s custom fields.", "identifier": "UserCustomFieldValueDtoV1" })
370
+ export type MembershipDtoV1 = { readonly "costRate"?: RateDtoV1, readonly "hourlyRate"?: HourlyRateDtoV1, readonly "membershipStatus"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "membershipType"?: "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "targetId"?: string, readonly "userId"?: string }
371
+ export const MembershipDtoV1 = Schema.Struct({ "costRate": Schema.optionalKey(RateDtoV1), "hourlyRate": Schema.optionalKey(HourlyRateDtoV1), "membershipStatus": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Represents a membership status enum." })), "membershipType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "USERGROUP"]).annotate({ "description": "Represents membership type enum." })), "targetId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents target identifier across the system." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })) }).annotate({ "description": "Represents a list of membership objects.", "identifier": "MembershipDtoV1" })
372
+ export type UserSettingsDtoV1 = { readonly "alerts"?: boolean, readonly "approval"?: boolean, readonly "collapseAllProjectLists"?: boolean, readonly "dashboardPinToTop"?: boolean, readonly "dashboardSelection"?: "ME" | "TEAM", readonly "dashboardViewType"?: "PROJECT" | "BILLABILITY", readonly "dateFormat": string, readonly "groupSimilarEntriesDisabled"?: boolean, readonly "invoiceReminders"?: boolean, readonly "isCompactViewOn"?: boolean, readonly "lang"?: string, readonly "longRunning"?: boolean, readonly "multiFactorEnabled"?: boolean, readonly "myStartOfDay"?: string, readonly "onboarding"?: boolean, readonly "projectListCollapse"?: number, readonly "projectPickerTaskFilter"?: boolean, readonly "pto"?: boolean, readonly "reminders"?: boolean, readonly "scheduledReports"?: boolean, readonly "scheduling"?: boolean, readonly "sendNewsletter"?: boolean, readonly "showOnlyWorkingDays"?: boolean, readonly "summaryReportSettings"?: SummaryReportSettingsDtoV1, readonly "theme"?: "DARK" | "DEFAULT", readonly "timeFormat": "HOUR12" | "HOUR24", readonly "timeTrackingManual"?: boolean, readonly "timeZone": string, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyUpdates"?: boolean }
373
+ export const UserSettingsDtoV1 = Schema.Struct({ "alerts": Schema.optionalKey(Schema.Boolean), "approval": Schema.optionalKey(Schema.Boolean), "collapseAllProjectLists": Schema.optionalKey(Schema.Boolean), "dashboardPinToTop": Schema.optionalKey(Schema.Boolean), "dashboardSelection": Schema.optionalKey(Schema.Literals(["ME", "TEAM"])), "dashboardViewType": Schema.optionalKey(Schema.Literals(["PROJECT", "BILLABILITY"])), "dateFormat": Schema.String.annotate({ "description": "Represents a date format." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "groupSimilarEntriesDisabled": Schema.optionalKey(Schema.Boolean), "invoiceReminders": Schema.optionalKey(Schema.Boolean), "isCompactViewOn": Schema.optionalKey(Schema.Boolean), "lang": Schema.optionalKey(Schema.String), "longRunning": Schema.optionalKey(Schema.Boolean), "multiFactorEnabled": Schema.optionalKey(Schema.Boolean), "myStartOfDay": Schema.optionalKey(Schema.String), "onboarding": Schema.optionalKey(Schema.Boolean), "projectListCollapse": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "projectPickerTaskFilter": Schema.optionalKey(Schema.Boolean), "pto": Schema.optionalKey(Schema.Boolean), "reminders": Schema.optionalKey(Schema.Boolean), "scheduledReports": Schema.optionalKey(Schema.Boolean), "scheduling": Schema.optionalKey(Schema.Boolean), "sendNewsletter": Schema.optionalKey(Schema.Boolean), "showOnlyWorkingDays": Schema.optionalKey(Schema.Boolean), "summaryReportSettings": Schema.optionalKey(SummaryReportSettingsDtoV1), "theme": Schema.optionalKey(Schema.Literals(["DARK", "DEFAULT"])), "timeFormat": Schema.Literals(["HOUR12", "HOUR24"]).annotate({ "description": "Represents a time format enum." }), "timeTrackingManual": Schema.optionalKey(Schema.Boolean), "timeZone": Schema.String.annotate({ "description": "Represents a valid timezone ID" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "weeklyUpdates": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents user settings object.", "identifier": "UserSettingsDtoV1" })
374
+ export type BreakSettingsDtoV1 = { readonly "breaksEnabled"?: boolean, readonly "defaultBreakEntities"?: DefaultBreakEntitiesDtoV1 }
375
+ export const BreakSettingsDtoV1 = Schema.Struct({ "breaksEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether breaks is enabled." })), "defaultBreakEntities": Schema.optionalKey(DefaultBreakEntitiesDtoV1) }).annotate({ "description": "Represents the settings for breaks.", "identifier": "BreakSettingsDtoV1" })
402
376
  export type EntityCreationPermissionsDtoV1 = { readonly "whoCanCreateProjectsAndClients"?: EntityCreationPermission, readonly "whoCanCreateTags"?: EntityCreationPermission, readonly "whoCanCreateTasks"?: EntityCreationPermission }
403
- export const EntityCreationPermissionsDtoV1 = Schema.Struct({ "whoCanCreateProjectsAndClients": Schema.optionalKey(EntityCreationPermission), "whoCanCreateTags": Schema.optionalKey(EntityCreationPermission), "whoCanCreateTasks": Schema.optionalKey(EntityCreationPermission) }).annotate({ "description": "Represents an entity creation permission object." })
377
+ export const EntityCreationPermissionsDtoV1 = Schema.Struct({ "whoCanCreateProjectsAndClients": Schema.optionalKey(EntityCreationPermission), "whoCanCreateTags": Schema.optionalKey(EntityCreationPermission), "whoCanCreateTasks": Schema.optionalKey(EntityCreationPermission) }).annotate({ "description": "Represents an entity creation permission object.", "identifier": "EntityCreationPermissionsDtoV1" })
378
+ export type SchedulingSettingsDtoV1 = { readonly "canSeeBillableAndCostAmount"?: boolean, readonly "enabled"?: boolean, readonly "everyoneCanSeeAllAssignments"?: boolean, readonly "whoCanCreateAssignments"?: SchedulingAssignmentCreators }
379
+ export const SchedulingSettingsDtoV1 = Schema.Struct({ "canSeeBillableAndCostAmount": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether billable and cost amount are visible or not." })), "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether scheduling is enabled." })), "everyoneCanSeeAllAssignments": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether everyone can see all assignments." })), "whoCanCreateAssignments": Schema.optionalKey(SchedulingAssignmentCreators) }).annotate({ "description": "Represents the settings for scheduling.", "identifier": "SchedulingSettingsDtoV1" })
380
+ export type WebhookDtoV1 = { readonly "authToken"?: string, readonly "deliveryEnabled"?: boolean, readonly "enabled"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "planEnabled"?: boolean, readonly "triggerSource"?: ReadonlyArray<string>, readonly "triggerSourceType"?: WebhookEventTriggerSourceType, readonly "url"?: string, readonly "userId"?: string, readonly "webhookEvent"?: WebhookEventType, readonly "workspaceId"?: string }
381
+ export const WebhookDtoV1 = Schema.Struct({ "authToken": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an authentication token." })), "deliveryEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether webhook delivery is enabled or not. It can be disabled if delivery failed for too many times." })), "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether webhook is enabled or not." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook name." })), "planEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether webhook is supported by current plan. It can be disabled if number of webhooks exceeds plan limit or if the feature is not supported on current plan." })), "triggerSource": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of trigger sources." })).annotate({ "description": "Represents a list of trigger sources." })), "triggerSourceType": Schema.optionalKey(WebhookEventTriggerSourceType), "url": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "webhookEvent": Schema.optionalKey(WebhookEventType), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "WebhookDtoV1" })
382
+ export type AssignmentHydratedDtoV1 = { readonly "billable"?: boolean, readonly "clientId"?: string, readonly "clientName"?: string, readonly "hoursPerDay"?: number, readonly "id"?: string, readonly "note"?: string, readonly "period"?: DateRangeDto, readonly "projectArchived"?: boolean, readonly "projectBillable"?: boolean, readonly "projectColor"?: string, readonly "projectId"?: string, readonly "projectName"?: string, readonly "startTime"?: string, readonly "taskId"?: string, readonly "taskName"?: string, readonly "userId"?: string, readonly "userName"?: string, readonly "workspaceId"?: string }
383
+ export const AssignmentHydratedDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "hoursPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of hours per day as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment note." })), "period": Schema.optionalKey(DateRangeDto), "projectArchived": Schema.optionalKey(Schema.Boolean), "projectBillable": Schema.optionalKey(Schema.Boolean), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents start time in hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "taskName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "AssignmentHydratedDtoV1" })
384
+ export type ApprovalRequestDtoV1 = { readonly "creator"?: ApprovalRequestCreatorDtoV1, readonly "dateRange"?: DateRangeDto, readonly "id"?: string, readonly "owner"?: ApprovalRequestOwnerDtoV1, readonly "status"?: ApprovalRequestStatusDtoV1, readonly "type"?: string, readonly "workspaceId"?: string }
385
+ export const ApprovalRequestDtoV1 = Schema.Struct({ "creator": Schema.optionalKey(ApprovalRequestCreatorDtoV1), "dateRange": Schema.optionalKey(DateRangeDto), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the workspace." })), "owner": Schema.optionalKey(ApprovalRequestOwnerDtoV1), "status": Schema.optionalKey(ApprovalRequestStatusDtoV1), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request type." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a valid approval request data transfer object.", "identifier": "ApprovalRequestDtoV1" })
386
+ export type TimeEntryInfoDto = { readonly "approvalRequestId"?: string, readonly "billable"?: boolean, readonly "costRate"?: RateDto, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDto>, readonly "description"?: string, readonly "hourlyRate"?: RateDto, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "project"?: ProjectInfoDto, readonly "tags"?: ReadonlyArray<TagDto>, readonly "task"?: TaskInfoDto, readonly "timeInterval"?: TimeIntervalDto, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF" }
387
+ export const TimeEntryInfoDto = Schema.Struct({ "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval identifier across the system." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time entry is billable or not." })), "costRate": Schema.optionalKey(RateDto), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDto).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry description." })), "hourlyRate": Schema.optionalKey(RateDto), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time entry is locked or not." })), "project": Schema.optionalKey(ProjectInfoDto), "tags": Schema.optionalKey(Schema.Array(TagDto).annotate({ "description": "Represents a list of tag objects." })), "task": Schema.optionalKey(TaskInfoDto), "timeInterval": Schema.optionalKey(TimeIntervalDto), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })) }).annotate({ "description": "Represents a list of time entry info data transfer objects.", "identifier": "TimeEntryInfoDto" })
388
+ export type TimeEntryWithCustomFieldsDto = { readonly "billable"?: boolean, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDto>, readonly "description"?: string, readonly "id"?: string, readonly "projectId"?: string, readonly "tagIds"?: ReadonlyArray<string>, readonly "taskId"?: string, readonly "timeInterval"?: TimeIntervalDto, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId"?: string, readonly "workspaceId"?: string }
389
+ export const TimeEntryWithCustomFieldsDto = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." })), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDto).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry description." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry identifier across the system." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag identifiers across the system." })).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "timeInterval": Schema.optionalKey(TimeIntervalDto), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) }).annotate({ "description": "Represents a set of template time entries.", "identifier": "TimeEntryWithCustomFieldsDto" })
390
+ export type ExpenseHydratedDto = { readonly "approvalRequestId"?: string, readonly "approvalStatus"?: "PENDING" | "APPROVED" | "UNSUBMITTED" | "REJECTED" | "WITHDRAWN_APPROVAL" | "WITHDRAWN_SUBMISSION", readonly "billable"?: boolean, readonly "category"?: ExpenseCategoryDto, readonly "currency"?: string, readonly "date"?: string, readonly "detailedApprovalStatus"?: "PENDING" | "APPROVED" | "UNSUBMITTED" | "REJECTED" | "WITHDRAWN_APPROVAL" | "WITHDRAWN_SUBMISSION", readonly "fileId"?: string, readonly "fileName"?: string, readonly "fileUrl"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "locked"?: boolean, readonly "notes"?: string, readonly "project"?: ProjectInfoDto, readonly "quantity"?: number, readonly "task"?: TaskInfoDto, readonly "total"?: number, readonly "userId"?: string, readonly "workspaceId"?: string }
391
+ export const ExpenseHydratedDto = Schema.Struct({ "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the system." })), "approvalStatus": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "UNSUBMITTED", "REJECTED", "WITHDRAWN_APPROVAL", "WITHDRAWN_SUBMISSION"]).annotate({ "description": "Represents the approval status of the expense" })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "category": Schema.optionalKey(ExpenseCategoryDto), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "detailedApprovalStatus": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "UNSUBMITTED", "REJECTED", "WITHDRAWN_APPROVAL", "WITHDRAWN_SUBMISSION"]).annotate({ "description": "Represents a detailed approval status of the expense" })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "fileName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file name." })), "fileUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file URL." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "locked": Schema.optionalKey(Schema.Boolean), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." })), "project": Schema.optionalKey(ProjectInfoDto), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense quantity as double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "task": Schema.optionalKey(TaskInfoDto), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total as double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a list of expense hydrated data transfer objects.", "identifier": "ExpenseHydratedDto" })
392
+ export type ExpenseHydratedDtoV1 = { readonly "billable"?: boolean, readonly "category"?: ExpenseCategoryDto, readonly "date"?: string, readonly "fileId"?: string, readonly "fileName"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "locked"?: boolean, readonly "notes"?: string, readonly "project"?: ProjectInfoDto, readonly "quantity"?: number, readonly "task"?: TaskInfoDto, readonly "total"?: number, readonly "userId"?: string, readonly "workspaceId"?: string }
393
+ export const ExpenseHydratedDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "category": Schema.optionalKey(ExpenseCategoryDto), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "fileName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file name." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "locked": Schema.optionalKey(Schema.Boolean), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." })), "project": Schema.optionalKey(ProjectInfoDto), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense quantity as double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "task": Schema.optionalKey(TaskInfoDto), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total as double data type.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represent a list of hydrated expense objects.", "identifier": "ExpenseHydratedDtoV1" })
394
+ export type CustomFieldDtoV1 = { readonly "allowedValues"?: ReadonlyArray<string>, readonly "description"?: string, readonly "entityType"?: string, readonly "id"?: string, readonly "name"?: string, readonly "onlyAdminCanEdit"?: boolean, readonly "placeholder"?: string, readonly "projectDefaultValues"?: ReadonlyArray<CustomFieldDefaultValuesDtoV1>, readonly "required"?: boolean, readonly "status"?: string, readonly "type"?: string, readonly "workspaceDefaultValue"?: { }, readonly "workspaceId"?: string }
395
+ export const CustomFieldDtoV1 = Schema.Struct({ "allowedValues": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of custom field's allowed values." })).annotate({ "description": "Represents a list of custom field's allowed values." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field description." })), "entityType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field entity type" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field name." })), "onlyAdminCanEdit": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is modifiable only by admin users." })), "placeholder": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field placeholder value." })), "projectDefaultValues": Schema.optionalKey(Schema.Array(CustomFieldDefaultValuesDtoV1).annotate({ "description": "Represents a list of custom field default values data transfer objects." })), "required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether custom field is mandatory or not." })), "status": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field status" })), "type": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field type." })), "workspaceDefaultValue": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents a custom field's default value in the workspace." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "CustomFieldDtoV1" })
396
+ export type PageableCollectionLogBinDocumentDto = { readonly "response"?: ReadonlyArray<LogBinDocumentDto> }
397
+ export const PageableCollectionLogBinDocumentDto = Schema.Struct({ "response": Schema.optionalKey(Schema.Array(LogBinDocumentDto)) }).annotate({ "identifier": "PageableCollectionLogBinDocumentDto" })
404
398
  export type ExpenseCategoriesWithCountDtoV1 = { readonly "categories"?: ReadonlyArray<ExpenseCategoryDtoV1>, readonly "count"?: number }
405
- export const ExpenseCategoriesWithCountDtoV1 = Schema.Struct({ "categories": Schema.optionalKey(Schema.Array(ExpenseCategoryDtoV1).annotate({ "description": "Represents a list of expense categories data transfer object." })), "count": Schema.optionalKey(Schema.Number.annotate({ "description": "Indicates the number of expense categories returned.", "format": "int32" }).check(Schema.isInt())) })
406
- export type MembershipRequest = { readonly "hourlyRate"?: HourlyRateRequest, readonly "membershipStatus"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "membershipType"?: "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "userId"?: string }
407
- export const MembershipRequest = Schema.Struct({ "hourlyRate": Schema.optionalKey(HourlyRateRequest), "membershipStatus": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Represents a membership status enum." })), "membershipType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "USERGROUP"]).annotate({ "description": "Represents membership type enum." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })) }).annotate({ "description": "Represents a list of membership request objects." })
408
- export type TaskRequest = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "billable"?: boolean, readonly "budgetEstimate"?: number, readonly "costRate"?: CostRateRequest, readonly "estimate"?: string, readonly "hourlyRate"?: HourlyRateRequest, readonly "id"?: string, readonly "name": string, readonly "projectId"?: string, readonly "status"?: string, readonly "userGroupIds"?: ReadonlyArray<string> }
409
- export const TaskRequest = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique())), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether task is billable or not" })), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "costRate": Schema.optionalKey(CostRateRequest), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "hourlyRate": Schema.optionalKey(HourlyRateRequest), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.String.annotate({ "description": "Represents task name." }), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "status": Schema.optionalKey(Schema.String), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique())) }).annotate({ "description": "Represents a list of task request objects." })
410
- export type UpdateProjectRequest = { readonly "archived"?: boolean, readonly "billable"?: boolean, readonly "clientId"?: string, readonly "color"?: string, readonly "costRate"?: CostRateRequestV1, readonly "hourlyRate"?: HourlyRateRequestV1, readonly "isPublic"?: boolean, readonly "name"?: string, readonly "note"?: string }
411
- export const UpdateProjectRequest = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "costRate": Schema.optionalKey(CostRateRequestV1), "hourlyRate": Schema.optionalKey(HourlyRateRequestV1), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is public or not." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project name." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(250))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project note." }).check(Schema.isMaxLength(16384))) })
412
- export type UserIdWithRatesRequest = { readonly "costRate"?: CostRateRequestV1, readonly "hourlyRate"?: HourlyRateRequestV1, readonly "userId": string }
413
- export const UserIdWithRatesRequest = Schema.Struct({ "costRate": Schema.optionalKey(CostRateRequestV1), "hourlyRate": Schema.optionalKey(HourlyRateRequestV1), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }) }).annotate({ "description": "Represents a list of users with id and rates request objects." })
399
+ export const ExpenseCategoriesWithCountDtoV1 = Schema.Struct({ "categories": Schema.optionalKey(Schema.Array(ExpenseCategoryDtoV1).annotate({ "description": "Represents a list of expense categories data transfer object." })), "count": Schema.optionalKey(Schema.Number.annotate({ "description": "Indicates the number of expense categories returned.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "ExpenseCategoriesWithCountDtoV1" })
400
+ export type HolidayDtoV1 = { readonly "automaticTimeEntryCreation"?: boolean, readonly "datePeriod"?: DatePeriod, readonly "everyoneIncludingNew"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "occursAnnually"?: boolean, readonly "projectId"?: string, readonly "taskId"?: string, readonly "userGroupIds"?: ReadonlyArray<string>, readonly "userIds"?: ReadonlyArray<string>, readonly "workspaceId"?: string }
401
+ export const HolidayDtoV1 = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates that time entries will be automatically created for this holiday." })), "datePeriod": Schema.optionalKey(DatePeriod), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents holiday identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the holiday." })), "occursAnnually": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents projectId for automatic time entry creation." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents taskId for automatic time entry creation." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which user groups are included." })).annotate({ "description": "Indicates which user groups are included." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which users are included." })).annotate({ "description": "Indicates which users are included." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "HolidayDtoV1" })
402
+ export type AutomaticTimeEntryCreationRequest = { readonly "defaultEntities": DefaultEntitiesRequest, readonly "enabled"?: boolean }
403
+ export const AutomaticTimeEntryCreationRequest = Schema.Struct({ "defaultEntities": DefaultEntitiesRequest, "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates that automatic time entry creation is enabled." })) }).annotate({ "description": "Provides automatic time entry creation settings.", "identifier": "AutomaticTimeEntryCreationRequest" })
404
+ export type AddUsersToProjectRequestV1 = { readonly "remove"?: boolean, readonly "userGroups"?: UserGroupIdsSchema, readonly "userIds"?: ReadonlyArray<string> }
405
+ export const AddUsersToProjectRequestV1 = Schema.Struct({ "remove": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Setting this flag to 'true' will remove the given users from the project." })), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents array of user ids which should be added/removed." })).annotate({ "description": "Represents array of user ids which should be added/removed." })) }).annotate({ "identifier": "AddUsersToProjectRequestV1" })
406
+ export type AutomaticTimeEntryCreationDto = { readonly "defaultEntities"?: DefaultEntitiesDto, readonly "enabled"?: boolean }
407
+ export const AutomaticTimeEntryCreationDto = Schema.Struct({ "defaultEntities": Schema.optionalKey(DefaultEntitiesDto), "enabled": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents automatic time entry creation settings.", "identifier": "AutomaticTimeEntryCreationDto" })
414
408
  export type InvoicesListDtoV1 = { readonly "invoices"?: ReadonlyArray<InvoiceDtoV1>, readonly "total"?: number }
415
- export const InvoicesListDtoV1 = Schema.Struct({ "invoices": Schema.optionalKey(Schema.Array(InvoiceDtoV1).annotate({ "description": "Represents a list of invoices." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the total invoice count.", "format": "int64" }).check(Schema.isInt())) })
409
+ export const InvoicesListDtoV1 = Schema.Struct({ "invoices": Schema.optionalKey(Schema.Array(InvoiceDtoV1).annotate({ "description": "Represents a list of invoices." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the total invoice count.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "InvoicesListDtoV1" })
410
+ export type ImportTimeEntriesAndExpensesRequestV1 = { readonly "expenseFieldsForDetailedGroup"?: ReadonlyArray<"PROJECT" | "TASK" | "CATEGORY" | "NOTE" | "DATE" | "USER">, readonly "expensesGroupBy"?: "CATEGORY" | "PROJECT" | "USER", readonly "expensesGroupType"?: "GROUPED" | "DETAILED", readonly "from": string, readonly "importExpenses": boolean, readonly "projectFilter": ContainsArchivedFilterRequest, readonly "roundTimeEntryDuration"?: boolean, readonly "timeEntryFieldsForDetailedGroup"?: ReadonlyArray<"PROJECT" | "TASK" | "TAGS" | "DESCRIPTION" | "DATE" | "USER">, readonly "timeEntryGroupType": "SINGLE_ITEM" | "GROUPED" | "DETAILED", readonly "timeEntryPrimaryGroupBy"?: "USER" | "PROJECT" | "DATE", readonly "timeEntrySecondaryGroupBy"?: "PROJECT" | "USER" | "TASK" | "DATE" | "DESCRIPTION" | "NONE", readonly "to": string }
411
+ export const ImportTimeEntriesAndExpensesRequestV1 = Schema.Struct({ "expenseFieldsForDetailedGroup": Schema.optionalKey(Schema.Array(Schema.Literals(["PROJECT", "TASK", "CATEGORY", "NOTE", "DATE", "USER"]).annotate({ "description": "Represents a set of expense fields to include when using the DETAILED expense grouping type." })).annotate({ "description": "Represents a set of expense fields to include when using the DETAILED expense grouping type." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "expensesGroupBy": Schema.optionalKey(Schema.Literals(["CATEGORY", "PROJECT", "USER"]).annotate({ "description": "Represents a group field when using the GROUPED expense group type." })), "expensesGroupType": Schema.optionalKey(Schema.Literals(["GROUPED", "DETAILED"]).annotate({ "description": "Represents an expense group type." })), "from": Schema.String.annotate({ "description": "Represents date and time in the yyyy-MM-ddThh:mm:ssZ format." }), "importExpenses": Schema.Boolean.annotate({ "description": "Indicates if billable expenses should be imported alongside time entries." }), "projectFilter": ContainsArchivedFilterRequest, "roundTimeEntryDuration": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates if imported time entry durations should be rounded to the nearest 15 minute interval." })), "timeEntryFieldsForDetailedGroup": Schema.optionalKey(Schema.Array(Schema.Literals(["PROJECT", "TASK", "TAGS", "DESCRIPTION", "DATE", "USER"]).annotate({ "description": "Represents a set of time entry fields to include when using DETAILED time entry grouping type." })).annotate({ "description": "Represents a set of time entry fields to include when using DETAILED time entry grouping type." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "timeEntryGroupType": Schema.Literals(["SINGLE_ITEM", "GROUPED", "DETAILED"]).annotate({ "description": "Represents a time entry group type." }), "timeEntryPrimaryGroupBy": Schema.optionalKey(Schema.Literals(["USER", "PROJECT", "DATE"]).annotate({ "description": "Represents a primary group field when using the GROUPED time entry grouping type." })), "timeEntrySecondaryGroupBy": Schema.optionalKey(Schema.Literals(["PROJECT", "USER", "TASK", "DATE", "DESCRIPTION", "NONE"]).annotate({ "description": "Represents a secondary group field when using the GROUPED time entry grouping type. Should not have the same grouping type as the primary group field." })), "to": Schema.String.annotate({ "description": "Represents date and time in the yyyy-MM-ddThh:mm:ssZ format." }) }).annotate({ "identifier": "ImportTimeEntriesAndExpensesRequestV1" })
412
+ export type InvoiceFilterRequestV1 = { readonly "clients"?: ContainsArchivedFilterRequest, readonly "companies"?: BaseFilterRequest, readonly "exactAmount"?: number, readonly "exactBalance"?: number, readonly "greaterThanAmount"?: number, readonly "greaterThanBalance"?: number, readonly "invoiceNumber"?: string, readonly "issueDate"?: TimeRangeRequestDtoV1, readonly "lessThanAmount"?: number, readonly "lessThanBalance"?: number, readonly "page"?: number, readonly "pageSize"?: number, readonly "sortColumn"?: "ID" | "CLIENT" | "DUE_ON" | "ISSUE_DATE" | "AMOUNT" | "BALANCE", readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "statuses"?: ReadonlyArray<"UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE">, readonly "strictSearch"?: boolean }
413
+ export const InvoiceFilterRequestV1 = Schema.Struct({ "clients": Schema.optionalKey(ContainsArchivedFilterRequest), "companies": Schema.optionalKey(BaseFilterRequest), "exactAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount. If provided, you'll get a filtered list of invoices that has the equal amount as specified.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "exactBalance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance. If provided, you'll get a filtered list of invoices that has the equal balance as specified.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "greaterThanAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount. If provided, you'll get a filtered list of invoices that has amount greater than specified.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "greaterThanBalance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance. If provided, you'll get a filtered list of invoices that has balance greater than specified.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "invoiceNumber": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of invoices that contain the provided string in their invoice number." })), "issueDate": Schema.optionalKey(TimeRangeRequestDtoV1), "lessThanAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount. If provided, you'll get a filtered list of invoices that has amount less than specified.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "lessThanBalance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance. If provided, you'll get a filtered list of invoices that has balance less than specified.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "CLIENT", "DUE_ON", "ISSUE_DATE", "AMOUNT", "BALANCE"]).annotate({ "description": "Represents the column name to be used as sorting criteria." })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "Represents the sorting order." })), "statuses": Schema.optionalKey(Schema.Array(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents a list of invoice statuses. If provided, you'll get a filtered list of invoices that matches any of the invoice status provided." })).annotate({ "description": "Represents a list of invoice statuses. If provided, you'll get a filtered list of invoices that matches any of the invoice status provided." })), "strictSearch": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by invoice number only will return invoices whose number exactly matches the string value given for the 'invoiceNumber' parameter. When set to false, results will also include invoices whose number contain the string value, but could be longer than the string value itself. For example, if there is an invoice with the number '123456', and the search value is '123', setting strict-name-search to true will not return that invoice in the results, whereas setting it to false will." })) }).annotate({ "identifier": "InvoiceFilterRequestV1" })
414
+ export type InvoiceInfoV1 = { readonly "amount"?: number, readonly "balance"?: number, readonly "billFrom"?: string, readonly "clientId"?: string, readonly "clientName"?: string, readonly "currency"?: string, readonly "daysOverdue"?: number, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "number"?: string, readonly "paid"?: number, readonly "status"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE", readonly "visibleZeroFields"?: VisibleZeroFieldsInvoice }
415
+ export const InvoiceInfoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents to whom an invoice is billed from." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name for an invoice." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "daysOverdue": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the number of days an invoice is overdue.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })), "paid": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice paid amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "status": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the status of an invoice." })), "visibleZeroFields": Schema.optionalKey(VisibleZeroFieldsInvoice) }).annotate({ "description": "Represents a list of invoice info.", "identifier": "InvoiceInfoV1" })
416
416
  export type InvoiceSettingsDtoV1 = { readonly "defaults"?: InvoiceDefaultSettingsDto, readonly "exportFields"?: InvoiceExportFields, readonly "labels"?: LabelsCustomization }
417
- export const InvoiceSettingsDtoV1 = Schema.Struct({ "defaults": Schema.optionalKey(InvoiceDefaultSettingsDto), "exportFields": Schema.optionalKey(InvoiceExportFields), "labels": Schema.optionalKey(LabelsCustomization) })
417
+ export const InvoiceSettingsDtoV1 = Schema.Struct({ "defaults": Schema.optionalKey(InvoiceDefaultSettingsDto), "exportFields": Schema.optionalKey(InvoiceExportFields), "labels": Schema.optionalKey(LabelsCustomization) }).annotate({ "identifier": "InvoiceSettingsDtoV1" })
418
418
  export type UpdateInvoiceSettingsRequestV1 = { readonly "defaults"?: InvoiceDefaultSettingsRequestV1, readonly "exportFields"?: InvoiceExportFieldsRequest, readonly "labels": LabelsCustomizationRequest }
419
- export const UpdateInvoiceSettingsRequestV1 = Schema.Struct({ "defaults": Schema.optionalKey(InvoiceDefaultSettingsRequestV1), "exportFields": Schema.optionalKey(InvoiceExportFieldsRequest), "labels": LabelsCustomizationRequest })
420
- export type PageableCollectionLogBinDocumentDto = { readonly "response"?: ReadonlyArray<LogBinDocumentDto> }
421
- export const PageableCollectionLogBinDocumentDto = Schema.Struct({ "response": Schema.optionalKey(Schema.Array(LogBinDocumentDto)) })
422
- export type SchedulingProjectsTotalsDtoV1 = { readonly "assignments"?: ReadonlyArray<AssignmentPerDayDto>, readonly "clientName"?: string, readonly "milestones"?: ReadonlyArray<MilestoneDto>, readonly "projectArchived"?: boolean, readonly "projectBillable"?: boolean, readonly "projectColor"?: string, readonly "projectId"?: string, readonly "projectName"?: string, readonly "taskId"?: string, readonly "taskName"?: string, readonly "totalHours"?: number, readonly "workspaceId"?: string }
423
- export const SchedulingProjectsTotalsDtoV1 = Schema.Struct({ "assignments": Schema.optionalKey(Schema.Array(AssignmentPerDayDto).annotate({ "description": "Represents a list of assignment per day objects." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "milestones": Schema.optionalKey(Schema.Array(MilestoneDto).annotate({ "description": "Represents a list of milestone objects." })), "projectArchived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." })), "projectBillable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "taskName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "totalHours": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents project total hours as double.", "format": "double" }).check(Schema.isFinite())), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
424
- export type TimeOffRequestPeriodDto = { readonly "halfDay"?: boolean, readonly "halfDayHours"?: Period, readonly "halfDayPeriod"?: string, readonly "period"?: Period }
425
- export const TimeOffRequestPeriodDto = Schema.Struct({ "halfDay": Schema.optionalKey(Schema.Boolean), "halfDayHours": Schema.optionalKey(Period), "halfDayPeriod": Schema.optionalKey(Schema.String), "period": Schema.optionalKey(Period) }).annotate({ "description": "Represents the period the time off request." })
426
- export type TimeOffRequestPeriodV1Request = { readonly "halfDayPeriod"?: "FIRST_HALF" | "SECOND_HALF" | "NOT_DEFINED", readonly "isHalfDay"?: boolean, readonly "period": PeriodV1Request, readonly "timeOffHalfDayPeriod"?: "FIRST_HALF" | "SECOND_HALF" | "NOT_DEFINED" }
427
- export const TimeOffRequestPeriodV1Request = Schema.Struct({ "halfDayPeriod": Schema.optionalKey(Schema.Literals(["FIRST_HALF", "SECOND_HALF", "NOT_DEFINED"]).annotate({ "description": "Represents the half day period." })), "isHalfDay": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time off is half day." })), "period": PeriodV1Request, "timeOffHalfDayPeriod": Schema.optionalKey(Schema.Literals(["FIRST_HALF", "SECOND_HALF", "NOT_DEFINED"])) }).annotate({ "description": "Provide the period you would like to use for creating the time off request. If `timeZone` isn't set, should be aligned with time zone for user in settings. Can be shifted from user time zone with explicit setting of `timeZone`." })
428
- export type TemplateRequest = { readonly "name": string, readonly "projectsAndTasks": ReadonlyArray<ProjectTaskTupleRequest>, readonly "timeEntryIds"?: ReadonlyArray<string>, readonly "weekStart"?: string }
429
- export const TemplateRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents a template name." }).check(Schema.isMinLength(1)), "projectsAndTasks": Schema.Array(ProjectTaskTupleRequest).annotate({ "description": "Represents a list of template's projects and tasks." }), "timeEntryIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a set of template time entry ids." })).annotate({ "description": "Represents a set of template time entry ids." }).check(Schema.isUnique())), "weekStart": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date of the starting day of the week in the yyyy-MM-dd format.", "format": "date" })) })
430
- export type MembershipDtoV1 = { readonly "costRate"?: RateDtoV1, readonly "hourlyRate"?: HourlyRateDtoV1, readonly "membershipStatus"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "membershipType"?: "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "targetId"?: string, readonly "userId"?: string }
431
- export const MembershipDtoV1 = Schema.Struct({ "costRate": Schema.optionalKey(RateDtoV1), "hourlyRate": Schema.optionalKey(HourlyRateDtoV1), "membershipStatus": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Represents a membership status enum." })), "membershipType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "USERGROUP"]).annotate({ "description": "Represents membership type enum." })), "targetId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents target identifier across the system." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })) }).annotate({ "description": "Represents a list of membership objects." })
432
- export type CreateRecurringAssignmentRequestV1 = { readonly "frequency"?: RecurringFrequency, readonly "interval"?: number, readonly "monthlyRecurringType"?: MonthlyRecurringType, readonly "occurrences"?: number, readonly "recurringEndType"?: RecurringEndType, readonly "repeat"?: boolean, readonly "until"?: string, readonly "weeks"?: number }
433
- export const CreateRecurringAssignmentRequestV1 = Schema.Struct({ "frequency": Schema.optionalKey(RecurringFrequency), "interval": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents interval for recurring (1 - every week/month, 2 - biweekly).", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(2))), "monthlyRecurringType": Schema.optionalKey(MonthlyRecurringType), "occurrences": Schema.optionalKey(Schema.Number.annotate({ "description": "Indicates number of occurrences for assignment.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(99))), "recurringEndType": Schema.optionalKey(RecurringEndType), "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the assignment is recurring. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`." })), "until": Schema.optionalKey(Schema.String.annotate({ "description": "Date by which recurring assignments will be created", "format": "date-time" })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for this assignment. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`.", "format": "int32" }).check(Schema.isInt())) })
434
- export type RecurringAssignmentDtoV1 = { readonly "frequency": RecurringFrequency, readonly "interval"?: number, readonly "monthlyRecurringType"?: MonthlyRecurringType, readonly "occurrences"?: number, readonly "repeat"?: boolean, readonly "seriesId"?: string, readonly "until"?: string, readonly "weeks"?: number }
435
- export const RecurringAssignmentDtoV1 = Schema.Struct({ "frequency": RecurringFrequency, "interval": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents interval for recurring (1 - every week/month, 2 - biweekly).", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(2))), "monthlyRecurringType": Schema.optionalKey(MonthlyRecurringType), "occurrences": Schema.optionalKey(Schema.Number.annotate({ "description": "Number of occurrences", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(99))), "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the assignment is recurring. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `until`, and `occurrences`." })), "seriesId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents series identifier." })), "until": Schema.optionalKey(Schema.String.annotate({ "description": "Date by which recurring assignments will be created", "format": "date-time" })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for this assignment. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `until`, and `occurrences`.", "format": "int32" }).check(Schema.isInt())) }).annotate({ "description": "Represents recurring assignment object." })
436
- export type RecurringAssignmentRequestV1 = { readonly "frequency"?: RecurringFrequency, readonly "interval"?: number, readonly "monthlyRecurringType"?: MonthlyRecurringType, readonly "occurrences"?: number, readonly "recurringEndType"?: RecurringEndType, readonly "repeat"?: boolean, readonly "until"?: string, readonly "weeks"?: number }
437
- export const RecurringAssignmentRequestV1 = Schema.Struct({ "frequency": Schema.optionalKey(RecurringFrequency), "interval": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents interval for recurring (1 - every week/month, 2 - biweekly).", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(2))), "monthlyRecurringType": Schema.optionalKey(MonthlyRecurringType), "occurrences": Schema.optionalKey(Schema.Number.annotate({ "description": "Indicates number of occurrences for assignment.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(99))), "recurringEndType": Schema.optionalKey(RecurringEndType), "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the assignment is recurring. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`." })), "until": Schema.optionalKey(Schema.String.annotate({ "description": "Date by which recurring assignments will be created", "format": "date-time" })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for this assignment. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`.", "format": "int32" }).check(Schema.isInt())) })
438
- export type UserSettingsDtoV1 = { readonly "alerts"?: boolean, readonly "approval"?: boolean, readonly "collapseAllProjectLists"?: boolean, readonly "dashboardPinToTop"?: boolean, readonly "dashboardSelection"?: "ME" | "TEAM", readonly "dashboardViewType"?: "PROJECT" | "BILLABILITY", readonly "dateFormat": string, readonly "groupSimilarEntriesDisabled"?: boolean, readonly "invoiceReminders"?: boolean, readonly "isCompactViewOn"?: boolean, readonly "lang"?: string, readonly "longRunning"?: boolean, readonly "multiFactorEnabled"?: boolean, readonly "myStartOfDay"?: string, readonly "onboarding"?: boolean, readonly "projectListCollapse"?: number, readonly "projectPickerTaskFilter"?: boolean, readonly "pto"?: boolean, readonly "reminders"?: boolean, readonly "scheduledReports"?: boolean, readonly "scheduling"?: boolean, readonly "sendNewsletter"?: boolean, readonly "showOnlyWorkingDays"?: boolean, readonly "summaryReportSettings"?: SummaryReportSettingsDtoV1, readonly "theme"?: "DARK" | "DEFAULT", readonly "timeFormat": "HOUR12" | "HOUR24", readonly "timeTrackingManual"?: boolean, readonly "timeZone": string, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyUpdates"?: boolean }
439
- export const UserSettingsDtoV1 = Schema.Struct({ "alerts": Schema.optionalKey(Schema.Boolean), "approval": Schema.optionalKey(Schema.Boolean), "collapseAllProjectLists": Schema.optionalKey(Schema.Boolean), "dashboardPinToTop": Schema.optionalKey(Schema.Boolean), "dashboardSelection": Schema.optionalKey(Schema.Literals(["ME", "TEAM"])), "dashboardViewType": Schema.optionalKey(Schema.Literals(["PROJECT", "BILLABILITY"])), "dateFormat": Schema.String.annotate({ "description": "Represents a date format." }).check(Schema.isMinLength(1)), "groupSimilarEntriesDisabled": Schema.optionalKey(Schema.Boolean), "invoiceReminders": Schema.optionalKey(Schema.Boolean), "isCompactViewOn": Schema.optionalKey(Schema.Boolean), "lang": Schema.optionalKey(Schema.String), "longRunning": Schema.optionalKey(Schema.Boolean), "multiFactorEnabled": Schema.optionalKey(Schema.Boolean), "myStartOfDay": Schema.optionalKey(Schema.String), "onboarding": Schema.optionalKey(Schema.Boolean), "projectListCollapse": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "projectPickerTaskFilter": Schema.optionalKey(Schema.Boolean), "pto": Schema.optionalKey(Schema.Boolean), "reminders": Schema.optionalKey(Schema.Boolean), "scheduledReports": Schema.optionalKey(Schema.Boolean), "scheduling": Schema.optionalKey(Schema.Boolean), "sendNewsletter": Schema.optionalKey(Schema.Boolean), "showOnlyWorkingDays": Schema.optionalKey(Schema.Boolean), "summaryReportSettings": Schema.optionalKey(SummaryReportSettingsDtoV1), "theme": Schema.optionalKey(Schema.Literals(["DARK", "DEFAULT"])), "timeFormat": Schema.Literals(["HOUR12", "HOUR24"]).annotate({ "description": "Represents a time format enum." }), "timeTrackingManual": Schema.optionalKey(Schema.Boolean), "timeZone": Schema.String.annotate({ "description": "Represents a valid timezone ID" }).check(Schema.isMinLength(1)), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "weeklyUpdates": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents user settings object." })
440
- export type ExpenseHydratedDto = { readonly "approvalRequestId"?: string, readonly "approvalStatus"?: "PENDING" | "APPROVED" | "UNSUBMITTED" | "REJECTED" | "WITHDRAWN_APPROVAL" | "WITHDRAWN_SUBMISSION", readonly "billable"?: boolean, readonly "category"?: ExpenseCategoryDto, readonly "currency"?: string, readonly "date"?: string, readonly "detailedApprovalStatus"?: "PENDING" | "APPROVED" | "UNSUBMITTED" | "REJECTED" | "WITHDRAWN_APPROVAL" | "WITHDRAWN_SUBMISSION", readonly "fileId"?: string, readonly "fileName"?: string, readonly "fileUrl"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "locked"?: boolean, readonly "notes"?: string, readonly "project"?: ProjectInfoDto, readonly "quantity"?: number, readonly "task"?: TaskInfoDto, readonly "total"?: number, readonly "userId"?: string, readonly "workspaceId"?: string }
441
- export const ExpenseHydratedDto = Schema.Struct({ "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the system." })), "approvalStatus": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "UNSUBMITTED", "REJECTED", "WITHDRAWN_APPROVAL", "WITHDRAWN_SUBMISSION"]).annotate({ "description": "Represents the approval status of the expense" })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "category": Schema.optionalKey(ExpenseCategoryDto), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a currency." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "detailedApprovalStatus": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "UNSUBMITTED", "REJECTED", "WITHDRAWN_APPROVAL", "WITHDRAWN_SUBMISSION"]).annotate({ "description": "Represents a detailed approval status of the expense" })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "fileName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file name." })), "fileUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file URL." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "locked": Schema.optionalKey(Schema.Boolean), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." })), "project": Schema.optionalKey(ProjectInfoDto), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense quantity as double data type.", "format": "double" }).check(Schema.isFinite())), "task": Schema.optionalKey(TaskInfoDto), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total as double data type.", "format": "double" }).check(Schema.isFinite())), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a list of expense hydrated data transfer objects." })
442
- export type ExpenseHydratedDtoV1 = { readonly "billable"?: boolean, readonly "category"?: ExpenseCategoryDto, readonly "date"?: string, readonly "fileId"?: string, readonly "fileName"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "locked"?: boolean, readonly "notes"?: string, readonly "project"?: ProjectInfoDto, readonly "quantity"?: number, readonly "task"?: TaskInfoDto, readonly "total"?: number, readonly "userId"?: string, readonly "workspaceId"?: string }
443
- export const ExpenseHydratedDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expense is billable or not." })), "category": Schema.optionalKey(ExpenseCategoryDto), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date in yyyy-MM-dd format." })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "fileName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file name." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "locked": Schema.optionalKey(Schema.Boolean), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents notes for an expense." })), "project": Schema.optionalKey(ProjectInfoDto), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense quantity as double data type.", "format": "double" }).check(Schema.isFinite())), "task": Schema.optionalKey(TaskInfoDto), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expense total as double data type.", "format": "double" }).check(Schema.isFinite())), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represent a list of hydrated expense objects." })
444
- export type TaskDtoV1 = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "billable"?: boolean, readonly "budgetEstimate"?: number, readonly "costRate"?: RateDtoV1, readonly "duration"?: string, readonly "estimate"?: string, readonly "hourlyRate"?: RateDtoV1, readonly "id"?: string, readonly "name"?: string, readonly "projectId"?: string, readonly "status"?: TaskStatus, readonly "userGroupIds"?: ReadonlyArray<string> }
445
- export const TaskDtoV1 = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique())), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a task is billable or not." })), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a task budget estimate as long.", "format": "int64" }).check(Schema.isInt())), "costRate": Schema.optionalKey(RateDtoV1), "duration": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration." })), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "status": Schema.optionalKey(TaskStatus), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique())) })
419
+ export const UpdateInvoiceSettingsRequestV1 = Schema.Struct({ "defaults": Schema.optionalKey(InvoiceDefaultSettingsRequestV1), "exportFields": Schema.optionalKey(InvoiceExportFieldsRequest), "labels": LabelsCustomizationRequest }).annotate({ "identifier": "UpdateInvoiceSettingsRequestV1" })
420
+ export type InvoiceItemDto = { readonly "amount"?: number, readonly "applyTaxes"?: ApplyTaxes, readonly "description"?: string, readonly "expenseIds"?: ReadonlyArray<string>, readonly "importType"?: "NOT_IMPORTED" | "TIME_ENTRY_IMPORT" | "EXPENSE_IMPORT", readonly "itemType"?: string, readonly "order"?: number, readonly "quantity"?: number, readonly "timeEntryIds"?: ReadonlyArray<string>, readonly "unitPrice"?: number }
421
+ export const InvoiceItemDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents item amount.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "applyTaxes": Schema.optionalKey(ApplyTaxes), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice item description." })), "expenseIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of imported expense ids." })).annotate({ "description": "Represents a list of imported expense ids." })), "importType": Schema.optionalKey(Schema.Literals(["NOT_IMPORTED", "TIME_ENTRY_IMPORT", "EXPENSE_IMPORT"]).annotate({ "description": "Represents the invoice item import type." })), "itemType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents item type." })), "order": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an integer.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents item quantity.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "timeEntryIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of imported time entry ids." })).annotate({ "description": "Represents a list of imported time entry ids." })), "unitPrice": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents item unit price.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "description": "Represents a list of invoice item datatransfer objects.", "identifier": "InvoiceItemDto" })
446
422
  export type UpdateInvoiceRequestV1 = { readonly "clientId"?: string, readonly "companyId"?: string, readonly "currency": string, readonly "discountPercent": number, readonly "dueDate": string, readonly "issuedDate": string, readonly "note"?: string, readonly "number": string, readonly "subject"?: string, readonly "tax2Percent": number, readonly "taxPercent": number, readonly "taxType"?: TaxType, readonly "visibleZeroFields"?: "TAX" | "TAX_2" | "DISCOUNT" }
447
- export const UpdateInvoiceRequestV1 = Schema.Struct({ "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "currency": Schema.String.annotate({ "description": "Represents the currency used by the invoice." }).check(Schema.isMinLength(1)).check(Schema.isMaxLength(100)), "discountPercent": Schema.Number.annotate({ "description": "Represents an invoice discount percent as double.", "format": "double" }).check(Schema.isFinite()), "dueDate": Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "issuedDate": Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice note." })), "number": Schema.String.annotate({ "description": "Represents an invoice number." }).check(Schema.isMinLength(1)), "subject": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice subject." })), "tax2Percent": Schema.Number.annotate({ "description": "Represents an invoice tax 2 percent as double.", "format": "double" }).check(Schema.isFinite()), "taxPercent": Schema.Number.annotate({ "description": "Represents an invoice tax percent as double.", "format": "double" }).check(Schema.isFinite()), "taxType": Schema.optionalKey(TaxType), "visibleZeroFields": Schema.optionalKey(Schema.Literals(["TAX", "TAX_2", "DISCOUNT"]).annotate({ "description": "Represents a list of zero value invoice fields that will be visible." })) })
448
- export type UpdateInvoicedStatusRequest = { readonly "invoiced": boolean, readonly "timeEntryIds": ReadonlyArray<TimeEntryId> }
449
- export const UpdateInvoicedStatusRequest = Schema.Struct({ "invoiced": Schema.Boolean.annotate({ "description": "Indicates whether time entry is invoiced or not." }), "timeEntryIds": Schema.Array(TimeEntryId).annotate({ "description": "Represents a list of invoiced time entry ids" }).check(Schema.isMinLength(1)).check(Schema.isUnique()) })
423
+ export const UpdateInvoiceRequestV1 = Schema.Struct({ "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "currency": Schema.String.annotate({ "description": "Represents the currency used by the invoice." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" })), "discountPercent": Schema.Number.annotate({ "description": "Represents an invoice discount percent as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })), "dueDate": Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "issuedDate": Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice note." })), "number": Schema.String.annotate({ "description": "Represents an invoice number." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "subject": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice subject." })), "tax2Percent": Schema.Number.annotate({ "description": "Represents an invoice tax 2 percent as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })), "taxPercent": Schema.Number.annotate({ "description": "Represents an invoice tax percent as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })), "taxType": Schema.optionalKey(TaxType), "visibleZeroFields": Schema.optionalKey(Schema.Literals(["TAX", "TAX_2", "DISCOUNT"]).annotate({ "description": "Represents a list of zero value invoice fields that will be visible." })) }).annotate({ "identifier": "UpdateInvoiceRequestV1" })
424
+ export type LimitedUserRequest = { readonly "costRate"?: number, readonly "hourlyRate"?: number, readonly "name": string, readonly "userCustomFields"?: ReadonlyArray<UpsertUserCustomFieldRequest>, readonly "userGroups"?: ReadonlyArray<string>, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workCapacity"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY" }
425
+ export const LimitedUserRequest = Schema.Struct({ "costRate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents cost rate of user. Example: 12300 for 123", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "hourlyRate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents hourly rate of user. Example: 12300 for 123", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "name": Schema.String.annotate({ "description": "Represents name of the user." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "userCustomFields": Schema.optionalKey(Schema.Array(UpsertUserCustomFieldRequest).annotate({ "description": "Represents a list of upsert user custom field request." })), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents the user group names of the user" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" }))).annotate({ "description": "Represents the user group names of the user" }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents work capacity as a time duration in the ISO-8601 format." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of days of the week." })) }).annotate({ "identifier": "LimitedUserRequest" })
426
+ export type MemberProfileFullRequestV1 = { readonly "imageUrl"?: string, readonly "name"?: string, readonly "removeProfileImage"?: boolean, readonly "userCustomFields"?: ReadonlyArray<UpsertUserCustomFieldRequest>, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workCapacity"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY" }
427
+ export const MemberProfileFullRequestV1 = Schema.Struct({ "imageUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an image url. A field that can only be updated for limited users." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "This body field is deprecated and can only be updated for limited users. Represents name of the user and can be changed on the CAKE.com Account profile page." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))), "removeProfileImage": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to remove profile image or not. A field that can only be updated for limited users." })), "userCustomFields": Schema.optionalKey(Schema.Array(UpsertUserCustomFieldRequest).annotate({ "description": "Represents a list of upsert user custom field objects." })), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents work capacity as a time duration in the ISO-8601 format. For example, for a 7hr work day, input should be PT7H." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of days of the week." })) }).annotate({ "identifier": "MemberProfileFullRequestV1" })
428
+ export type UpdateProjectRequest = { readonly "archived"?: boolean, readonly "billable"?: boolean, readonly "clientId"?: string, readonly "color"?: string, readonly "costRate"?: CostRateRequestV1, readonly "costRateSet"?: boolean, readonly "hourlyRate"?: HourlyRateRequestV1, readonly "hourlyRateSet"?: boolean, readonly "isPublic"?: boolean, readonly "name"?: string, readonly "note"?: string }
429
+ export const UpdateProjectRequest = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "costRate": Schema.optionalKey(CostRateRequestV1), "costRateSet": Schema.optionalKey(Schema.Boolean), "hourlyRate": Schema.optionalKey(HourlyRateRequestV1), "hourlyRateSet": Schema.optionalKey(Schema.Boolean), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is public or not.\n\n**Important note:** setting a project to private requires at least a Basic plan.\n If you are on a Free plan, you must explicitly set this value to `true`.\n You can upgrade your current plan to unlock private projects.\n" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project name." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(250).annotate({ "expected": "a value with a length of at most 250" }))), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project note." }).check(Schema.isMaxLength(16384).annotate({ "expected": "a value with a length of at most 16384" }))) }).annotate({ "identifier": "UpdateProjectRequest" })
430
+ export type UserIdWithRatesRequest = { readonly "costRate"?: CostRateRequestV1, readonly "hourlyRate"?: HourlyRateRequestV1, readonly "userId": string }
431
+ export const UserIdWithRatesRequest = Schema.Struct({ "costRate": Schema.optionalKey(CostRateRequestV1), "hourlyRate": Schema.optionalKey(HourlyRateRequestV1), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }) }).annotate({ "description": "Represents a list of users with id and rates request objects.", "identifier": "UserIdWithRatesRequest" })
432
+ export type MembershipRequest = { readonly "hourlyRate"?: HourlyRateRequest, readonly "membershipStatus"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "membershipType"?: "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "userId"?: string }
433
+ export const MembershipRequest = Schema.Struct({ "hourlyRate": Schema.optionalKey(HourlyRateRequest), "membershipStatus": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"]).annotate({ "description": "Represents a membership status enum." })), "membershipType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "PROJECT", "USERGROUP"]).annotate({ "description": "Represents membership type enum." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })) }).annotate({ "description": "Represents a list of membership request objects.", "identifier": "MembershipRequest" })
434
+ export type TaskRequest = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "billable"?: boolean, readonly "budgetEstimate"?: number, readonly "costRate"?: CostRateRequest, readonly "estimate"?: string, readonly "hourlyRate"?: HourlyRateRequest, readonly "id"?: string, readonly "name": string, readonly "projectId"?: string, readonly "status"?: string, readonly "userGroupIds"?: ReadonlyArray<string> }
435
+ export const TaskRequest = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether task is billable or not" })), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "costRate": Schema.optionalKey(CostRateRequest), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "hourlyRate": Schema.optionalKey(HourlyRateRequest), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.String.annotate({ "description": "Represents task name." }), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "status": Schema.optionalKey(Schema.String), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Represents a list of task request objects.", "identifier": "TaskRequest" })
450
436
  export type ProjectEstimateRequest = { readonly "budgetEstimate"?: EstimateWithOptionsRequest, readonly "estimateReset"?: EstimateResetRequest, readonly "timeEstimate"?: TimeEstimateRequest }
451
- export const ProjectEstimateRequest = Schema.Struct({ "budgetEstimate": Schema.optionalKey(EstimateWithOptionsRequest), "estimateReset": Schema.optionalKey(EstimateResetRequest), "timeEstimate": Schema.optionalKey(TimeEstimateRequest) })
452
- export type TimeEntryInfoDto = { readonly "approvalRequestId"?: string, readonly "billable"?: boolean, readonly "costRate"?: RateDto, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDto>, readonly "description"?: string, readonly "hourlyRate"?: RateDto, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "project"?: ProjectInfoDto, readonly "tags"?: ReadonlyArray<TagDto>, readonly "task"?: TaskInfoDto, readonly "timeInterval"?: TimeIntervalDto, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF" }
453
- export const TimeEntryInfoDto = Schema.Struct({ "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval identifier across the system." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time entry is billable or not." })), "costRate": Schema.optionalKey(RateDto), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDto).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry description." })), "hourlyRate": Schema.optionalKey(RateDto), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time entry is locked or not." })), "project": Schema.optionalKey(ProjectInfoDto), "tags": Schema.optionalKey(Schema.Array(TagDto).annotate({ "description": "Represents a list of tag objects." })), "task": Schema.optionalKey(TaskInfoDto), "timeInterval": Schema.optionalKey(TimeIntervalDto), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })) }).annotate({ "description": "Represents a list of time entry info data transfer objects." })
454
- export type TimeEntryWithCustomFieldsDto = { readonly "billable"?: boolean, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDto>, readonly "description"?: string, readonly "id"?: string, readonly "projectId"?: string, readonly "tagIds"?: ReadonlyArray<string>, readonly "taskId"?: string, readonly "timeInterval"?: TimeIntervalDto, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId"?: string, readonly "workspaceId"?: string }
455
- export const TimeEntryWithCustomFieldsDto = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." })), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDto).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry description." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry identifier across the system." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag identifiers across the system." })).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "timeInterval": Schema.optionalKey(TimeIntervalDto), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) }).annotate({ "description": "Represents a set of template time entries." })
456
- export type TimeEntryDtoImplV1 = { readonly "billable": boolean, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDtoV1>, readonly "description": string, readonly "id": string, readonly "isLocked"?: boolean, readonly "kioskId"?: string | null, readonly "projectId"?: string | null, readonly "tagIds"?: ReadonlyArray<string> | null, readonly "taskId"?: string | null, readonly "timeInterval": TimeIntervalDtoV1, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId": string, readonly "workspaceId": string }
457
- export const TimeEntryDtoImplV1 = Schema.Struct({ "billable": Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." }), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDtoV1).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.String.annotate({ "description": "Represents time entry description." }), "id": Schema.String.annotate({ "description": "Represents time entry identifier across the system." }), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether time entry is locked for modification." })), "kioskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents kiosk identifier across the system." })), "projectId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Union([Schema.Array(Schema.String), Schema.Null]).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents task identifier across the system." })), "timeInterval": TimeIntervalDtoV1, "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) })
458
- export type TimeEntryDtoV1 = { readonly "billable"?: boolean, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDtoV1>, readonly "description"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "kioskId"?: string | null, readonly "projectId"?: string | null, readonly "tagIds"?: ReadonlyArray<string> | null, readonly "taskId"?: string | null, readonly "timeInterval"?: TimeIntervalDtoV1, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId"?: string, readonly "workspaceId"?: string }
459
- export const TimeEntryDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." })), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDtoV1).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry description." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether time entry is locked for modification." })), "kioskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents kiosk identifier across the system." })), "projectId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Union([Schema.Array(Schema.String), Schema.Null]).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents task identifier across the system." })), "timeInterval": Schema.optionalKey(TimeIntervalDtoV1), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
460
- export type TimeEntryWithRatesDtoV1 = { readonly "billable": boolean, readonly "costRate"?: RateDtoV1, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDtoV1>, readonly "description": string, readonly "hourlyRate"?: RateDtoV1, readonly "id": string, readonly "isLocked"?: boolean, readonly "kioskId"?: string | null, readonly "projectId"?: string | null, readonly "tagIds"?: ReadonlyArray<string> | null, readonly "taskId"?: string | null, readonly "timeInterval": TimeIntervalDtoV1, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId": string, readonly "workspaceId": string }
461
- export const TimeEntryWithRatesDtoV1 = Schema.Struct({ "billable": Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." }), "costRate": Schema.optionalKey(RateDtoV1), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDtoV1).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.String.annotate({ "description": "Represents time entry description." }), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.String.annotate({ "description": "Represents time entry identifier across the system." }), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether time entry is locked for modification." })), "kioskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents kiosk identifier across the system." })), "projectId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Union([Schema.Array(Schema.String), Schema.Null]).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents task identifier across the system." })), "timeInterval": TimeIntervalDtoV1, "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) })
462
- export type InvoiceFilterRequestV1 = { readonly "clients"?: ContainsArchivedFilterRequest, readonly "companies"?: BaseFilterRequest, readonly "exactAmount"?: number, readonly "exactBalance"?: number, readonly "greaterThanAmount"?: number, readonly "greaterThanBalance"?: number, readonly "invoiceNumber"?: string, readonly "issueDate"?: TimeRangeRequestDtoV1, readonly "lessThanAmount"?: number, readonly "lessThanBalance"?: number, readonly "page"?: number, readonly "pageSize"?: number, readonly "sortColumn"?: "ID" | "CLIENT" | "DUE_ON" | "ISSUE_DATE" | "AMOUNT" | "BALANCE", readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "statuses"?: ReadonlyArray<"UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE">, readonly "strictSearch"?: boolean }
463
- export const InvoiceFilterRequestV1 = Schema.Struct({ "clients": Schema.optionalKey(ContainsArchivedFilterRequest), "companies": Schema.optionalKey(BaseFilterRequest), "exactAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount. If provided, you'll get a filtered list of invoices that has the equal amount as specified.", "format": "int64" }).check(Schema.isInt())), "exactBalance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance. If provided, you'll get a filtered list of invoices that has the equal balance as specified.", "format": "int64" }).check(Schema.isInt())), "greaterThanAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount. If provided, you'll get a filtered list of invoices that has amount greater than specified.", "format": "int64" }).check(Schema.isInt())), "greaterThanBalance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance. If provided, you'll get a filtered list of invoices that has balance greater than specified.", "format": "int64" }).check(Schema.isInt())), "invoiceNumber": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of invoices that contain the provided string in their invoice number." })), "issueDate": Schema.optionalKey(TimeRangeRequestDtoV1), "lessThanAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount. If provided, you'll get a filtered list of invoices that has amount less than specified.", "format": "int64" }).check(Schema.isInt())), "lessThanBalance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance. If provided, you'll get a filtered list of invoices that has balance less than specified.", "format": "int64" }).check(Schema.isInt())), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt())), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "CLIENT", "DUE_ON", "ISSUE_DATE", "AMOUNT", "BALANCE"]).annotate({ "description": "Represents the column name to be used as sorting criteria." })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "Represents the sorting order." })), "statuses": Schema.optionalKey(Schema.Array(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents a list of invoice statuses. If provided, you'll get a filtered list of invoices that matches any of the invoice status provided." })).annotate({ "description": "Represents a list of invoice statuses. If provided, you'll get a filtered list of invoices that matches any of the invoice status provided." })), "strictSearch": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by invoice number only will return invoices whose number exactly matches the string value given for the 'invoiceNumber' parameter. When set to false, results will also include invoices whose number contain the string value, but could be longer than the string value itself. For example, if there is an invoice with the number '123456', and the search value is '123', setting strict-name-search to true will not return that invoice in the results, whereas setting it to false will." })) })
437
+ export const ProjectEstimateRequest = Schema.Struct({ "budgetEstimate": Schema.optionalKey(EstimateWithOptionsRequest), "estimateReset": Schema.optionalKey(EstimateResetRequest), "timeEstimate": Schema.optionalKey(TimeEstimateRequest) }).annotate({ "identifier": "ProjectEstimateRequest" })
438
+ export type TaskDtoV1 = { readonly "assigneeId"?: string, readonly "assigneeIds"?: ReadonlyArray<string>, readonly "billable"?: boolean, readonly "budgetEstimate"?: number, readonly "costRate"?: RateDtoV1, readonly "duration"?: string, readonly "estimate"?: string, readonly "hourlyRate"?: RateDtoV1, readonly "id"?: string, readonly "name"?: string, readonly "projectId"?: string, readonly "status"?: TaskStatus, readonly "userGroupIds"?: ReadonlyArray<string> }
439
+ export const TaskDtoV1 = Schema.Struct({ "assigneeId": Schema.optionalKey(Schema.String), "assigneeIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of assignee ids for the task." })).annotate({ "description": "Represents list of assignee ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a task is billable or not." })), "budgetEstimate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents a task budget estimate as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "costRate": Schema.optionalKey(RateDtoV1), "duration": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration." })), "estimate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task duration estimate." })), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "status": Schema.optionalKey(TaskStatus), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents list of user group ids for the task." })).annotate({ "description": "Represents list of user group ids for the task." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "TaskDtoV1" })
440
+ export type SchedulingProjectsTotalsDtoV1 = { readonly "assignments"?: ReadonlyArray<AssignmentPerDayDto>, readonly "clientName"?: string, readonly "milestones"?: ReadonlyArray<MilestoneDto>, readonly "projectArchived"?: boolean, readonly "projectBillable"?: boolean, readonly "projectColor"?: string, readonly "projectId"?: string, readonly "projectName"?: string, readonly "taskId"?: string, readonly "taskName"?: string, readonly "totalHours"?: number, readonly "workspaceId"?: string }
441
+ export const SchedulingProjectsTotalsDtoV1 = Schema.Struct({ "assignments": Schema.optionalKey(Schema.Array(AssignmentPerDayDto).annotate({ "description": "Represents a list of assignment per day objects." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "milestones": Schema.optionalKey(Schema.Array(MilestoneDto).annotate({ "description": "Represents a list of milestone objects." })), "projectArchived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." })), "projectBillable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "taskName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "totalHours": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents project total hours as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "SchedulingProjectsTotalsDtoV1" })
442
+ export type PublishAssignmentsRequestV1 = { readonly "end": string, readonly "notifyUsers"?: boolean, readonly "search"?: string, readonly "start": string, readonly "userFilter"?: ContainsUsersFilterRequestV1, readonly "userGroupFilter"?: ContainsUserGroupFilterRequestV1, readonly "viewType"?: "PROJECTS" | "TEAM" | "ALL" }
443
+ export const PublishAssignmentsRequestV1 = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents end date in yyyy-MM-ddThh:mm:ssZ format." }), "notifyUsers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to notify users when assignment is published." })), "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a search string." })), "start": Schema.String.annotate({ "description": "Represents start date in yyyy-MM-ddThh:mm:ssZ format." }), "userFilter": Schema.optionalKey(ContainsUsersFilterRequestV1), "userGroupFilter": Schema.optionalKey(ContainsUserGroupFilterRequestV1), "viewType": Schema.optionalKey(Schema.Literals(["PROJECTS", "TEAM", "ALL"]).annotate({ "description": "Represents view type." })) }).annotate({ "identifier": "PublishAssignmentsRequestV1" })
444
+ export type GetUserTotalsRequestV1 = { readonly "end": string, readonly "page"?: number, readonly "pageSize"?: number, readonly "search"?: string, readonly "start": string, readonly "statusFilter"?: "PUBLISHED" | "UNPUBLISHED" | "ALL", readonly "userFilter"?: ContainsUsersFilterRequestV1, readonly "userGroupFilter"?: ContainsUserGroupFilterRequestV1 }
445
+ export const GetUserTotalsRequestV1 = Schema.Struct({ "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isLessThanOrEqualTo(200).annotate({ "expected": "a value less than or equal to 200" }))), "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the keyword for searching users by name or email." })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "statusFilter": Schema.optionalKey(Schema.Literals(["PUBLISHED", "UNPUBLISHED", "ALL"]).annotate({ "description": "Filters assignments by status." })), "userFilter": Schema.optionalKey(ContainsUsersFilterRequestV1), "userGroupFilter": Schema.optionalKey(ContainsUserGroupFilterRequestV1) }).annotate({ "identifier": "GetUserTotalsRequestV1" })
446
+ export type RecurringAssignmentDtoV1 = { readonly "frequency": RecurringFrequency, readonly "interval"?: number, readonly "monthlyRecurringType"?: MonthlyRecurringType, readonly "occurrences"?: number, readonly "repeat"?: boolean, readonly "seriesId"?: string, readonly "until"?: string, readonly "weeks"?: number }
447
+ export const RecurringAssignmentDtoV1 = Schema.Struct({ "frequency": RecurringFrequency, "interval": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents interval for recurring (1 - every week/month, 2 - biweekly).", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(2).annotate({ "expected": "a value less than or equal to 2" }))), "monthlyRecurringType": Schema.optionalKey(MonthlyRecurringType), "occurrences": Schema.optionalKey(Schema.Number.annotate({ "description": "Number of occurrences", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(99).annotate({ "expected": "a value less than or equal to 99" }))), "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the assignment is recurring. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `until`, and `occurrences`." })), "seriesId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents series identifier." })), "until": Schema.optionalKey(Schema.String.annotate({ "description": "Date by which recurring assignments will be created", "format": "date-time" })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for this assignment. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `until`, and `occurrences`.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "description": "Represents recurring assignment object.", "identifier": "RecurringAssignmentDtoV1" })
448
+ export type CreateRecurringAssignmentRequestV1 = { readonly "frequency"?: RecurringFrequency, readonly "interval"?: number | null, readonly "monthlyRecurringType"?: MonthlyRecurringType, readonly "occurrences"?: number | null, readonly "recurringEndType"?: RecurringEndType, readonly "repeat"?: boolean, readonly "until"?: string, readonly "weeks"?: number }
449
+ export const CreateRecurringAssignmentRequestV1 = Schema.Struct({ "frequency": Schema.optionalKey(RecurringFrequency), "interval": Schema.optionalKey(Schema.Union([Schema.Number.check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(2).annotate({ "expected": "a value less than or equal to 2" })), Schema.Null]).annotate({ "description": "Represents interval for recurring (1 - every week/month, 2 - biweekly).", "format": "int32" })), "monthlyRecurringType": Schema.optionalKey(MonthlyRecurringType), "occurrences": Schema.optionalKey(Schema.Union([Schema.Number.check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(99).annotate({ "expected": "a value less than or equal to 99" })), Schema.Null]).annotate({ "description": "Indicates number of occurrences for assignment.", "format": "int32" })), "recurringEndType": Schema.optionalKey(RecurringEndType), "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the assignment is recurring. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`." })), "until": Schema.optionalKey(Schema.String.annotate({ "description": "Date by which recurring assignments will be created", "format": "date-time" })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for this assignment. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "CreateRecurringAssignmentRequestV1" })
450
+ export type RecurringAssignmentRequestV1 = { readonly "frequency"?: RecurringFrequency, readonly "interval"?: number | null, readonly "monthlyRecurringType"?: MonthlyRecurringType, readonly "occurrences"?: number | null, readonly "recurringEndType"?: RecurringEndType, readonly "repeat"?: boolean, readonly "until"?: string, readonly "weeks"?: number }
451
+ export const RecurringAssignmentRequestV1 = Schema.Struct({ "frequency": Schema.optionalKey(RecurringFrequency), "interval": Schema.optionalKey(Schema.Union([Schema.Number.check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(2).annotate({ "expected": "a value less than or equal to 2" })), Schema.Null]).annotate({ "description": "Represents interval for recurring (1 - every week/month, 2 - biweekly).", "format": "int32" })), "monthlyRecurringType": Schema.optionalKey(MonthlyRecurringType), "occurrences": Schema.optionalKey(Schema.Union([Schema.Number.check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(99).annotate({ "expected": "a value less than or equal to 99" })), Schema.Null]).annotate({ "description": "Indicates number of occurrences for assignment.", "format": "int32" })), "recurringEndType": Schema.optionalKey(RecurringEndType), "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the assignment is recurring. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`." })), "until": Schema.optionalKey(Schema.String.annotate({ "description": "Date by which recurring assignments will be created", "format": "date-time" })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for this assignment. This field is deprecated in favor of a more flexible recurrence model. To define recurrence, use the following fields instead: `frequency`, `interval`, `monthlyRecurringType`, `recurringEndType`, `until`, and `occurrences`.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "RecurringAssignmentRequestV1" })
464
452
  export type SchedulingUsersTotalsDtoV1 = { readonly "capacityPerDay"?: number, readonly "totalHoursPerDay"?: ReadonlyArray<TotalsPerDayDto>, readonly "userId"?: string, readonly "userImage"?: string, readonly "userName"?: string, readonly "userStatus"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workspaceId"?: string }
465
- export const SchedulingUsersTotalsDtoV1 = Schema.Struct({ "capacityPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents capacity per day in seconds. For a 7hr work day, value is 25200.", "format": "double" }).check(Schema.isFinite())), "totalHoursPerDay": Schema.optionalKey(Schema.Array(TotalsPerDayDto).annotate({ "description": "Represents total hours per day object." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userImage": Schema.optionalKey(Schema.String.annotate({ "description": "Represents url path to user image." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })), "userStatus": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user status." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents list of days of the week." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
453
+ export const SchedulingUsersTotalsDtoV1 = Schema.Struct({ "capacityPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents capacity per day in seconds. For a 7hr work day, value is 25200.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "totalHoursPerDay": Schema.optionalKey(Schema.Array(TotalsPerDayDto).annotate({ "description": "Represents total hours per day object." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userImage": Schema.optionalKey(Schema.String.annotate({ "description": "Represents url path to user image." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user name." })), "userStatus": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user status." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents list of days of the week." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "SchedulingUsersTotalsDtoV1" })
454
+ export type TemplateRequest = { readonly "name": string, readonly "projectsAndTasks": ReadonlyArray<ProjectTaskTupleRequest>, readonly "timeEntryIds"?: ReadonlyArray<string>, readonly "timeViewMode"?: string, readonly "weekStart"?: string }
455
+ export const TemplateRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents a template name." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "projectsAndTasks": Schema.Array(ProjectTaskTupleRequest).annotate({ "description": "Represents a list of template's projects and tasks." }), "timeEntryIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a set of template time entry ids." })).annotate({ "description": "Represents a set of template time entry ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "timeViewMode": Schema.optionalKey(Schema.String), "weekStart": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a date of the starting day of the week in the yyyy-MM-dd format.", "format": "date" })) }).annotate({ "identifier": "TemplateRequest" })
466
456
  export type CreateTimeEntryRequest = { readonly "billable"?: boolean, readonly "customAttributes"?: ReadonlyArray<CreateCustomAttributeRequest>, readonly "customFields"?: ReadonlyArray<UpdateCustomFieldRequest>, readonly "description": string, readonly "end"?: string, readonly "projectId"?: string, readonly "start": string, readonly "tagIds"?: ReadonlyArray<string>, readonly "taskId"?: string, readonly "type"?: "REGULAR" | "BREAK" }
467
- export const CreateTimeEntryRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable or not." })), "customAttributes": Schema.optionalKey(Schema.Array(CreateCustomAttributeRequest).annotate({ "description": "Represents a list of create custom field request objects." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(10))), "customFields": Schema.optionalKey(Schema.Array(UpdateCustomFieldRequest).annotate({ "description": "Represents a list of values for time entry custom fields defined in the workspace settings." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(50))), "description": Schema.String.annotate({ "description": "Represents time entry description." }).check(Schema.isMaxLength(3000)), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "start": Schema.String.annotate({ "description": "Represents a start date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag ids." })).annotate({ "description": "Represents a list of tag ids." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK"]).annotate({ "description": "Valid time entry type." })) })
468
- export type UpdateTimeEntryBulkRequest = { readonly "billable"?: boolean, readonly "customFields"?: ReadonlyArray<UpdateCustomFieldRequest>, readonly "description"?: string, readonly "end"?: string, readonly "id": string, readonly "projectId"?: string, readonly "start"?: string, readonly "tagIds"?: ReadonlyArray<string>, readonly "taskId"?: string, readonly "type"?: "REGULAR" | "BREAK" }
469
- export const UpdateTimeEntryBulkRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable or not." })), "customFields": Schema.optionalKey(Schema.Array(UpdateCustomFieldRequest).check(Schema.isMinLength(0)).check(Schema.isMaxLength(50))), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry description." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.String.annotate({ "description": "Represents a time entry identifier across the system." }).check(Schema.isMinLength(1)), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag ids." })).annotate({ "description": "Represents a list of tag ids." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK"])) })
457
+ export const CreateTimeEntryRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable or not." })), "customAttributes": Schema.optionalKey(Schema.Array(CreateCustomAttributeRequest).annotate({ "description": "Represents a list of create custom field request objects." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(10).annotate({ "expected": "a value with a length of at most 10" }))), "customFields": Schema.optionalKey(Schema.Array(UpdateCustomFieldRequest).annotate({ "description": "Represents a list of values for time entry custom fields defined in the workspace settings." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(50).annotate({ "expected": "a value with a length of at most 50" }))), "description": Schema.String.annotate({ "description": "Represents time entry description." }).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" })), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "start": Schema.String.annotate({ "description": "Represents a start date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag ids." })).annotate({ "description": "Represents a list of tag ids." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK"]).annotate({ "description": "Valid time entry type." })) }).annotate({ "identifier": "CreateTimeEntryRequest" })
470
458
  export type UpdateTimeEntryRequest = { readonly "billable"?: boolean, readonly "customFields"?: ReadonlyArray<UpdateCustomFieldRequest>, readonly "description"?: string, readonly "end"?: string, readonly "projectId"?: string, readonly "start": string, readonly "tagIds"?: ReadonlyArray<string>, readonly "taskId"?: string, readonly "type"?: "REGULAR" | "BREAK" }
471
- export const UpdateTimeEntryRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable or not." })), "customFields": Schema.optionalKey(Schema.Array(UpdateCustomFieldRequest).annotate({ "description": "Represents a list of value objects for user’s custom fields." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(50))), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry description." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(3000))), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "start": Schema.String.annotate({ "description": "Represents a start date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag ids." })).annotate({ "description": "Represents a list of tag ids." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK"])) })
472
- export type LimitedUserRequest = { readonly "costRate"?: number, readonly "hourlyRate"?: number, readonly "name": string, readonly "userCustomFields"?: ReadonlyArray<UpsertUserCustomFieldRequest>, readonly "userGroups"?: ReadonlyArray<string>, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workCapacity"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY" }
473
- export const LimitedUserRequest = Schema.Struct({ "costRate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents cost rate of user. Example: 12300 for 123", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "hourlyRate": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents hourly rate of user. Example: 12300 for 123", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "name": Schema.String.annotate({ "description": "Represents name of the user." }).check(Schema.isMinLength(1)), "userCustomFields": Schema.optionalKey(Schema.Array(UpsertUserCustomFieldRequest).annotate({ "description": "Represents a list of upsert user custom field request." })), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents the user group names of the user" }).check(Schema.isMinLength(1))).annotate({ "description": "Represents the user group names of the user" }).check(Schema.isUnique())), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents work capacity as a time duration in the ISO-8601 format." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of days of the week." })) })
474
- export type MemberProfileFullRequestV1 = { readonly "imageUrl"?: string, readonly "name"?: string, readonly "removeProfileImage"?: boolean, readonly "userCustomFields"?: ReadonlyArray<UpsertUserCustomFieldRequest>, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workCapacity"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY" }
475
- export const MemberProfileFullRequestV1 = Schema.Struct({ "imageUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an image url. A field that can only be updated for limited users." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "This body field is deprecated and can only be updated for limited users. Represents name of the user and can be changed on the CAKE.com Account profile page." }).check(Schema.isMinLength(1)).check(Schema.isMaxLength(100))), "removeProfileImage": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to remove profile image or not. A field that can only be updated for limited users." })), "userCustomFields": Schema.optionalKey(Schema.Array(UpsertUserCustomFieldRequest).annotate({ "description": "Represents a list of upsert user custom field objects." })), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents work capacity as a time duration in the ISO-8601 format. For example, for a 7hr work day, input should be PT7H." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of days of the week." })) })
476
- export type AddUsersToProjectRequestV1 = { readonly "remove"?: boolean, readonly "userGroups"?: UserGroupIdsSchema, readonly "userIds"?: ReadonlyArray<string> }
477
- export const AddUsersToProjectRequestV1 = Schema.Struct({ "remove": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Setting this flag to 'true' will remove the given users from the project." })), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents array of user ids which should be added/removed." })).annotate({ "description": "Represents array of user ids which should be added/removed." })) })
459
+ export const UpdateTimeEntryRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable or not." })), "customFields": Schema.optionalKey(Schema.Array(UpdateCustomFieldRequest).annotate({ "description": "Represents a list of value objects for user’s custom fields." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(50).annotate({ "expected": "a value with a length of at most 50" }))), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry description." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "start": Schema.String.annotate({ "description": "Represents a start date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" }), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag ids." })).annotate({ "description": "Represents a list of tag ids." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK"])) }).annotate({ "identifier": "UpdateTimeEntryRequest" })
460
+ export type UpdateTimeEntryBulkRequest = { readonly "billable"?: boolean, readonly "customFields"?: ReadonlyArray<UpdateCustomFieldRequest>, readonly "description"?: string, readonly "end"?: string, readonly "id": string, readonly "projectId"?: string, readonly "start"?: string, readonly "tagIds"?: ReadonlyArray<string>, readonly "taskId"?: string, readonly "type"?: "REGULAR" | "BREAK" }
461
+ export const UpdateTimeEntryBulkRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable or not." })), "customFields": Schema.optionalKey(Schema.Array(UpdateCustomFieldRequest).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(50).annotate({ "expected": "a value with a length of at most 50" }))), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry description." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(3000).annotate({ "expected": "a value with a length of at most 3000" }))), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.String.annotate({ "description": "Represents a time entry identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project identifier across the system." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "tagIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of tag ids." })).annotate({ "description": "Represents a list of tag ids." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK"])) }).annotate({ "identifier": "UpdateTimeEntryBulkRequest" })
462
+ export type TimeEntryDtoImplV1 = { readonly "billable": boolean, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDtoV1>, readonly "description": string, readonly "id": string, readonly "isLocked"?: boolean, readonly "kioskId"?: string | null, readonly "projectId"?: string | null, readonly "tagIds"?: ReadonlyArray<string> | null, readonly "taskId"?: string | null, readonly "timeInterval": TimeIntervalDtoV1, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId": string, readonly "workspaceId": string }
463
+ export const TimeEntryDtoImplV1 = Schema.Struct({ "billable": Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." }), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDtoV1).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.String.annotate({ "description": "Represents time entry description." }), "id": Schema.String.annotate({ "description": "Represents time entry identifier across the system." }), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether time entry is locked for modification." })), "kioskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents kiosk identifier across the system." })), "projectId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Union([Schema.Array(Schema.String), Schema.Null]).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents task identifier across the system." })), "timeInterval": TimeIntervalDtoV1, "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) }).annotate({ "identifier": "TimeEntryDtoImplV1" })
464
+ export type TimeEntryWithRatesDtoV1 = { readonly "billable": boolean, readonly "costRate"?: RateDtoV1, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDtoV1>, readonly "description": string, readonly "hourlyRate"?: RateDtoV1, readonly "id": string, readonly "isLocked"?: boolean, readonly "kioskId"?: string | null, readonly "projectId"?: string | null, readonly "tagIds"?: ReadonlyArray<string> | null, readonly "taskId"?: string | null, readonly "timeInterval": TimeIntervalDtoV1, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId": string, readonly "workspaceId": string }
465
+ export const TimeEntryWithRatesDtoV1 = Schema.Struct({ "billable": Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." }), "costRate": Schema.optionalKey(RateDtoV1), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDtoV1).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.String.annotate({ "description": "Represents time entry description." }), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.String.annotate({ "description": "Represents time entry identifier across the system." }), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether time entry is locked for modification." })), "kioskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents kiosk identifier across the system." })), "projectId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Union([Schema.Array(Schema.String), Schema.Null]).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents task identifier across the system." })), "timeInterval": TimeIntervalDtoV1, "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "workspaceId": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }) }).annotate({ "identifier": "TimeEntryWithRatesDtoV1" })
466
+ export type TimeEntryDtoV1 = { readonly "billable"?: boolean, readonly "customFieldValues"?: ReadonlyArray<CustomFieldValueDtoV1>, readonly "description"?: string, readonly "id"?: string, readonly "isLocked"?: boolean, readonly "kioskId"?: string | null, readonly "projectId"?: string | null, readonly "tagIds"?: ReadonlyArray<string> | null, readonly "taskId"?: string | null, readonly "timeInterval"?: TimeIntervalDtoV1, readonly "type"?: "REGULAR" | "BREAK" | "HOLIDAY" | "TIME_OFF", readonly "userId"?: string, readonly "workspaceId"?: string }
467
+ export const TimeEntryDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether a time entry is billable." })), "customFieldValues": Schema.optionalKey(Schema.Array(CustomFieldValueDtoV1).annotate({ "description": "Represents a list of custom field value objects." })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry description." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry identifier across the system." })), "isLocked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Represents whether time entry is locked for modification." })), "kioskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents kiosk identifier across the system." })), "projectId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents project identifier across the system." })), "tagIds": Schema.optionalKey(Schema.Union([Schema.Array(Schema.String), Schema.Null]).annotate({ "description": "Represents a list of tag identifiers across the system." })), "taskId": Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]).annotate({ "description": "Represents task identifier across the system." })), "timeInterval": Schema.optionalKey(TimeIntervalDtoV1), "type": Schema.optionalKey(Schema.Literals(["REGULAR", "BREAK", "HOLIDAY", "TIME_OFF"]).annotate({ "description": "Represents a time entry type enum." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "TimeEntryDtoV1" })
468
+ export type UpdateInvoicedStatusRequest = { readonly "invoiced": boolean, readonly "timeEntryIds": ReadonlyArray<TimeEntryId> }
469
+ export const UpdateInvoicedStatusRequest = Schema.Struct({ "invoiced": Schema.Boolean.annotate({ "description": "Indicates whether time entry is invoiced or not." }), "timeEntryIds": Schema.Array(TimeEntryId).annotate({ "description": "Represents a list of invoiced time entry ids" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isUnique().annotate({ "expected": "an array with unique items" })) }).annotate({ "identifier": "UpdateInvoicedStatusRequest" })
470
+ export type CreateBalanceAssignmentV1Request = { readonly "balance": number, readonly "dateRange"?: DateRangeV1Request, readonly "note"?: string, readonly "policyId": string, readonly "userIds": ReadonlyArray<string> }
471
+ export const CreateBalanceAssignmentV1Request = Schema.Struct({ "balance": Schema.Number.annotate({ "description": "Represents the amount of balance to be created", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isLessThanOrEqualTo(10000).annotate({ "expected": "a value less than or equal to 10000" })), "dateRange": Schema.optionalKey(DateRangeV1Request), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents note attached to updating balance." })), "policyId": Schema.String.annotate({ "description": "Represents the identifier of the policy where the balance assignment will be created" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "userIds": Schema.Array(Schema.String.annotate({ "description": "Represents list of users' identifiers whose balance is to be updated." })).annotate({ "description": "Represents list of users' identifiers whose balance is to be updated." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isUnique().annotate({ "expected": "an array with unique items" })) }).annotate({ "identifier": "CreateBalanceAssignmentV1Request" })
472
+ export type UpdateBalanceAssignmentV1Request = { readonly "balanceChange": number, readonly "dateRange"?: DateRangeV1Request, readonly "note"?: string }
473
+ export const UpdateBalanceAssignmentV1Request = Schema.Struct({ "balanceChange": Schema.Number.annotate({ "description": "Represents the change in balance of the balance assignment", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isGreaterThanOrEqualTo(-10000).annotate({ "expected": "a value greater than or equal to -10000" })).check(Schema.isLessThanOrEqualTo(10000).annotate({ "expected": "a value less than or equal to 10000" })), "dateRange": Schema.optionalKey(DateRangeV1Request), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents note attached to updating balance." })) }).annotate({ "identifier": "UpdateBalanceAssignmentV1Request" })
474
+ export type UpdateBalanceRequestV1 = { readonly "dateRange"?: DateRangeV1Request, readonly "note"?: string, readonly "sync"?: boolean, readonly "userIds": ReadonlyArray<string>, readonly "value": number }
475
+ export const UpdateBalanceRequestV1 = Schema.Struct({ "dateRange": Schema.optionalKey(DateRangeV1Request), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a new balance note value." })), "sync": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the call should be executed synchronously. By default, call is done asynchronously" })), "userIds": Schema.Array(Schema.String.annotate({ "description": "Represents the list of users' identifiers whose balance is to be updated." })).annotate({ "description": "Represents the list of users' identifiers whose balance is to be updated." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isUnique().annotate({ "expected": "an array with unique items" })), "value": Schema.Number.annotate({ "description": "Represents the change in balance value.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })).check(Schema.isGreaterThanOrEqualTo(-10000).annotate({ "expected": "a value greater than or equal to -10000" })).check(Schema.isLessThanOrEqualTo(10000).annotate({ "expected": "a value less than or equal to 10000" })) }).annotate({ "identifier": "UpdateBalanceRequestV1" })
476
+ export type TimeOffRequestPeriodV1Request = { readonly "halfDayPeriod"?: "FIRST_HALF" | "SECOND_HALF" | "NOT_DEFINED", readonly "isHalfDay"?: boolean, readonly "period": PeriodV1Request, readonly "timeOffHalfDayPeriod"?: "FIRST_HALF" | "SECOND_HALF" | "NOT_DEFINED" }
477
+ export const TimeOffRequestPeriodV1Request = Schema.Struct({ "halfDayPeriod": Schema.optionalKey(Schema.Literals(["FIRST_HALF", "SECOND_HALF", "NOT_DEFINED"]).annotate({ "description": "Represents the half day period." })), "isHalfDay": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time off is half day." })), "period": PeriodV1Request, "timeOffHalfDayPeriod": Schema.optionalKey(Schema.Literals(["FIRST_HALF", "SECOND_HALF", "NOT_DEFINED"])) }).annotate({ "description": "Provide the period you would like to use for creating the time off request. If `timeZone` isn't set, should be aligned with time zone for user in settings. Can be shifted from user time zone with explicit setting of `timeZone`.", "identifier": "TimeOffRequestPeriodV1Request" })
478
+ export type TimeOffRequestPeriodDto = { readonly "halfDay"?: boolean, readonly "halfDayHours"?: Period, readonly "halfDayPeriod"?: string, readonly "period"?: Period }
479
+ export const TimeOffRequestPeriodDto = Schema.Struct({ "halfDay": Schema.optionalKey(Schema.Boolean), "halfDayHours": Schema.optionalKey(Period), "halfDayPeriod": Schema.optionalKey(Schema.String), "period": Schema.optionalKey(Period) }).annotate({ "description": "Represents the period the time off request.", "identifier": "TimeOffRequestPeriodDto" })
478
480
  export type UserGroupDtoV1 = { readonly "id"?: string, readonly "name"?: string, readonly "teamManagers"?: ReadonlyArray<UserRedactedDtoV1>, readonly "userIds"?: ReadonlyArray<string>, readonly "workspaceId"?: string }
479
- export const UserGroupDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group name." })), "teamManagers": Schema.optionalKey(Schema.Array(UserRedactedDtoV1).annotate({ "description": "Represents a list of assigned team managers for this user group." })), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of users' identifiers across the system." })).annotate({ "description": "Represents a list of users' identifiers across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) })
480
- export type InvoiceInfoV1 = { readonly "amount"?: number, readonly "balance"?: number, readonly "billFrom"?: string, readonly "clientId"?: string, readonly "clientName"?: string, readonly "currency"?: string, readonly "daysOverdue"?: number, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "number"?: string, readonly "paid"?: number, readonly "status"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE", readonly "visibleZeroFields"?: VisibleZeroFieldsInvoice }
481
- export const InvoiceInfoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount as long.", "format": "int64" }).check(Schema.isInt())), "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance amount as long.", "format": "int64" }).check(Schema.isInt())), "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents to whom an invoice is billed from." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name for an invoice." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "daysOverdue": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the number of days an invoice is overdue.", "format": "int64" }).check(Schema.isInt())), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })), "paid": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice paid amount as long.", "format": "int64" }).check(Schema.isInt())), "status": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the status of an invoice." })), "visibleZeroFields": Schema.optionalKey(VisibleZeroFieldsInvoice) }).annotate({ "description": "Represents a list of invoice info." })
482
- export type WebhookDtoV1 = { readonly "authToken"?: string, readonly "deliveryEnabled"?: boolean, readonly "enabled"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "planEnabled"?: boolean, readonly "triggerSource"?: ReadonlyArray<string>, readonly "triggerSourceType"?: WebhookEventTriggerSourceType, readonly "url"?: string, readonly "userId"?: string, readonly "webhookEvent"?: WebhookEventType, readonly "workspaceId"?: string }
483
- export const WebhookDtoV1 = Schema.Struct({ "authToken": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an authentication token." })), "deliveryEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether webhook delivery is enabled or not. It can be disabled if delivery failed for too many times." })), "enabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether webhook is enabled or not." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents webhook name." })), "planEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether webhook is supported by current plan. It can be disabled if number of webhooks exceeds plan limit or if the feature is not supported on current plan." })), "triggerSource": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of trigger sources." })).annotate({ "description": "Represents a list of trigger sources." })), "triggerSourceType": Schema.optionalKey(WebhookEventTriggerSourceType), "url": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "webhookEvent": Schema.optionalKey(WebhookEventType), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
484
- export type TimeEntryReportTotals = { readonly "amounts"?: ReadonlyArray<AmountDto>, readonly "entriesCount"?: number, readonly "id"?: string, readonly "totalBillableTime"?: number, readonly "totalTime"?: number }
485
- export const TimeEntryReportTotals = Schema.Struct({ "amounts": Schema.optionalKey(Schema.Array(AmountDto).annotate({ "description": "List of amounts" })), "entriesCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents entries count", "format": "int32" }).check(Schema.isInt())), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time entry report identifier across the system." })), "totalBillableTime": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total billable time" }).check(Schema.isFinite())), "totalTime": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents total time" }).check(Schema.isFinite())) }).annotate({ "description": "List of totals" })
481
+ export const UserGroupDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user group name." })), "teamManagers": Schema.optionalKey(Schema.Array(UserRedactedDtoV1).annotate({ "description": "Represents a list of assigned team managers for this user group." })), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents a list of users' identifiers across the system." })).annotate({ "description": "Represents a list of users' identifiers across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) }).annotate({ "identifier": "UserGroupDtoV1" })
482
+ export type RoleDtoV1 = { readonly "id"?: string, readonly "name"?: string, readonly "source"?: AuthorizationSourceDtoV1 }
483
+ export const RoleDtoV1 = Schema.Struct({ "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents role identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a role name." })), "source": Schema.optionalKey(AuthorizationSourceDtoV1) }).annotate({ "description": "Represents a role data transfer object.", "identifier": "RoleDtoV1" })
486
484
  export type AttendanceFilterV1 = { readonly "balanceFilters"?: ReadonlyArray<CompareBalanceFilter>, readonly "breakFilters"?: ReadonlyArray<CompareBreakFilter>, readonly "capacityFilters"?: ReadonlyArray<CompareCapacityFilter>, readonly "endFilters"?: ReadonlyArray<CompareEndFilter>, readonly "groups"?: ReadonlyArray<string>, readonly "hasTimeOff"?: boolean, readonly "overtimeFilters"?: ReadonlyArray<CompareOvertimeFilter>, readonly "page"?: number, readonly "pageSize"?: number, readonly "sortColumn"?: "GROUP" | "USER" | "DATE" | "START" | "END" | "BREAK" | "WORK" | "CAPACITY" | "OVERTIME" | "UNDERTIME" | "BALANCE" | "TIME_OFF", readonly "startFilters"?: ReadonlyArray<CompareStartFilter>, readonly "undertimeFilters"?: ReadonlyArray<CompareUndertimeFilter>, readonly "workFilters"?: ReadonlyArray<CompareWorkFilter> }
487
- export const AttendanceFilterV1 = Schema.Struct({ "balanceFilters": Schema.optionalKey(Schema.Array(CompareBalanceFilter)), "breakFilters": Schema.optionalKey(Schema.Array(CompareBreakFilter)), "capacityFilters": Schema.optionalKey(Schema.Array(CompareCapacityFilter)), "endFilters": Schema.optionalKey(Schema.Array(CompareEndFilter)), "groups": Schema.optionalKey(Schema.Array(Schema.String).annotate({ "writeOnly": true })), "hasTimeOff": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, report will include time off hours." })), "overtimeFilters": Schema.optionalKey(Schema.Array(CompareOvertimeFilter)), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Specifies page number.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Specifies page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "sortColumn": Schema.optionalKey(Schema.Literals(["GROUP", "USER", "DATE", "START", "END", "BREAK", "WORK", "CAPACITY", "OVERTIME", "UNDERTIME", "BALANCE", "TIME_OFF"])), "startFilters": Schema.optionalKey(Schema.Array(CompareStartFilter)), "undertimeFilters": Schema.optionalKey(Schema.Array(CompareUndertimeFilter)), "workFilters": Schema.optionalKey(Schema.Array(CompareWorkFilter)) }).annotate({ "description": "Represents an attendance report filter." })
488
- export type ExpenseReportFilterV1 = { readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "billable"?: boolean, readonly "categories"?: ContainsArchivedFilterV1, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "note"?: string, readonly "page"?: number, readonly "pageSize"?: number, readonly "projects"?: ContainsArchivedFilterV1, readonly "sortColumn"?: "ID" | "PROJECT" | "USER" | "CATEGORY" | "DATE" | "AMOUNT", readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "tasks"?: ContainsTaskFilterV1, readonly "timeZone"?: string, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "withoutNote"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
489
- export const ExpenseReportFilterV1 = Schema.Struct({ "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "Represents an approval state" })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether report is billable" })), "categories": Schema.optionalKey(ContainsArchivedFilterV1), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Represents date range type of expense report" })), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "Represents an export type" })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "Represents an invoicing state" })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a search term for filtering report entries by note" })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "PROJECT", "USER", "CATEGORY", "DATE", "AMOUNT"]).annotate({ "description": "Represents expenses sort column" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "Represents a sort order" })), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time zone" })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user locale" })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents week start" })), "withoutNote": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty note" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "Represents a zoom level" })) })
485
+ export const AttendanceFilterV1 = Schema.Struct({ "balanceFilters": Schema.optionalKey(Schema.Array(CompareBalanceFilter)), "breakFilters": Schema.optionalKey(Schema.Array(CompareBreakFilter)), "capacityFilters": Schema.optionalKey(Schema.Array(CompareCapacityFilter)), "endFilters": Schema.optionalKey(Schema.Array(CompareEndFilter)), "groups": Schema.optionalKey(Schema.Array(Schema.String).annotate({ "writeOnly": true })), "hasTimeOff": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, report will include time off hours." })), "overtimeFilters": Schema.optionalKey(Schema.Array(CompareOvertimeFilter)), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Specifies page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Specifies page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "sortColumn": Schema.optionalKey(Schema.Literals(["GROUP", "USER", "DATE", "START", "END", "BREAK", "WORK", "CAPACITY", "OVERTIME", "UNDERTIME", "BALANCE", "TIME_OFF"])), "startFilters": Schema.optionalKey(Schema.Array(CompareStartFilter)), "undertimeFilters": Schema.optionalKey(Schema.Array(CompareUndertimeFilter)), "workFilters": Schema.optionalKey(Schema.Array(CompareWorkFilter)) }).annotate({ "description": "Represents an attendance report filter.", "identifier": "AttendanceFilterV1" })
490
486
  export type DetailedFilterV1 = { readonly "auditFilter"?: AuditFilterV1, readonly "options"?: DetailedOptionsV1, readonly "page"?: number, readonly "pageSize"?: number, readonly "sortColumn"?: "ID" | "DESCRIPTION" | "USER" | "DURATION" | "DATE" | "ZONED_DATE" | "NATURAL" | "USER_DATE" }
491
- export const DetailedFilterV1 = Schema.Struct({ "auditFilter": Schema.optionalKey(AuditFilterV1), "options": Schema.optionalKey(DetailedOptionsV1), "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "DESCRIPTION", "USER", "DURATION", "DATE", "ZONED_DATE", "NATURAL", "USER_DATE"]).annotate({ "description": "If provided, you'll get sorted result by sort column." })) }).annotate({ "description": "Represents a detailed report filter." })
492
- export type SharedReportDtoV1 = { readonly "fixedDate"?: boolean, readonly "id"?: string, readonly "isPublic"?: boolean, readonly "link"?: string, readonly "name"?: string, readonly "reportAuthor"?: string, readonly "type"?: "DETAILED" | "WEEKLY" | "SUMMARY" | "SCHEDULED" | "EXPENSE_DETAILED" | "EXPENSE_RECEIPT" | "PTO_REQUESTS" | "PTO_BALANCE" | "ATTENDANCE" | "INVOICE_EXPENSE" | "INVOICE_TIME" | "PROJECT" | "TEAM_FULL" | "TEAM_LIMITED" | "TEAM_GROUPS" | "INVOICES" | "KIOSK_PIN_LIST" | "KIOSK_ASSIGNEES" | "USER_DATA_EXPORT", readonly "visibleToUserGroups"?: ReadonlyArray<EntityName>, readonly "visibleToUsers"?: ReadonlyArray<EntityName> }
493
- export const SharedReportDtoV1 = Schema.Struct({ "fixedDate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report has a fixed date range" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a shared report identifier across the system." })), "isPublic": Schema.optionalKey(Schema.Boolean), "link": Schema.optionalKey(Schema.String.annotate({ "description": "Represents URI link of shared report.", "format": "uri" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents shared report's name." })), "reportAuthor": Schema.optionalKey(Schema.String.annotate({ "description": "Represents report author (user) identifier across the system." })), "type": Schema.optionalKey(Schema.Literals(["DETAILED", "WEEKLY", "SUMMARY", "SCHEDULED", "EXPENSE_DETAILED", "EXPENSE_RECEIPT", "PTO_REQUESTS", "PTO_BALANCE", "ATTENDANCE", "INVOICE_EXPENSE", "INVOICE_TIME", "PROJECT", "TEAM_FULL", "TEAM_LIMITED", "TEAM_GROUPS", "INVOICES", "KIOSK_PIN_LIST", "KIOSK_ASSIGNEES", "USER_DATA_EXPORT"]).annotate({ "description": "Represents shared report type" })), "visibleToUserGroups": Schema.optionalKey(Schema.Array(EntityName)), "visibleToUsers": Schema.optionalKey(Schema.Array(EntityName).annotate({ "description": "Represents ids of user to whom are visible shared report." })) }).annotate({ "description": "Represents the array of reports." })
494
- export type TimeEntryDto = { readonly "approvalRequestId"?: string, readonly "billable": boolean, readonly "clientId"?: string, readonly "clientName"?: string, readonly "description": string, readonly "locked"?: boolean, readonly "projectColor"?: string, readonly "projectId"?: string, readonly "projectName"?: string, readonly "tags"?: ReadonlyArray<ReportTagDto>, readonly "taskId"?: string, readonly "taskName"?: string, readonly "timeInterval": ReportTimeIntervalDto, readonly "userEmail"?: string, readonly "userId": string, readonly "userName"?: string, readonly "id": string, readonly "workspaceId": string, readonly "type"?: string, readonly "isLocked"?: boolean, readonly "tagIds"?: ReadonlyArray<string> }
495
- export const TimeEntryDto = Schema.Struct({ "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the system." })), "billable": Schema.Boolean.annotate({ "description": "Indicates whether the time entry is billable" }), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name" })), "description": Schema.String.annotate({ "description": "Represents time entry description" }), "locked": Schema.optionalKey(Schema.Boolean), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project color" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project name." })), "tags": Schema.optionalKey(Schema.Array(ReportTagDto).annotate({ "description": "List of tags" })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "taskName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task name." })), "timeInterval": ReportTimeIntervalDto, "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user email." })), "userId": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's name" })), "id": Schema.String.annotate({ "description": "Represents time entry identifier across the system." }), "workspaceId": Schema.String, "type": Schema.optionalKey(Schema.String), "isLocked": Schema.optionalKey(Schema.Boolean), "tagIds": Schema.optionalKey(Schema.Array(Schema.String)) }).annotate({ "description": "time entry" })
487
+ export const DetailedFilterV1 = Schema.Struct({ "auditFilter": Schema.optionalKey(AuditFilterV1), "options": Schema.optionalKey(DetailedOptionsV1), "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "DESCRIPTION", "USER", "DURATION", "DATE", "ZONED_DATE", "NATURAL", "USER_DATE"]).annotate({ "description": "If provided, you'll get sorted result by sort column." })) }).annotate({ "description": "Represents a detailed report filter.", "identifier": "DetailedFilterV1" })
488
+ export type ExpenseReportFilterV1 = { readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "billable"?: boolean, readonly "categories"?: ContainsArchivedFilterV1, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "note"?: string, readonly "page"?: number, readonly "pageSize"?: number, readonly "projects"?: ContainsArchivedFilterV1, readonly "sortColumn"?: "ID" | "PROJECT" | "USER" | "CATEGORY" | "DATE" | "AMOUNT", readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "tasks"?: ContainsTaskFilterV1, readonly "timeZone"?: string, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "withoutNote"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
489
+ export const ExpenseReportFilterV1 = Schema.Struct({ "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "Represents an approval state" })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether report is billable" })), "categories": Schema.optionalKey(ContainsArchivedFilterV1), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Represents date range type of expense report" })), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "Represents an export type" })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "Represents an invoicing state" })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a search term for filtering report entries by note" })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "sortColumn": Schema.optionalKey(Schema.Literals(["ID", "PROJECT", "USER", "CATEGORY", "DATE", "AMOUNT"]).annotate({ "description": "Represents expenses sort column" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "Represents a sort order" })), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time zone" })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user locale" })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents week start" })), "withoutNote": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty note" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "Represents a zoom level" })) }).annotate({ "identifier": "ExpenseReportFilterV1" })
496
490
  export type ExpenseReportDtoV1 = { readonly "amount"?: number, readonly "approvalRequestId"?: string, readonly "billable"?: boolean, readonly "categoryHasUnitPrice"?: boolean, readonly "categoryId"?: string, readonly "categoryName"?: string, readonly "categoryUnit"?: string, readonly "date"?: string, readonly "exportFields"?: ReadonlyArray<"PROJECT" | "CLIENT" | "TASK" | "DESCRIPTION" | "USER" | "TAGS" | "START_DATE" | "START_TIME" | "END_TIME" | "DURATION" | "BILLABLE_AMOUNT" | "COST_AMOUNT" | "PROFIT" | "EMAIL" | "BILLABLE" | "BILLABLE_H" | "NON_BILLABLE_H" | "END_DATE" | "DECIMAL_DURATION" | "BILLABLE_RATE" | "COST_RATE" | "APPROVAL" | "APPROVAL_SUBMISSION_DATE" | "APPROVAL_SUBMISSION_TIME" | "APPROVAL_DATE" | "APPROVAL_TIME" | "BAR_CHART" | "PIE_CHART_1" | "PIE_CHART_2" | "PIE_CHART_3" | "RTL" | "TOTAL" | "SUBGROUP" | "GROUP" | "DATE" | "TIME" | "CATEGORY" | "NOTE" | "AMOUNT" | "INVOICED" | "INVOICE_ID" | "CATEGORY_NO_OF_UNITS" | "CATEGORY_UNIT" | "KIOSK" | "KIOSK_QR_CODE" | "TYPE" | "BREAK" | "NOTES" | "BILLABLE_TOTAL" | "RECEIPTS" | "EXPENSE_TOTAL" | "DATE_OF_CREATION" | "DATE_OF_APPROVAL" | "NAME" | "ROLE" | "PROJECTS" | "STATUS" | "WEEK_START" | "WORKING_DAYS" | "TEAM_MANAGERS" | "TEAM_MEMBERS" | "DAILY_WORK_CAPACITY" | "VISIBILITY" | "BILLABILITY" | "TASKS" | "TRACKED_H" | "ESTIMATED_H" | "REMAINING_H" | "OVERAGE_H" | "TRACKED_BUDGET" | "ESTIMATED_BUDGET" | "REMAINING_BUDGET" | "OVERAGE_BUDGET" | "PROGRESS" | "RECURRING_ESTIMATE" | "EXPENSES" | "BILLABLE_EXPENSES" | "NON_BILLABLE_EXPENSES" | "ADDITIONAL_FIELDS" | "PROJECT_MEMBERS" | "PROJECT_MANAGER" | "APPROVED_BY" | "ISSUE_DATE" | "DUE_ON" | "BALANCE">, readonly "fileId"?: string, readonly "fileName"?: string, readonly "id"?: string, readonly "invoicingInfo"?: InvoicingInfo, readonly "locked"?: boolean, readonly "notes"?: string, readonly "projectColor"?: string, readonly "projectId"?: string, readonly "projectName"?: string, readonly "quantity"?: number, readonly "reportName"?: string, readonly "time"?: string, readonly "userEmail"?: string, readonly "userId"?: string, readonly "userName"?: string, readonly "userStatus"?: string, readonly "workspaceId"?: string }
497
- export const ExpenseReportDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expenses amount.", "format": "double" }).check(Schema.isFinite())), "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the system." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the expenses is billable." })), "categoryHasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether category has unit price." })), "categoryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category identifier across the system." })), "categoryName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category's name." })), "categoryUnit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category's unit." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses date in YYYY-MM-DDTHH:MM:SS.ssssssZ format." })), "exportFields": Schema.optionalKey(Schema.Array(Schema.Literals(["PROJECT", "CLIENT", "TASK", "DESCRIPTION", "USER", "TAGS", "START_DATE", "START_TIME", "END_TIME", "DURATION", "BILLABLE_AMOUNT", "COST_AMOUNT", "PROFIT", "EMAIL", "BILLABLE", "BILLABLE_H", "NON_BILLABLE_H", "END_DATE", "DECIMAL_DURATION", "BILLABLE_RATE", "COST_RATE", "APPROVAL", "APPROVAL_SUBMISSION_DATE", "APPROVAL_SUBMISSION_TIME", "APPROVAL_DATE", "APPROVAL_TIME", "BAR_CHART", "PIE_CHART_1", "PIE_CHART_2", "PIE_CHART_3", "RTL", "TOTAL", "SUBGROUP", "GROUP", "DATE", "TIME", "CATEGORY", "NOTE", "AMOUNT", "INVOICED", "INVOICE_ID", "CATEGORY_NO_OF_UNITS", "CATEGORY_UNIT", "KIOSK", "KIOSK_QR_CODE", "TYPE", "BREAK", "NOTES", "BILLABLE_TOTAL", "RECEIPTS", "EXPENSE_TOTAL", "DATE_OF_CREATION", "DATE_OF_APPROVAL", "NAME", "ROLE", "PROJECTS", "STATUS", "WEEK_START", "WORKING_DAYS", "TEAM_MANAGERS", "TEAM_MEMBERS", "DAILY_WORK_CAPACITY", "VISIBILITY", "BILLABILITY", "TASKS", "TRACKED_H", "ESTIMATED_H", "REMAINING_H", "OVERAGE_H", "TRACKED_BUDGET", "ESTIMATED_BUDGET", "REMAINING_BUDGET", "OVERAGE_BUDGET", "PROGRESS", "RECURRING_ESTIMATE", "EXPENSES", "BILLABLE_EXPENSES", "NON_BILLABLE_EXPENSES", "ADDITIONAL_FIELDS", "PROJECT_MEMBERS", "PROJECT_MANAGER", "APPROVED_BY", "ISSUE_DATE", "DUE_ON", "BALANCE"]).annotate({ "description": "Represents export fields." })).annotate({ "description": "Represents export fields." })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "fileName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses file name." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses identifier across the system." })), "invoicingInfo": Schema.optionalKey(InvoicingInfo), "locked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the expenses is locked." })), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses note." })), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project's color" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project's name." })), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expenses quantity", "format": "double" }).check(Schema.isFinite())), "reportName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense name." })), "time": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense time." })), "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's email." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's name." })), "userStatus": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's status." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents list of expenses" })
498
- export type PageableV1ListAuditLogDtoV1 = { readonly "response"?: ReadonlyArray<AuditLogDtoV1> }
499
- export const PageableV1ListAuditLogDtoV1 = Schema.Struct({ "response": Schema.optionalKey(Schema.Array(AuditLogDtoV1)) })
491
+ export const ExpenseReportDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expenses amount.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "approvalRequestId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents approval request identifier across the system." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the expenses is billable." })), "categoryHasUnitPrice": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether category has unit price." })), "categoryId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category identifier across the system." })), "categoryName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category's name." })), "categoryUnit": Schema.optionalKey(Schema.String.annotate({ "description": "Represents category's unit." })), "date": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses date in YYYY-MM-DDTHH:MM:SS.ssssssZ format." })), "exportFields": Schema.optionalKey(Schema.Array(Schema.Literals(["PROJECT", "CLIENT", "TASK", "DESCRIPTION", "USER", "TAGS", "START_DATE", "START_TIME", "END_TIME", "DURATION", "BILLABLE_AMOUNT", "COST_AMOUNT", "PROFIT", "EMAIL", "BILLABLE", "BILLABLE_H", "NON_BILLABLE_H", "END_DATE", "DECIMAL_DURATION", "BILLABLE_RATE", "COST_RATE", "APPROVAL", "APPROVAL_SUBMISSION_DATE", "APPROVAL_SUBMISSION_TIME", "APPROVAL_DATE", "APPROVAL_TIME", "BAR_CHART", "PIE_CHART_1", "PIE_CHART_2", "PIE_CHART_3", "RTL", "TOTAL", "SUBGROUP", "GROUP", "DATE", "TIME", "CATEGORY", "NOTE", "AMOUNT", "INVOICED", "INVOICE_ID", "CATEGORY_NO_OF_UNITS", "CATEGORY_UNIT", "KIOSK", "KIOSK_QR_CODE", "TYPE", "BREAK", "NOTES", "BILLABLE_TOTAL", "RECEIPTS", "EXPENSE_TOTAL", "DATE_OF_CREATION", "DATE_OF_APPROVAL", "NAME", "ROLE", "PROJECTS", "STATUS", "WEEK_START", "WORKING_DAYS", "TEAM_MANAGERS", "TEAM_MEMBERS", "DAILY_WORK_CAPACITY", "VISIBILITY", "BILLABILITY", "TASKS", "TRACKED_H", "ESTIMATED_H", "REMAINING_H", "OVERAGE_H", "TRACKED_BUDGET", "ESTIMATED_BUDGET", "REMAINING_BUDGET", "OVERAGE_BUDGET", "PROGRESS", "RECURRING_ESTIMATE", "EXPENSES", "BILLABLE_EXPENSES", "NON_BILLABLE_EXPENSES", "ADDITIONAL_FIELDS", "PROJECT_MEMBERS", "PROJECT_MANAGER", "APPROVED_BY", "ISSUE_DATE", "DUE_ON", "BALANCE"]).annotate({ "description": "Represents export fields." })).annotate({ "description": "Represents export fields." })), "fileId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents file identifier across the system." })), "fileName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses file name." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses identifier across the system." })), "invoicingInfo": Schema.optionalKey(InvoicingInfo), "locked": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the expenses is locked." })), "notes": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expenses note." })), "projectColor": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project's color" })), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "projectName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project's name." })), "quantity": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents expenses quantity", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "reportName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense name." })), "time": Schema.optionalKey(Schema.String.annotate({ "description": "Represents expense time." })), "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's email." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's name." })), "userStatus": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's status." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents list of expenses", "identifier": "ExpenseReportDtoV1" })
500
492
  export type AuditLogGetRequestV1 = { readonly "actions": ReadonlyArray<"CREATE_TIME_PERSONAL_TIMER" | "CREATE_TIME_PERSONAL_MANUAL" | "CREATE_TIME_IMPORT" | "CREATE_TIME_KIOSK" | "CREATE_TIME_FOR_OTHER" | "RESTORE_TIME" | "RESTORE_TIME_FOR_OTHER" | "UPDATE_TIME_PERSONAL" | "UPDATE_TIME_FOR_OTHER" | "DELETE_TIME_PERSONAL" | "DELETE_TIME_FOR_OTHER" | "CREATE_PROJECT" | "CREATE_PROJECT_IMPORT" | "CREATE_PROJECT_QUICKBOOKS" | "UPDATE_PROJECT" | "DELETE_PROJECT" | "CREATE_TASK" | "CREATE_TASK_IMPORT" | "UPDATE_TASK" | "DELETE_TASK" | "CREATE_CLIENT" | "CREATE_CLIENT_IMPORT" | "CREATE_CLIENT_QUICKBOOKS" | "UPDATE_CLIENT" | "DELETE_CLIENT" | "CREATE_TAG" | "CREATE_TAG_IMPORT" | "UPDATE_TAG" | "DELETE_TAG" | "CREATE_EXPENSE" | "CREATE_EXPENSE_FOR_OTHER" | "RESTORE_EXPENSE" | "RESTORE_EXPENSE_FOR_OTHER" | "UPDATE_EXPENSE" | "UPDATE_EXPENSE_FOR_OTHER" | "DELETE_EXPENSE" | "DELETE_EXPENSE_FOR_OTHER">, readonly "authors": Authors, readonly "end": string, readonly "page"?: number, readonly "page-size"?: number, readonly "start": string }
501
- export const AuditLogGetRequestV1 = Schema.Struct({ "actions": Schema.Array(Schema.Literals(["CREATE_TIME_PERSONAL_TIMER", "CREATE_TIME_PERSONAL_MANUAL", "CREATE_TIME_IMPORT", "CREATE_TIME_KIOSK", "CREATE_TIME_FOR_OTHER", "RESTORE_TIME", "RESTORE_TIME_FOR_OTHER", "UPDATE_TIME_PERSONAL", "UPDATE_TIME_FOR_OTHER", "DELETE_TIME_PERSONAL", "DELETE_TIME_FOR_OTHER", "CREATE_PROJECT", "CREATE_PROJECT_IMPORT", "CREATE_PROJECT_QUICKBOOKS", "UPDATE_PROJECT", "DELETE_PROJECT", "CREATE_TASK", "CREATE_TASK_IMPORT", "UPDATE_TASK", "DELETE_TASK", "CREATE_CLIENT", "CREATE_CLIENT_IMPORT", "CREATE_CLIENT_QUICKBOOKS", "UPDATE_CLIENT", "DELETE_CLIENT", "CREATE_TAG", "CREATE_TAG_IMPORT", "UPDATE_TAG", "DELETE_TAG", "CREATE_EXPENSE", "CREATE_EXPENSE_FOR_OTHER", "RESTORE_EXPENSE", "RESTORE_EXPENSE_FOR_OTHER", "UPDATE_EXPENSE", "UPDATE_EXPENSE_FOR_OTHER", "DELETE_EXPENSE", "DELETE_EXPENSE_FOR_OTHER"]).annotate({ "description": "Represents a set of audit log actions." })).annotate({ "description": "Represents a set of audit log actions." }).check(Schema.isMinLength(1)).check(Schema.isUnique()), "authors": Authors, "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(0))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(50))), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }) })
502
- export type InvoiceOverviewDtoV1 = { readonly "amount"?: number, readonly "balance"?: number, readonly "billFrom"?: string, readonly "calculationType"?: CalculationType, readonly "clientAddress"?: string, readonly "clientId"?: string, readonly "clientName"?: string, readonly "companyId"?: string, readonly "containsImportedExpenses"?: boolean, readonly "containsImportedTimes"?: boolean, readonly "currency"?: string, readonly "discount"?: number, readonly "discountAmount"?: number, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "items"?: ReadonlyArray<InvoiceItemDto>, readonly "note"?: string, readonly "number"?: string, readonly "paid"?: number, readonly "status"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE", readonly "subject"?: string, readonly "subtotal"?: number, readonly "tax"?: number, readonly "tax2"?: number, readonly "tax2Amount"?: number, readonly "taxAmount"?: number, readonly "taxType"?: TaxType, readonly "userId"?: string, readonly "visibleZeroFields"?: VisibleZeroFieldsInvoice }
503
- export const InvoiceOverviewDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount as long.", "format": "int64" }).check(Schema.isInt())), "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance amount as long.", "format": "int64" }).check(Schema.isInt())), "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents to whom the invoice should be billed from." })), "calculationType": Schema.optionalKey(CalculationType), "clientAddress": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client address." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name for an invoice." })), "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "containsImportedExpenses": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether invoice contains imported expenses." })), "containsImportedTimes": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether invoice contains imported items." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "discount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice discount amount as double.", "format": "double" }).check(Schema.isFinite())), "discountAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice discount amount as long.", "format": "int64" }).check(Schema.isInt())), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "items": Schema.optionalKey(Schema.Array(InvoiceItemDto).annotate({ "description": "Represents a list of invoice item datatransfer objects." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice note." })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })), "paid": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice paid amount as long.", "format": "int64" }).check(Schema.isInt())), "status": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the status of an invoice." })), "subject": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice subject." })), "subtotal": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice subtotal as long.", "format": "int64" }).check(Schema.isInt())), "tax": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as double.", "format": "double" }).check(Schema.isFinite())), "tax2": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as double.", "format": "double" }).check(Schema.isFinite())), "tax2Amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as long.", "format": "int64" }).check(Schema.isInt())), "taxAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as long.", "format": "int64" }).check(Schema.isInt())), "taxType": Schema.optionalKey(TaxType), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "visibleZeroFields": Schema.optionalKey(VisibleZeroFieldsInvoice) })
504
- export type RoleDetailsDtoV1 = { readonly "role"?: RoleDtoV1, readonly "userId"?: string, readonly "workspaceId"?: string }
505
- export const RoleDetailsDtoV1 = Schema.Struct({ "role": Schema.optionalKey(RoleDtoV1), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
493
+ export const AuditLogGetRequestV1 = Schema.Struct({ "actions": Schema.Array(Schema.Literals(["CREATE_TIME_PERSONAL_TIMER", "CREATE_TIME_PERSONAL_MANUAL", "CREATE_TIME_IMPORT", "CREATE_TIME_KIOSK", "CREATE_TIME_FOR_OTHER", "RESTORE_TIME", "RESTORE_TIME_FOR_OTHER", "UPDATE_TIME_PERSONAL", "UPDATE_TIME_FOR_OTHER", "DELETE_TIME_PERSONAL", "DELETE_TIME_FOR_OTHER", "CREATE_PROJECT", "CREATE_PROJECT_IMPORT", "CREATE_PROJECT_QUICKBOOKS", "UPDATE_PROJECT", "DELETE_PROJECT", "CREATE_TASK", "CREATE_TASK_IMPORT", "UPDATE_TASK", "DELETE_TASK", "CREATE_CLIENT", "CREATE_CLIENT_IMPORT", "CREATE_CLIENT_QUICKBOOKS", "UPDATE_CLIENT", "DELETE_CLIENT", "CREATE_TAG", "CREATE_TAG_IMPORT", "UPDATE_TAG", "DELETE_TAG", "CREATE_EXPENSE", "CREATE_EXPENSE_FOR_OTHER", "RESTORE_EXPENSE", "RESTORE_EXPENSE_FOR_OTHER", "UPDATE_EXPENSE", "UPDATE_EXPENSE_FOR_OTHER", "DELETE_EXPENSE", "DELETE_EXPENSE_FOR_OTHER"]).annotate({ "description": "Represents a set of audit log actions." })).annotate({ "description": "Represents a set of audit log actions." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isUnique().annotate({ "expected": "an array with unique items" })), "authors": Authors, "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ "expected": "a value greater than or equal to 0" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(50).annotate({ "expected": "a value less than or equal to 50" }))), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }) }).annotate({ "identifier": "AuditLogGetRequestV1" })
494
+ export type PageableV1ListAuditLogDtoV1 = { readonly "response"?: ReadonlyArray<AuditLogDtoV1> }
495
+ export const PageableV1ListAuditLogDtoV1 = Schema.Struct({ "response": Schema.optionalKey(Schema.Array(AuditLogDtoV1)) }).annotate({ "identifier": "PageableV1ListAuditLogDtoV1" })
496
+ export type ProjectDtoV1 = { readonly "archived": boolean, readonly "billable": boolean, readonly "budgetEstimate"?: EstimateWithOptionsDto, readonly "color": string, readonly "costRate"?: RateDtoV1, readonly "duration"?: string, readonly "estimate"?: EstimateDtoV1, readonly "hourlyRate"?: RateDtoV1, readonly "id": string, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name": string, readonly "note"?: string, readonly "public"?: boolean, readonly "template"?: boolean, readonly "timeEstimate"?: TimeEstimateDto, readonly "workspaceId": string }
497
+ export const ProjectDtoV1 = Schema.Struct({ "archived": Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." }), "billable": Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." }), "budgetEstimate": Schema.optionalKey(EstimateWithOptionsDto), "color": Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }), "costRate": Schema.optionalKey(RateDtoV1), "duration": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project duration in milliseconds." })), "estimate": Schema.optionalKey(EstimateDtoV1), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.String.annotate({ "description": "Represents project identifier across the system." }), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.String, "note": Schema.optionalKey(Schema.String), "public": Schema.optionalKey(Schema.Boolean), "template": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })), "timeEstimate": Schema.optionalKey(TimeEstimateDto), "workspaceId": Schema.String }).annotate({ "identifier": "ProjectDtoV1" })
498
+ export type ProjectDtoImplV1 = { readonly "archived"?: boolean, readonly "billable"?: boolean, readonly "budgetEstimate"?: EstimateWithOptionsDto, readonly "clientId"?: string, readonly "clientName"?: string, readonly "color"?: string, readonly "costRate"?: RateDtoV1, readonly "duration"?: string, readonly "estimate"?: EstimateDtoV1, readonly "estimateReset"?: EstimateResetDto, readonly "hourlyRate"?: RateDtoV1, readonly "id"?: string, readonly "isPublic"?: boolean, readonly "isTemplate"?: boolean, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name"?: string, readonly "note"?: string, readonly "public"?: boolean, readonly "template"?: boolean, readonly "timeEstimate"?: TimeEstimateDto, readonly "workspaceId"?: string }
499
+ export const ProjectDtoImplV1 = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "budgetEstimate": Schema.optionalKey(EstimateWithOptionsDto), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "costRate": Schema.optionalKey(RateDtoV1), "duration": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project duration in milliseconds." })), "estimate": Schema.optionalKey(EstimateDtoV1), "estimateReset": Schema.optionalKey(EstimateResetDto), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "isTemplate": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project name." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project note." })), "public": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is public or not." })), "template": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })), "timeEstimate": Schema.optionalKey(TimeEstimateDto), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "ProjectDtoImplV1" })
500
+ export type UserDtoV1 = { readonly "activeWorkspace"?: string, readonly "customFields"?: ReadonlyArray<UserCustomFieldValueDtoV1>, readonly "defaultWorkspace"?: string, readonly "email": string, readonly "id": string, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name": string, readonly "profilePicture"?: string, readonly "settings"?: UserSettingsDtoV1, readonly "status"?: AccountStatus }
501
+ export const UserDtoV1 = Schema.Struct({ "activeWorkspace": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's active workspace identifier across the system." })), "customFields": Schema.optionalKey(Schema.Array(UserCustomFieldValueDtoV1).annotate({ "description": "Represents a list of value objects for user’s custom fields." })), "defaultWorkspace": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user default workspace identifier across the system." })), "email": Schema.String.annotate({ "description": "Represents email address of the user." }), "id": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.String.annotate({ "description": "Represents name of the user." }), "profilePicture": Schema.optionalKey(Schema.String.annotate({ "description": "Represents profile image path of the user." })), "settings": Schema.optionalKey(UserSettingsDtoV1), "status": Schema.optionalKey(AccountStatus) }).annotate({ "identifier": "UserDtoV1" })
502
+ export type WorkspaceSettingsDtoV1 = { readonly "activeBillableHours"?: boolean, readonly "adminOnlyPages"?: "PROJECT" | "TEAM" | "REPORTS", readonly "approvalSettings"?: TimeApprovalSettingsDtoV1, readonly "auditLogSettings"?: AuditLogSettingsDtoV1, readonly "automaticLock"?: AutomaticLockDtoV1, readonly "breakSettings"?: BreakSettingsDtoV1, readonly "canManagerEditUsersTime"?: boolean, readonly "canManagerLaunchKiosk"?: boolean, readonly "canSeeTimeSheet"?: boolean, readonly "canSeeTracker"?: boolean, readonly "companyAddress"?: string, readonly "currencyFormat"?: "CURRENCY_SPACE_VALUE" | "VALUE_SPACE_CURRENCY" | "CURRENCY_VALUE" | "VALUE_CURRENCY", readonly "customLabels"?: CustomLabelsDtoV1, readonly "decimalFormat"?: boolean, readonly "defaultBillableProjects"?: boolean, readonly "durationFormat"?: "FULL" | "COMPACT" | "DECIMAL", readonly "entityCreationPermissions"?: EntityCreationPermissionsDtoV1, readonly "expenseApprovalSettings"?: ExpenseApprovalSettingsDtoV1, readonly "expensesEnabled"?: boolean, readonly "favoriteEntriesEnabled"?: boolean, readonly "forceDescription"?: boolean, readonly "forceProjects"?: boolean, readonly "forceTags"?: boolean, readonly "forceTasks"?: boolean, readonly "highResolutionScreenshots"?: boolean, readonly "invoicingEnabled"?: boolean, readonly "isCostRateActive"?: boolean, readonly "isProjectPublicByDefault"?: boolean, readonly "kioskAuthType"?: "PIN_4_DIGITS" | "PIN_6_DIGITS" | "QR_CODE", readonly "kioskAutologinEnabled"?: boolean, readonly "kioskEnabled"?: boolean, readonly "kioskPhotoCaptureEnabled"?: boolean, readonly "kioskProjectsAndTasksEnabled"?: boolean, readonly "locationsEnabled"?: boolean, readonly "lockTimeEntries"?: string, readonly "lockTimeZone"?: string, readonly "multiFactorEnabled"?: boolean, readonly "numberFormat"?: "COMMA_PERIOD" | "PERIOD_COMMA" | "QUOTATION_MARK_PERIOD" | "SPACE_COMMA", readonly "onlyAdminsCanChangeBillableStatus"?: boolean, readonly "onlyAdminsCreateProject"?: boolean, readonly "onlyAdminsCreateTag"?: boolean, readonly "onlyAdminsCreateTask"?: boolean, readonly "onlyAdminsSeeAllTimeEntries"?: boolean, readonly "onlyAdminsSeeBillableRates"?: boolean, readonly "onlyAdminsSeeDashboard"?: boolean, readonly "onlyAdminsSeeProjectStatus"?: boolean, readonly "onlyAdminsSeePublicProjectsEntries"?: boolean, readonly "overtimeCalculationPeriod"?: "DAILY" | "WEEKLY" | "MONTHLY", readonly "projectFavorites"?: boolean, readonly "projectGroupingLabel"?: string, readonly "projectLabel"?: string, readonly "projectPickerSpecialFilter"?: boolean, readonly "round"?: RoundDto, readonly "schedulingEnabled"?: boolean, readonly "schedulingSettings"?: SchedulingSettingsDtoV1, readonly "screenshotsEnabled"?: boolean, readonly "taskBillableEnabled"?: boolean, readonly "taskLabel"?: string, readonly "taskRateEnabled"?: boolean, readonly "timeApprovalEnabled"?: boolean, readonly "timeOff"?: TimeOffDtoV1, readonly "timeRoundingInReports"?: boolean, readonly "timeTrackingMode"?: "DEFAULT" | "STOPWATCH_ONLY", readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW", readonly "trackTimeDownToSecond"?: boolean, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "whitelistedForAggregateView"?: boolean, readonly "workCapacity"?: string, readonly "workingDays"?: ReadonlyArray<"MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY"> }
503
+ export const WorkspaceSettingsDtoV1 = Schema.Struct({ "activeBillableHours": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether billable hours is active." })), "adminOnlyPages": Schema.optionalKey(Schema.Literals(["PROJECT", "TEAM", "REPORTS"]).annotate({ "description": "Represents a unique list of protected page enums." })), "approvalSettings": Schema.optionalKey(TimeApprovalSettingsDtoV1), "auditLogSettings": Schema.optionalKey(AuditLogSettingsDtoV1), "automaticLock": Schema.optionalKey(AutomaticLockDtoV1), "breakSettings": Schema.optionalKey(BreakSettingsDtoV1), "canManagerEditUsersTime": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether manager can edit user's time." })), "canManagerLaunchKiosk": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether manager can launch kiosk." })), "canSeeTimeSheet": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether timesheets are visible or not." })), "canSeeTracker": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time trackers are visible or not." })), "companyAddress": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the company address." })), "currencyFormat": Schema.optionalKey(Schema.Literals(["CURRENCY_SPACE_VALUE", "VALUE_SPACE_CURRENCY", "CURRENCY_VALUE", "VALUE_CURRENCY"]).annotate({ "description": "Represents a clockify currency format enum." })), "customLabels": Schema.optionalKey(CustomLabelsDtoV1), "decimalFormat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Set decimalFormat alongside trackTimeDownToSecond to manage Time Duration Format as explained in class description" })), "defaultBillableProjects": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether projects are billable by default." })), "durationFormat": Schema.optionalKey(Schema.Literals(["FULL", "COMPACT", "DECIMAL"]).annotate({ "description": "Represents a clockify duration format enum. Used to set Duration format instead of setting decimalFormat and trackTimeDownToSecond." })), "entityCreationPermissions": Schema.optionalKey(EntityCreationPermissionsDtoV1), "expenseApprovalSettings": Schema.optionalKey(ExpenseApprovalSettingsDtoV1), "expensesEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether expenses is enabled." })), "favoriteEntriesEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether favorite entries is enabled." })), "forceDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether description are forced or not." })), "forceProjects": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether projects are forced or not." })), "forceTags": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether tags are forced or not." })), "forceTasks": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether tasks are forced or not." })), "highResolutionScreenshots": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether high resolution screenshots is enabled." })), "invoicingEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether invoicing is enabled." })), "isCostRateActive": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether cost rate is active." })), "isProjectPublicByDefault": Schema.optionalKey(Schema.Boolean), "kioskAuthType": Schema.optionalKey(Schema.Literals(["PIN_4_DIGITS", "PIN_6_DIGITS", "QR_CODE"]).annotate({ "description": "Represents a kiosk authentication type enum." })), "kioskAutologinEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether auto login in kiosk is enabled." })), "kioskEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether kiosk is enabled." })), "kioskPhotoCaptureEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether photo capture in kiosk is enabled." })), "kioskProjectsAndTasksEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether projects and tasks in kiosk is enabled." })), "locationsEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether locations is enabled." })), "lockTimeEntries": Schema.optionalKey(Schema.String), "lockTimeZone": Schema.optionalKey(Schema.String), "multiFactorEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether two-factor authentication is enabled or not." })), "numberFormat": Schema.optionalKey(Schema.Literals(["COMMA_PERIOD", "PERIOD_COMMA", "QUOTATION_MARK_PERIOD", "SPACE_COMMA"]).annotate({ "description": "Represents a clockify number format enum." })), "onlyAdminsCanChangeBillableStatus": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can change billable status." })), "onlyAdminsCreateProject": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can create projects." })), "onlyAdminsCreateTag": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can create tags." })), "onlyAdminsCreateTask": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can create task." })), "onlyAdminsSeeAllTimeEntries": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see all time entries." })), "onlyAdminsSeeBillableRates": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see billable rates." })), "onlyAdminsSeeDashboard": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see dashboard." })), "onlyAdminsSeeProjectStatus": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see project status." })), "onlyAdminsSeePublicProjectsEntries": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see public project entries." })), "overtimeCalculationPeriod": Schema.optionalKey(Schema.Literals(["DAILY", "WEEKLY", "MONTHLY"]).annotate({ "description": "Represents the overtime calculation period." })), "projectFavorites": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project favorites are allowed." })), "projectGroupingLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project grouping label." })), "projectLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project label." })), "projectPickerSpecialFilter": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project picker special filter is enabled." })), "round": Schema.optionalKey(RoundDto), "schedulingEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether scheduling is enabled." })), "schedulingSettings": Schema.optionalKey(SchedulingSettingsDtoV1), "screenshotsEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether screenshots is enabled." })), "taskBillableEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether task billable is enabled." })), "taskLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task label." })), "taskRateEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether task rate is enabled." })), "timeApprovalEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time approval is enabled." })), "timeOff": Schema.optionalKey(TimeOffDtoV1), "timeRoundingInReports": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time rounding is enabled in reports." })), "timeTrackingMode": Schema.optionalKey(Schema.Literals(["DEFAULT", "STOPWATCH_ONLY"]).annotate({ "description": "Represents a time tracking mode enum." })), "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"]).annotate({ "description": "Represents the time view mode." })), "trackTimeDownToSecond": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time tracking is seconds-accurate. This is now deprecated and durationFormat can now be used to manage Time Duration Format." })), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "whitelistedForAggregateView": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether whitelisted for aggregate view." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "ISO 8601 duration format" })), "workingDays": Schema.optionalKey(Schema.Array(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of working days." })).annotate({ "description": "Represents a list of working days." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "description": "Workspace settings also include Time Duration Format settings.\n\nSetting Time Duration Format by changing the boolean fields\ndecimalFormat and trackTimeDownToSecond is now deprecated.\n\nTime Duration Format can be set by durationFormat enum field.\n\nThree different Time Duration modes will still map the boolean fields:\n\n 1. Full (hh:mm:ss) -> decimalFormat = false, trackTimeDownToSecond = true,\n\n 2. Compact (h:mm) -> decimalFormat = false, trackTimeDownToSecond = false,\n\n 3. Decimal (h:hh) -> decimalFormat = true, trackTimeDownToSecond = true\n\n", "identifier": "WorkspaceSettingsDtoV1" })
504
+ export type WebhooksDtoV1 = { readonly "webhooks"?: ReadonlyArray<WebhookDtoV1>, readonly "workspaceWebhookCount"?: number }
505
+ export const WebhooksDtoV1 = Schema.Struct({ "webhooks": Schema.optionalKey(Schema.Array(WebhookDtoV1).annotate({ "description": "Represents a list of webhook objects for the workspace." })), "workspaceWebhookCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of webhooks for the workspace.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "WebhooksDtoV1" })
506
+ export type TemplateDtoImpl = { readonly "entries"?: ReadonlyArray<TimeEntryWithCustomFieldsDto>, readonly "id"?: string, readonly "name"?: string, readonly "projectsAndTasks"?: ReadonlyArray<ProjectTaskTupleDto>, readonly "userId"?: string, readonly "weekStart"?: string, readonly "workspaceId"?: string }
507
+ export const TemplateDtoImpl = Schema.Struct({ "entries": Schema.optionalKey(Schema.Array(TimeEntryWithCustomFieldsDto).annotate({ "description": "Represents a set of template time entries." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template name." })), "projectsAndTasks": Schema.optionalKey(Schema.Array(ProjectTaskTupleDto).annotate({ "description": "Represents a list of template's projects and tasks." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "weekStart": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a day of the week.", "format": "date" })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) }).annotate({ "identifier": "TemplateDtoImpl" })
508
+ export type ApprovalDetailsDtoV1 = { readonly "approvalRequest"?: ApprovalRequestDtoV1, readonly "approvedTime"?: string, readonly "billableAmount"?: number, readonly "billableTime"?: string, readonly "breakTime"?: string, readonly "costAmount"?: number, readonly "entries"?: ReadonlyArray<TimeEntryInfoDto>, readonly "expenseTotal"?: number, readonly "expenses"?: ReadonlyArray<ExpenseHydratedDto>, readonly "pendingTime"?: string, readonly "trackedTime"?: string }
509
+ export const ApprovalDetailsDtoV1 = Schema.Struct({ "approvalRequest": Schema.optionalKey(ApprovalRequestDtoV1), "approvedTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "billableAmount": Schema.optionalKey(Schema.Number.annotate({ "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "billableTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "breakTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "costAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "entries": Schema.optionalKey(Schema.Array(TimeEntryInfoDto).annotate({ "description": "Represents a list of time entry info data transfer objects." })), "expenseTotal": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "expenses": Schema.optionalKey(Schema.Array(ExpenseHydratedDto).annotate({ "description": "Represents a list of expense hydrated data transfer objects." })), "pendingTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "trackedTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })) }).annotate({ "identifier": "ApprovalDetailsDtoV1" })
510
+ export type ExpensesWithCountDtoV1 = { readonly "count"?: number, readonly "expenses"?: ReadonlyArray<ExpenseHydratedDtoV1> }
511
+ export const ExpensesWithCountDtoV1 = Schema.Struct({ "count": Schema.optionalKey(Schema.Number.annotate({ "description": "Represent result count.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "expenses": Schema.optionalKey(Schema.Array(ExpenseHydratedDtoV1).annotate({ "description": "Represent a list of hydrated expense objects." })) }).annotate({ "description": "Represents an expense with count data transfer object.", "identifier": "ExpensesWithCountDtoV1" })
506
512
  export type UserCustomFieldValueFullDtoV1 = { readonly "customField"?: CustomFieldDtoV1, readonly "customFieldId"?: string, readonly "name"?: string, readonly "sourceType"?: "WORKSPACE" | "USER", readonly "type"?: "TXT" | "NUMBER" | "DROPDOWN_SINGLE" | "DROPDOWN_MULTIPLE" | "CHECKBOX" | "LINK", readonly "userId"?: string, readonly "value"?: { } }
507
- export const UserCustomFieldValueFullDtoV1 = Schema.Struct({ "customField": Schema.optionalKey(CustomFieldDtoV1), "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user custom field name." })), "sourceType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "USER"]).annotate({ "description": "Represents user custom field source type." })), "type": Schema.optionalKey(Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents custom field type." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents user custom field value." })) }).annotate({ "description": "Represents a list of value objects for user’s custom fields." })
508
- export type HolidayDto = { readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationDto, readonly "color"?: string, readonly "datePeriod"?: DatePeriod, readonly "everyoneIncludingNew"?: boolean, readonly "id"?: string, readonly "name"?: string, readonly "occursAnnually"?: boolean, readonly "userGroupIds"?: ReadonlyArray<string>, readonly "userGroups"?: ReadonlyArray<EntityIdNameDto>, readonly "userIds"?: ReadonlyArray<string>, readonly "users"?: ReadonlyArray<EntityIdNameDto>, readonly "workspaceId"?: string }
509
- export const HolidayDto = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationDto), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "datePeriod": Schema.optionalKey(DatePeriod), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents holiday identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the holiday." })), "occursAnnually": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which user groups are included." })).annotate({ "description": "Indicates which user groups are included." }).check(Schema.isUnique())), "userGroups": Schema.optionalKey(Schema.Array(EntityIdNameDto).annotate({ "description": "Contains names of user groups that are assigned to holiday." })), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which users are included." })).annotate({ "description": "Indicates which users are included." }).check(Schema.isUnique())), "users": Schema.optionalKey(Schema.Array(EntityIdNameDto).annotate({ "description": "Contains names of users that are assigned to holiday." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
510
- export type PolicyDtoV1 = { readonly "allowHalfDay"?: boolean, readonly "allowNegativeBalance"?: boolean, readonly "approve"?: PolicyApprovalDto, readonly "archived"?: boolean, readonly "automaticAccrual"?: AutomaticAccrualDto, readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationDto, readonly "color"?: string, readonly "everyoneIncludingNew"?: boolean, readonly "icon"?: "UMBRELLA" | "SNOWFLAKE" | "FAMILY" | "PLANE" | "STETHOSCOPE" | "HEALTH_METRICS" | "CHILDCARE" | "LUGGAGE" | "MONETIZATION" | "CALENDAR", readonly "id"?: string, readonly "name"?: string, readonly "negativeBalance"?: NegativeBalanceDto, readonly "projectId"?: string, readonly "timeUnit"?: "DAYS" | "HOURS", readonly "userGroupIds"?: ReadonlyArray<string>, readonly "userIds"?: ReadonlyArray<string>, readonly "workspaceId"?: string }
511
- export const PolicyDtoV1 = Schema.Struct({ "allowHalfDay": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the half day is allowed." })), "allowNegativeBalance": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the negative balance is allowed." })), "approve": Schema.optionalKey(PolicyApprovalDto), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is archived." })), "automaticAccrual": Schema.optionalKey(AutomaticAccrualDto), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationDto), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the color assigned to the policy." })), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is applied to future new users." })), "icon": Schema.optionalKey(Schema.Literals(["UMBRELLA", "SNOWFLAKE", "FAMILY", "PLANE", "STETHOSCOPE", "HEALTH_METRICS", "CHILDCARE", "LUGGAGE", "MONETIZATION", "CALENDAR"]).annotate({ "description": "Represents the icon assigned to the policy." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents policy identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the policy." })), "negativeBalance": Schema.optionalKey(NegativeBalanceDto), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents the time unit of the policy." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents user groups' identifiers across the system. Indicates which user groups are included in the policy." })).annotate({ "description": "Represents user groups' identifiers across the system. Indicates which user groups are included in the policy." }).check(Schema.isUnique())), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents users' identifiers across the system. Indicates which users are included in the policy." })).annotate({ "description": "Represents users' identifiers across the system. Indicates which users are included in the policy." }).check(Schema.isUnique())), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
513
+ export const UserCustomFieldValueFullDtoV1 = Schema.Struct({ "customField": Schema.optionalKey(CustomFieldDtoV1), "customFieldId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents custom field identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user custom field name." })), "sourceType": Schema.optionalKey(Schema.Literals(["WORKSPACE", "USER"]).annotate({ "description": "Represents user custom field source type." })), "type": Schema.optionalKey(Schema.Literals(["TXT", "NUMBER", "DROPDOWN_SINGLE", "DROPDOWN_MULTIPLE", "CHECKBOX", "LINK"]).annotate({ "description": "Represents custom field type." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "value": Schema.optionalKey(Schema.Struct({ }).annotate({ "description": "Represents user custom field value." })) }).annotate({ "description": "Represents a list of value objects for user’s custom fields.", "identifier": "UserCustomFieldValueFullDtoV1" })
512
514
  export type CreateHolidayRequestV1 = { readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationRequest, readonly "color"?: string, readonly "datePeriod": DatePeriodRequest, readonly "everyoneIncludingNew"?: boolean, readonly "name": string, readonly "occursAnnually"?: boolean, readonly "userGroups"?: UserGroupIdsSchema, readonly "users"?: UserIdsSchema }
513
- export const CreateHolidayRequestV1 = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "datePeriod": DatePeriodRequest, "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "name": Schema.String.annotate({ "description": "Provide the name of the holiday." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(100)), "occursAnnually": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." })), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "users": Schema.optionalKey(UserIdsSchema) })
514
- export type CreatePolicyRequestV1 = { readonly "allowHalfDay"?: boolean, readonly "allowNegativeBalance"?: boolean, readonly "approve": PolicyApprovalDto, readonly "archived"?: boolean, readonly "automaticAccrual"?: AutomaticAccrualRequest, readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationRequest, readonly "color"?: string, readonly "everyoneIncludingNew"?: boolean, readonly "hasExpiration"?: boolean, readonly "icon"?: "UMBRELLA" | "SNOWFLAKE" | "FAMILY" | "PLANE" | "STETHOSCOPE" | "HEALTH_METRICS" | "CHILDCARE" | "LUGGAGE" | "MONETIZATION" | "CALENDAR", readonly "name": string, readonly "negativeBalance"?: NegativeBalanceRequest, readonly "timeUnit"?: "DAYS" | "HOURS", readonly "userGroups"?: UserGroupIdsSchema, readonly "users"?: UserIdsSchema }
515
- export const CreatePolicyRequestV1 = Schema.Struct({ "allowHalfDay": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether policy allows half days." })), "allowNegativeBalance": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether policy allows negative balances." })), "approve": PolicyApprovalDto, "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether policy is archived." })), "automaticAccrual": Schema.optionalKey(AutomaticAccrualRequest), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is to be applied to future new users." })), "hasExpiration": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy balance should have expiration" })), "icon": Schema.optionalKey(Schema.Literals(["UMBRELLA", "SNOWFLAKE", "FAMILY", "PLANE", "STETHOSCOPE", "HEALTH_METRICS", "CHILDCARE", "LUGGAGE", "MONETIZATION", "CALENDAR"]).annotate({ "description": "Provide icon." })), "name": Schema.String.annotate({ "description": "Represents a name of new policy." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(100)), "negativeBalance": Schema.optionalKey(NegativeBalanceRequest), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Indicates time unit of the policy. " })), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "users": Schema.optionalKey(UserIdsSchema) })
515
+ export const CreateHolidayRequestV1 = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "datePeriod": DatePeriodRequest, "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "name": Schema.String.annotate({ "description": "Provide the name of the holiday." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" })), "occursAnnually": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." })), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "users": Schema.optionalKey(UserIdsSchema) }).annotate({ "identifier": "CreateHolidayRequestV1" })
516
516
  export type UpdateHolidayRequestV1 = { readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationRequest, readonly "color"?: string, readonly "datePeriod": DatePeriodRequest, readonly "everyoneIncludingNew"?: boolean, readonly "name": string, readonly "occursAnnually": boolean, readonly "userGroups"?: ContainsUserGroupFilterRequest, readonly "users"?: ContainsUsersFilterRequestForHoliday }
517
- export const UpdateHolidayRequestV1 = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "datePeriod": DatePeriodRequest, "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "name": Schema.String.annotate({ "description": "Provide the name you would like to use for updating the holiday." }).check(Schema.isMinLength(1)), "occursAnnually": Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." }), "userGroups": Schema.optionalKey(ContainsUserGroupFilterRequest), "users": Schema.optionalKey(ContainsUsersFilterRequestForHoliday) })
517
+ export const UpdateHolidayRequestV1 = Schema.Struct({ "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "datePeriod": DatePeriodRequest, "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "name": Schema.String.annotate({ "description": "Provide the name you would like to use for updating the holiday." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "occursAnnually": Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." }), "userGroups": Schema.optionalKey(ContainsUserGroupFilterRequest), "users": Schema.optionalKey(ContainsUsersFilterRequestForHoliday) }).annotate({ "identifier": "UpdateHolidayRequestV1" })
518
+ export type CreatePolicyRequestV1 = { readonly "allowHalfDay"?: boolean, readonly "allowNegativeBalance"?: boolean, readonly "approve": PolicyApprovalDto, readonly "archived"?: boolean, readonly "automaticAccrual"?: AutomaticAccrualRequest, readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationRequest, readonly "color"?: string, readonly "everyoneIncludingNew"?: boolean, readonly "hasExpiration"?: boolean, readonly "icon"?: "UMBRELLA" | "SNOWFLAKE" | "FAMILY" | "PLANE" | "STETHOSCOPE" | "HEALTH_METRICS" | "CHILDCARE" | "LUGGAGE" | "MONETIZATION" | "CALENDAR", readonly "name": string, readonly "negativeBalance"?: NegativeBalanceRequest, readonly "timeUnit"?: "DAYS" | "HOURS", readonly "userGroups"?: UserGroupIdsSchema, readonly "users"?: UserIdsSchema }
519
+ export const CreatePolicyRequestV1 = Schema.Struct({ "allowHalfDay": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether policy allows half days." })), "allowNegativeBalance": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether policy allows negative balances." })), "approve": PolicyApprovalDto, "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether policy is archived." })), "automaticAccrual": Schema.optionalKey(AutomaticAccrualRequest), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is to be applied to future new users." })), "hasExpiration": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy balance should have expiration" })), "icon": Schema.optionalKey(Schema.Literals(["UMBRELLA", "SNOWFLAKE", "FAMILY", "PLANE", "STETHOSCOPE", "HEALTH_METRICS", "CHILDCARE", "LUGGAGE", "MONETIZATION", "CALENDAR"]).annotate({ "description": "Provide icon." })), "name": Schema.String.annotate({ "description": "Represents a name of new policy." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" })), "negativeBalance": Schema.optionalKey(NegativeBalanceRequest), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Indicates time unit of the policy. " })), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "users": Schema.optionalKey(UserIdsSchema) }).annotate({ "identifier": "CreatePolicyRequestV1" })
518
520
  export type UpdatePolicyRequestV1 = { readonly "allowHalfDay": boolean, readonly "allowNegativeBalance": boolean, readonly "approve": PolicyApprovalDto, readonly "archived": boolean, readonly "automaticAccrual"?: AutomaticAccrualRequest, readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationRequest, readonly "color"?: string, readonly "everyoneIncludingNew": boolean, readonly "hasExpiration": boolean, readonly "icon"?: "UMBRELLA" | "SNOWFLAKE" | "FAMILY" | "PLANE" | "STETHOSCOPE" | "HEALTH_METRICS" | "CHILDCARE" | "LUGGAGE" | "MONETIZATION" | "CALENDAR", readonly "name": string, readonly "negativeBalance"?: NegativeBalanceRequest, readonly "userGroups"?: UserGroupIdsSchema, readonly "users"?: UserIdsSchema }
519
- export const UpdatePolicyRequestV1 = Schema.Struct({ "allowHalfDay": Schema.Boolean.annotate({ "description": "Indicates whether policy allows half day." }), "allowNegativeBalance": Schema.Boolean.annotate({ "description": "Indicates whether policy allows negative balance." }), "approve": PolicyApprovalDto, "archived": Schema.Boolean.annotate({ "description": "Indicates whether policy is archived." }), "automaticAccrual": Schema.optionalKey(AutomaticAccrualRequest), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "everyoneIncludingNew": Schema.Boolean.annotate({ "description": "Indicates whether the policy is shown to new users." }), "hasExpiration": Schema.Boolean.annotate({ "description": "Indicates whether the policy has expiration." }), "icon": Schema.optionalKey(Schema.Literals(["UMBRELLA", "SNOWFLAKE", "FAMILY", "PLANE", "STETHOSCOPE", "HEALTH_METRICS", "CHILDCARE", "LUGGAGE", "MONETIZATION", "CALENDAR"]).annotate({ "description": "Provide icon." })), "name": Schema.String.annotate({ "description": "Provide the name you would like to use for updating the policy." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(100)), "negativeBalance": Schema.optionalKey(NegativeBalanceRequest), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "users": Schema.optionalKey(UserIdsSchema) })
520
- export type WorkspaceSettingsDtoV1 = { readonly "activeBillableHours"?: boolean, readonly "adminOnlyPages"?: "PROJECT" | "TEAM" | "REPORTS", readonly "automaticLock"?: AutomaticLockDtoV1, readonly "canSeeTimeSheet"?: boolean, readonly "canSeeTracker"?: boolean, readonly "currencyFormat"?: "CURRENCY_SPACE_VALUE" | "VALUE_SPACE_CURRENCY" | "CURRENCY_VALUE" | "VALUE_CURRENCY", readonly "defaultBillableProjects"?: boolean, readonly "durationFormat"?: "FULL" | "COMPACT" | "DECIMAL", readonly "entityCreationPermissions"?: EntityCreationPermissionsDtoV1, readonly "forceDescription"?: boolean, readonly "forceProjects"?: boolean, readonly "forceTags"?: boolean, readonly "forceTasks"?: boolean, readonly "isProjectPublicByDefault"?: boolean, readonly "lockTimeEntries"?: string, readonly "lockTimeZone"?: string, readonly "multiFactorEnabled"?: boolean, readonly "numberFormat"?: "COMMA_PERIOD" | "PERIOD_COMMA" | "QUOTATION_MARK_PERIOD" | "SPACE_COMMA", readonly "onlyAdminsCanChangeBillableStatus"?: boolean, readonly "onlyAdminsCreateProject"?: boolean, readonly "onlyAdminsCreateTag"?: boolean, readonly "onlyAdminsCreateTask"?: boolean, readonly "onlyAdminsSeeAllTimeEntries"?: boolean, readonly "onlyAdminsSeeBillableRates"?: boolean, readonly "onlyAdminsSeeDashboard"?: boolean, readonly "onlyAdminsSeePublicProjectsEntries"?: boolean, readonly "projectFavorites"?: boolean, readonly "projectGroupingLabel"?: string, readonly "projectLabel"?: string, readonly "projectPickerSpecialFilter"?: boolean, readonly "round"?: RoundDto, readonly "taskLabel"?: string, readonly "timeRoundingInReports"?: boolean, readonly "timeTrackingMode"?: "DEFAULT" | "STOPWATCH_ONLY", readonly "trackTimeDownToSecond"?: boolean, readonly "workingDays"?: ReadonlyArray<"MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY"> }
521
- export const WorkspaceSettingsDtoV1 = Schema.Struct({ "activeBillableHours": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether billable hours is active." })), "adminOnlyPages": Schema.optionalKey(Schema.Literals(["PROJECT", "TEAM", "REPORTS"]).annotate({ "description": "Represents a unique list of protected page enums." })), "automaticLock": Schema.optionalKey(AutomaticLockDtoV1), "canSeeTimeSheet": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether timesheets are visible or not." })), "canSeeTracker": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time trackers are visible or not." })), "currencyFormat": Schema.optionalKey(Schema.Literals(["CURRENCY_SPACE_VALUE", "VALUE_SPACE_CURRENCY", "CURRENCY_VALUE", "VALUE_CURRENCY"]).annotate({ "description": "Represents a clockify currency format enum." })), "defaultBillableProjects": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether projects are billable by default." })), "durationFormat": Schema.optionalKey(Schema.Literals(["FULL", "COMPACT", "DECIMAL"]).annotate({ "description": "Represents a clockify duration format enum. Used to set Duration format instead of setting decimalFormat and trackTimeDownToSecond." })), "entityCreationPermissions": Schema.optionalKey(EntityCreationPermissionsDtoV1), "forceDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether description are forced or not." })), "forceProjects": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether projects are forced or not." })), "forceTags": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether tags are forced or not." })), "forceTasks": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether tasks are forced or not." })), "isProjectPublicByDefault": Schema.optionalKey(Schema.Boolean), "lockTimeEntries": Schema.optionalKey(Schema.String), "lockTimeZone": Schema.optionalKey(Schema.String), "multiFactorEnabled": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether two-factor authentication is enabled or not." })), "numberFormat": Schema.optionalKey(Schema.Literals(["COMMA_PERIOD", "PERIOD_COMMA", "QUOTATION_MARK_PERIOD", "SPACE_COMMA"]).annotate({ "description": "Represents a clockify number format enum." })), "onlyAdminsCanChangeBillableStatus": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can change billable status." })), "onlyAdminsCreateProject": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can create projects." })), "onlyAdminsCreateTag": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can create tags." })), "onlyAdminsCreateTask": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can create task." })), "onlyAdminsSeeAllTimeEntries": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see all time entries." })), "onlyAdminsSeeBillableRates": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see billable rates." })), "onlyAdminsSeeDashboard": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see dashboard." })), "onlyAdminsSeePublicProjectsEntries": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether only admins can see public project entries." })), "projectFavorites": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project favorites are allowed." })), "projectGroupingLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project grouping label." })), "projectLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project label." })), "projectPickerSpecialFilter": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project picker special filter is enabled." })), "round": Schema.optionalKey(RoundDto), "taskLabel": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task label." })), "timeRoundingInReports": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time rounding is enabled in reports." })), "timeTrackingMode": Schema.optionalKey(Schema.Literals(["DEFAULT", "STOPWATCH_ONLY"]).annotate({ "description": "Represents a time tracking mode enum." })), "trackTimeDownToSecond": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether time tracking is seconds-accurate. This is now deprecated and durationFormat can now be used to manage Time Duration Format." })), "workingDays": Schema.optionalKey(Schema.Array(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of working days." })).annotate({ "description": "Represents a list of working days." }).check(Schema.isUnique())) }).annotate({ "description": "Workspace settings also include Time Duration Format settings.\n\nSetting Time Duration Format by changing the boolean fields\ndecimalFormat and trackTimeDownToSecond is now deprecated.\n\nTime Duration Format can be set by durationFormat enum field.\n\nThree different Time Duration modes will still map the boolean fields:\n\n 1. Full (hh:mm:ss) -> decimalFormat = false, trackTimeDownToSecond = true,\n\n 2. Compact (h:mm) -> decimalFormat = false, trackTimeDownToSecond = false,\n\n 3. Decimal (h:hh) -> decimalFormat = true, trackTimeDownToSecond = true\n\n" })
522
- export type ProjectRequest = { readonly "billable"?: boolean, readonly "clientId"?: string, readonly "color"?: string, readonly "costRate"?: CostRateRequestV1, readonly "estimate"?: EstimateRequest, readonly "hourlyRate"?: HourlyRateRequestV1, readonly "isPublic"?: boolean, readonly "memberships"?: ReadonlyArray<MembershipRequest>, readonly "name": string, readonly "note"?: string, readonly "tasks"?: ReadonlyArray<TaskRequest> }
523
- export const ProjectRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")))), "costRate": Schema.optionalKey(CostRateRequestV1), "estimate": Schema.optionalKey(EstimateRequest), "hourlyRate": Schema.optionalKey(HourlyRateRequestV1), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is public or not." })), "memberships": Schema.optionalKey(Schema.Array(MembershipRequest).annotate({ "description": "Represents a list of membership request objects." })), "name": Schema.String.annotate({ "description": "Represents a project name." }).check(Schema.isMinLength(2)).check(Schema.isMaxLength(250)), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project note." }).check(Schema.isMaxLength(16384))), "tasks": Schema.optionalKey(Schema.Array(TaskRequest).annotate({ "description": "Represents a list of task request objects." })) })
521
+ export const UpdatePolicyRequestV1 = Schema.Struct({ "allowHalfDay": Schema.Boolean.annotate({ "description": "Indicates whether policy allows half day." }), "allowNegativeBalance": Schema.Boolean.annotate({ "description": "Indicates whether policy allows negative balance." }), "approve": PolicyApprovalDto, "archived": Schema.Boolean.annotate({ "description": "Indicates whether policy is archived." }), "automaticAccrual": Schema.optionalKey(AutomaticAccrualRequest), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationRequest), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "everyoneIncludingNew": Schema.Boolean.annotate({ "description": "Indicates whether the policy is shown to new users." }), "hasExpiration": Schema.Boolean.annotate({ "description": "Indicates whether the policy has expiration." }), "icon": Schema.optionalKey(Schema.Literals(["UMBRELLA", "SNOWFLAKE", "FAMILY", "PLANE", "STETHOSCOPE", "HEALTH_METRICS", "CHILDCARE", "LUGGAGE", "MONETIZATION", "CALENDAR"]).annotate({ "description": "Provide icon." })), "name": Schema.String.annotate({ "description": "Provide the name you would like to use for updating the policy." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" })), "negativeBalance": Schema.optionalKey(NegativeBalanceRequest), "userGroups": Schema.optionalKey(UserGroupIdsSchema), "users": Schema.optionalKey(UserIdsSchema) }).annotate({ "identifier": "UpdatePolicyRequestV1" })
522
+ export type HolidayDto = { readonly "autoImportHolidaySettingDto"?: AutoImportHolidaySettingDto, readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationDto, readonly "color"?: string, readonly "countryName"?: string, readonly "datePeriod"?: DatePeriod, readonly "everyoneIncludingNew"?: boolean, readonly "id"?: string, readonly "imported"?: boolean, readonly "name"?: string, readonly "occursAnnually"?: boolean, readonly "userGroupIds"?: ReadonlyArray<string>, readonly "userGroups"?: ReadonlyArray<EntityIdNameDto>, readonly "userIds"?: ReadonlyArray<string>, readonly "users"?: ReadonlyArray<EntityIdNameDto>, readonly "workspaceId"?: string }
523
+ export const HolidayDto = Schema.Struct({ "autoImportHolidaySettingDto": Schema.optionalKey(AutoImportHolidaySettingDto), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationDto), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Provide color in format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "countryName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents imported public holiday country name." })), "datePeriod": Schema.optionalKey(DatePeriod), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday is shown to new users." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents holiday identifier across the system." })), "imported": Schema.optionalKey(Schema.Boolean), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the holiday." })), "occursAnnually": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the holiday occurs annually." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which user groups are included." })).annotate({ "description": "Indicates which user groups are included." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "userGroups": Schema.optionalKey(Schema.Array(EntityIdNameDto).annotate({ "description": "Contains names of user groups that are assigned to holiday." })), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Indicates which users are included." })).annotate({ "description": "Indicates which users are included." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "users": Schema.optionalKey(Schema.Array(EntityIdNameDto).annotate({ "description": "Contains names of users that are assigned to holiday." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "HolidayDto" })
524
+ export type PolicyDtoV1 = { readonly "allowHalfDay"?: boolean, readonly "allowNegativeBalance"?: boolean, readonly "approve"?: PolicyApprovalDto, readonly "archived"?: boolean, readonly "automaticAccrual"?: AutomaticAccrualDto, readonly "automaticTimeEntryCreation"?: AutomaticTimeEntryCreationDto, readonly "color"?: string, readonly "everyoneIncludingNew"?: boolean, readonly "icon"?: "UMBRELLA" | "SNOWFLAKE" | "FAMILY" | "PLANE" | "STETHOSCOPE" | "HEALTH_METRICS" | "CHILDCARE" | "LUGGAGE" | "MONETIZATION" | "CALENDAR", readonly "id"?: string, readonly "name"?: string, readonly "negativeBalance"?: NegativeBalanceDto, readonly "projectId"?: string, readonly "timeUnit"?: "DAYS" | "HOURS", readonly "userGroupIds"?: ReadonlyArray<string>, readonly "userIds"?: ReadonlyArray<string>, readonly "workspaceId"?: string }
525
+ export const PolicyDtoV1 = Schema.Struct({ "allowHalfDay": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the half day is allowed." })), "allowNegativeBalance": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the negative balance is allowed." })), "approve": Schema.optionalKey(PolicyApprovalDto), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is archived." })), "automaticAccrual": Schema.optionalKey(AutomaticAccrualDto), "automaticTimeEntryCreation": Schema.optionalKey(AutomaticTimeEntryCreationDto), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the color assigned to the policy." })), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is applied to future new users." })), "icon": Schema.optionalKey(Schema.Literals(["UMBRELLA", "SNOWFLAKE", "FAMILY", "PLANE", "STETHOSCOPE", "HEALTH_METRICS", "CHILDCARE", "LUGGAGE", "MONETIZATION", "CALENDAR"]).annotate({ "description": "Represents the icon assigned to the policy." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents policy identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the name of the policy." })), "negativeBalance": Schema.optionalKey(NegativeBalanceDto), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents the time unit of the policy." })), "userGroupIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents user groups' identifiers across the system. Indicates which user groups are included in the policy." })).annotate({ "description": "Represents user groups' identifiers across the system. Indicates which user groups are included in the policy." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "userIds": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents users' identifiers across the system. Indicates which users are included in the policy." })).annotate({ "description": "Represents users' identifiers across the system. Indicates which users are included in the policy." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "PolicyDtoV1" })
526
+ export type InvoiceInfoResponseDtoV1 = { readonly "invoices"?: ReadonlyArray<InvoiceInfoV1>, readonly "total"?: number }
527
+ export const InvoiceInfoResponseDtoV1 = Schema.Struct({ "invoices": Schema.optionalKey(Schema.Array(InvoiceInfoV1).annotate({ "description": "Represents a list of invoice info." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the total invoice count.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "InvoiceInfoResponseDtoV1" })
528
+ export type InvoiceOverviewDtoV1 = { readonly "amount"?: number, readonly "balance"?: number, readonly "billFrom"?: string, readonly "calculationType"?: CalculationType, readonly "clientAddress"?: string, readonly "clientId"?: string, readonly "clientName"?: string, readonly "companyId"?: string, readonly "containsImportedExpenses"?: boolean, readonly "containsImportedTimes"?: boolean, readonly "currency"?: string, readonly "discount"?: number, readonly "discountAmount"?: number, readonly "dueDate"?: string, readonly "id"?: string, readonly "issuedDate"?: string, readonly "items"?: ReadonlyArray<InvoiceItemDto>, readonly "note"?: string, readonly "number"?: string, readonly "paid"?: number, readonly "status"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE", readonly "subject"?: string, readonly "subtotal"?: number, readonly "tax"?: number, readonly "tax2"?: number, readonly "tax2Amount"?: number, readonly "taxAmount"?: number, readonly "taxType"?: TaxType, readonly "userId"?: string, readonly "visibleZeroFields"?: VisibleZeroFieldsInvoice }
529
+ export const InvoiceOverviewDtoV1 = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice balance amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "billFrom": Schema.optionalKey(Schema.String.annotate({ "description": "Represents to whom the invoice should be billed from." })), "calculationType": Schema.optionalKey(CalculationType), "clientAddress": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client address." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name for an invoice." })), "companyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents company identifier across the system." })), "containsImportedExpenses": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether invoice contains imported expenses." })), "containsImportedTimes": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether invoice contains imported items." })), "currency": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the currency used by the invoice." })), "discount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice discount amount as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "discountAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice discount amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "dueDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice due date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents invoice identifier across the system." })), "issuedDate": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice issued date in yyyy-MM-ddThh:mm:ssZ format.", "format": "date-time" })), "items": Schema.optionalKey(Schema.Array(InvoiceItemDto).annotate({ "description": "Represents a list of invoice item datatransfer objects." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice note." })), "number": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice number." })), "paid": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice paid amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "status": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"]).annotate({ "description": "Represents the status of an invoice." })), "subject": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an invoice subject." })), "subtotal": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice subtotal as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "tax": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "tax2": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as double.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "tax2Amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "taxAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an invoice tax amount as long.", "format": "int64" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "taxType": Schema.optionalKey(TaxType), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "visibleZeroFields": Schema.optionalKey(VisibleZeroFieldsInvoice) }).annotate({ "identifier": "InvoiceOverviewDtoV1" })
530
+ export type AddLimitedUsersRequest = { readonly "users": ReadonlyArray<LimitedUserRequest> }
531
+ export const AddLimitedUsersRequest = Schema.Struct({ "users": Schema.Array(LimitedUserRequest).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })).check(Schema.isMaxLength(250).annotate({ "expected": "a value with a length of at most 250" })) }).annotate({ "identifier": "AddLimitedUsersRequest" })
524
532
  export type UpdateProjectMembershipsRequest = { readonly "memberships": ReadonlyArray<UserIdWithRatesRequest>, readonly "userGroups"?: UserGroupIdsSchema }
525
- export const UpdateProjectMembershipsRequest = Schema.Struct({ "memberships": Schema.Array(UserIdWithRatesRequest).annotate({ "description": "Represents a list of users with id and rates request objects." }), "userGroups": Schema.optionalKey(UserGroupIdsSchema) })
533
+ export const UpdateProjectMembershipsRequest = Schema.Struct({ "memberships": Schema.Array(UserIdWithRatesRequest).annotate({ "description": "Represents a list of users with id and rates request objects." }), "userGroups": Schema.optionalKey(UserGroupIdsSchema) }).annotate({ "identifier": "UpdateProjectMembershipsRequest" })
534
+ export type ProjectRequest = { readonly "billable"?: boolean, readonly "clientId"?: string, readonly "color"?: string, readonly "costRate"?: CostRateRequestV1, readonly "estimate"?: EstimateRequest, readonly "hourlyRate"?: HourlyRateRequestV1, readonly "isPublic"?: boolean, readonly "memberships"?: ReadonlyArray<MembershipRequest>, readonly "name": string, readonly "note"?: string, readonly "tasks"?: ReadonlyArray<TaskRequest> }
535
+ export const ProjectRequest = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }).check(Schema.isPattern(new RegExp("^#(?:[0-9a-fA-F]{6}){1}$")).annotate({ "expected": "a string matching the RegExp ^#(?:[0-9a-fA-F]{6}){1}$" }))), "costRate": Schema.optionalKey(CostRateRequestV1), "estimate": Schema.optionalKey(EstimateRequest), "hourlyRate": Schema.optionalKey(HourlyRateRequestV1), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is public or not." })), "memberships": Schema.optionalKey(Schema.Array(MembershipRequest).annotate({ "description": "Represents a list of membership request objects." })), "name": Schema.String.annotate({ "description": "Represents a project name." }).check(Schema.isMinLength(2).annotate({ "expected": "a value with a length of at least 2" })).check(Schema.isMaxLength(250).annotate({ "expected": "a value with a length of at most 250" })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project note." }).check(Schema.isMaxLength(16384).annotate({ "expected": "a value with a length of at most 16384" }))), "tasks": Schema.optionalKey(Schema.Array(TaskRequest).annotate({ "description": "Represents a list of task request objects." })) }).annotate({ "identifier": "ProjectRequest" })
536
+ export type AssignmentDtoV1 = { readonly "billable"?: boolean, readonly "excludeDays"?: ReadonlyArray<SchedulingExcludeDay>, readonly "hoursPerDay"?: number, readonly "id"?: string, readonly "includeNonWorkingDays"?: boolean, readonly "note"?: string, readonly "period"?: DateRangeDto, readonly "projectId"?: string, readonly "published"?: boolean, readonly "recurring"?: RecurringAssignmentDtoV1, readonly "startTime"?: string, readonly "taskId"?: string, readonly "userId"?: string, readonly "workspaceId"?: string }
537
+ export const AssignmentDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "excludeDays": Schema.optionalKey(Schema.Array(SchedulingExcludeDay).annotate({ "description": "Represents a list of excluded days objects" }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "hoursPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents assignment total hours per day.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment identifier across the system." })), "includeNonWorkingDays": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment should include non-working days or not." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment note." })), "period": Schema.optionalKey(DateRangeDto), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "published": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is published or not." })), "recurring": Schema.optionalKey(RecurringAssignmentDtoV1), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents start time in hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "AssignmentDtoV1" })
538
+ export type AssignmentCreateRequestV1 = { readonly "billable"?: boolean, readonly "end": string, readonly "hoursPerDay": number, readonly "includeNonWorkingDays"?: boolean, readonly "note"?: string, readonly "projectId": string, readonly "recurringAssignment"?: CreateRecurringAssignmentRequestV1, readonly "start": string, readonly "startTime"?: string, readonly "taskId"?: string, readonly "userId": string }
539
+ export const AssignmentCreateRequestV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "hoursPerDay": Schema.Number.annotate({ "description": "Represents assignment total hours per day.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" })), "includeNonWorkingDays": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to include non-working days or not." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an assignment note." }).check(Schema.isMinLength(0).annotate({ "expected": "a value with a length of at least 0" })).check(Schema.isMaxLength(100).annotate({ "expected": "a value with a length of at most 100" }))), "projectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "recurringAssignment": Schema.optionalKey(CreateRecurringAssignmentRequestV1), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start time in the hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })) }).annotate({ "identifier": "AssignmentCreateRequestV1" })
540
+ export type CreateTimeOffRequestV1Request = { readonly "note"?: string, readonly "timeOffPeriod": TimeOffRequestPeriodV1Request }
541
+ export const CreateTimeOffRequestV1Request = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the note you would like to use for creating the time off request." })), "timeOffPeriod": TimeOffRequestPeriodV1Request }).annotate({ "identifier": "CreateTimeOffRequestV1Request" })
526
542
  export type TimeOffRequestFullV1Dto = { readonly "balance"?: number, readonly "balanceDiff"?: number, readonly "createdAt"?: string, readonly "id"?: string, readonly "note"?: string, readonly "policyId"?: string, readonly "policyName"?: string, readonly "requesterUserId"?: string, readonly "requesterUserName"?: string, readonly "status"?: TimeOffRequestStatus, readonly "timeOffPeriod"?: TimeOffRequestPeriodDto, readonly "timeUnit"?: "DAYS" | "HOURS", readonly "userEmail"?: string, readonly "userId"?: string, readonly "userName"?: string, readonly "userTimeZone"?: string, readonly "workspaceId"?: string }
527
- export const TimeOffRequestFullV1Dto = Schema.Struct({ "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the time off balance.", "format": "double" }).check(Schema.isFinite())), "balanceDiff": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the balance difference.", "format": "double" }).check(Schema.isFinite())), "createdAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date when time off request is created. It is in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time off requester identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the note of the time off request." })), "policyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents policy identifier across the system." })), "policyName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the policy name of the time off request." })), "requesterUserId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents requester user's id." })), "requesterUserName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents requester user's username." })), "status": Schema.optionalKey(TimeOffRequestStatus), "timeOffPeriod": Schema.optionalKey(TimeOffRequestPeriodDto), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents the time unit of the time off request." })), "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's email" })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's username." })), "userTimeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's time zone" })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents the array of time off requests." })
543
+ export const TimeOffRequestFullV1Dto = Schema.Struct({ "balance": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the time off balance.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "balanceDiff": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the balance difference.", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "createdAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date when time off request is created. It is in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time off requester identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the note of the time off request." })), "policyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents policy identifier across the system." })), "policyName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the policy name of the time off request." })), "requesterUserId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents requester user's id." })), "requesterUserName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents requester user's username." })), "status": Schema.optionalKey(TimeOffRequestStatus), "timeOffPeriod": Schema.optionalKey(TimeOffRequestPeriodDto), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents the time unit of the time off request." })), "userEmail": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's email" })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "userName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's username." })), "userTimeZone": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's time zone" })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents the array of time off requests.", "identifier": "TimeOffRequestFullV1Dto" })
528
544
  export type TimeOffRequestV1Dto = { readonly "balanceDiff"?: number, readonly "createdAt"?: string, readonly "id"?: string, readonly "note"?: string, readonly "policyId"?: string, readonly "status"?: TimeOffRequestStatus, readonly "timeOffPeriod"?: TimeOffRequestPeriodDto, readonly "userId"?: string, readonly "workspaceId"?: string }
529
- export const TimeOffRequestV1Dto = Schema.Struct({ "balanceDiff": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the balance difference", "format": "double" }).check(Schema.isFinite())), "createdAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date when time off request is created. Date is in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time off requester identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the note of the time off request." })), "policyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents policy identifier across the system." })), "status": Schema.optionalKey(TimeOffRequestStatus), "timeOffPeriod": Schema.optionalKey(TimeOffRequestPeriodDto), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
530
- export type CreateTimeOffRequestV1Request = { readonly "note"?: string, readonly "timeOffPeriod": TimeOffRequestPeriodV1Request }
531
- export const CreateTimeOffRequestV1Request = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the note you would like to use for creating the time off request." })), "timeOffPeriod": TimeOffRequestPeriodV1Request })
532
- export type ProjectDtoImplV1 = { readonly "archived"?: boolean, readonly "billable"?: boolean, readonly "budgetEstimate"?: EstimateWithOptionsDto, readonly "clientId"?: string, readonly "clientName"?: string, readonly "color"?: string, readonly "costRate"?: RateDtoV1, readonly "duration"?: string, readonly "estimate"?: EstimateDtoV1, readonly "estimateReset"?: EstimateResetDto, readonly "hourlyRate"?: RateDtoV1, readonly "id"?: string, readonly "isPublic"?: boolean, readonly "isTemplate"?: boolean, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name"?: string, readonly "note"?: string, readonly "public"?: boolean, readonly "template"?: boolean, readonly "timeEstimate"?: TimeEstimateDto, readonly "workspaceId"?: string }
533
- export const ProjectDtoImplV1 = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." })), "budgetEstimate": Schema.optionalKey(EstimateWithOptionsDto), "clientId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client identifier across the system." })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name." })), "color": Schema.optionalKey(Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." })), "costRate": Schema.optionalKey(RateDtoV1), "duration": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project duration in milliseconds." })), "estimate": Schema.optionalKey(EstimateDtoV1), "estimateReset": Schema.optionalKey(EstimateResetDto), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "isTemplate": Schema.optionalKey(Schema.Boolean.annotate({ "writeOnly": true })), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a project name." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project note." })), "public": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is public or not." })), "template": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })), "timeEstimate": Schema.optionalKey(TimeEstimateDto), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
534
- export type ProjectDtoV1 = { readonly "archived": boolean, readonly "billable": boolean, readonly "budgetEstimate"?: EstimateWithOptionsDto, readonly "color": string, readonly "costRate"?: RateDtoV1, readonly "duration"?: string, readonly "estimate"?: EstimateDtoV1, readonly "hourlyRate"?: RateDtoV1, readonly "id": string, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name": string, readonly "note"?: string, readonly "public"?: boolean, readonly "template"?: boolean, readonly "timeEstimate"?: TimeEstimateDto, readonly "workspaceId": string }
535
- export const ProjectDtoV1 = Schema.Struct({ "archived": Schema.Boolean.annotate({ "description": "Indicates whether project is archived or not." }), "billable": Schema.Boolean.annotate({ "description": "Indicates whether project is billable or not." }), "budgetEstimate": Schema.optionalKey(EstimateWithOptionsDto), "color": Schema.String.annotate({ "description": "Color format ^#(?:[0-9a-fA-F]{6}){1}$. Explanation: A valid color code should start with '#' and consist of six hexadecimal characters, representing a color in hexadecimal format. Color value is in standard RGB hexadecimal format." }), "costRate": Schema.optionalKey(RateDtoV1), "duration": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project duration in milliseconds." })), "estimate": Schema.optionalKey(EstimateDtoV1), "hourlyRate": Schema.optionalKey(RateDtoV1), "id": Schema.String.annotate({ "description": "Represents project identifier across the system." }), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.String, "note": Schema.optionalKey(Schema.String), "public": Schema.optionalKey(Schema.Boolean), "template": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })), "timeEstimate": Schema.optionalKey(TimeEstimateDto), "workspaceId": Schema.String })
536
- export type AssignmentCreateRequestV1 = { readonly "billable"?: boolean, readonly "end": string, readonly "hoursPerDay": number, readonly "includeNonWorkingDays"?: boolean, readonly "note"?: string, readonly "projectId": string, readonly "recurringAssignment"?: CreateRecurringAssignmentRequestV1, readonly "start": string, readonly "startTime"?: string, readonly "taskId"?: string, readonly "userId": string }
537
- export const AssignmentCreateRequestV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "hoursPerDay": Schema.Number.annotate({ "description": "Represents assignment total hours per day.", "format": "double" }).check(Schema.isFinite()), "includeNonWorkingDays": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether to include non-working days or not." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an assignment note." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))), "projectId": Schema.String.annotate({ "description": "Represents a project identifier across the system." }).check(Schema.isMinLength(1)), "recurringAssignment": Schema.optionalKey(CreateRecurringAssignmentRequestV1), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start time in the hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a task identifier across the system." })), "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }).check(Schema.isMinLength(1)) })
538
- export type AssignmentDtoV1 = { readonly "billable"?: boolean, readonly "excludeDays"?: ReadonlyArray<SchedulingExcludeDay>, readonly "hoursPerDay"?: number, readonly "id"?: string, readonly "includeNonWorkingDays"?: boolean, readonly "note"?: string, readonly "period"?: DateRangeDto, readonly "projectId"?: string, readonly "published"?: boolean, readonly "recurring"?: RecurringAssignmentDtoV1, readonly "startTime"?: string, readonly "taskId"?: string, readonly "userId"?: string, readonly "workspaceId"?: string }
539
- export const AssignmentDtoV1 = Schema.Struct({ "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is billable or not." })), "excludeDays": Schema.optionalKey(Schema.Array(SchedulingExcludeDay).annotate({ "description": "Represents a list of excluded days objects" }).check(Schema.isUnique())), "hoursPerDay": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents assignment total hours per day.", "format": "double" }).check(Schema.isFinite())), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment identifier across the system." })), "includeNonWorkingDays": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment should include non-working days or not." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents assignment note." })), "period": Schema.optionalKey(DateRangeDto), "projectId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents project identifier across the system." })), "published": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is published or not." })), "recurring": Schema.optionalKey(RecurringAssignmentDtoV1), "startTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents start time in hh:mm:ss format." })), "taskId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents task identifier across the system." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) })
540
- export type UserDtoV1 = { readonly "activeWorkspace"?: string, readonly "customFields"?: ReadonlyArray<UserCustomFieldValueDtoV1>, readonly "defaultWorkspace"?: string, readonly "email": string, readonly "id": string, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name": string, readonly "profilePicture"?: string, readonly "settings"?: UserSettingsDtoV1, readonly "status"?: AccountStatus }
541
- export const UserDtoV1 = Schema.Struct({ "activeWorkspace": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user's active workspace identifier across the system." })), "customFields": Schema.optionalKey(Schema.Array(UserCustomFieldValueDtoV1).annotate({ "description": "Represents a list of value objects for user’s custom fields." })), "defaultWorkspace": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user default workspace identifier across the system." })), "email": Schema.String.annotate({ "description": "Represents email address of the user." }), "id": Schema.String.annotate({ "description": "Represents user identifier across the system." }), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.String.annotate({ "description": "Represents name of the user." }), "profilePicture": Schema.optionalKey(Schema.String.annotate({ "description": "Represents profile image path of the user." })), "settings": Schema.optionalKey(UserSettingsDtoV1), "status": Schema.optionalKey(AccountStatus) })
542
- export type ExpensesWithCountDtoV1 = { readonly "count"?: number, readonly "expenses"?: ReadonlyArray<ExpenseHydratedDtoV1> }
543
- export const ExpensesWithCountDtoV1 = Schema.Struct({ "count": Schema.optionalKey(Schema.Number.annotate({ "description": "Represent result count.", "format": "int32" }).check(Schema.isInt())), "expenses": Schema.optionalKey(Schema.Array(ExpenseHydratedDtoV1).annotate({ "description": "Represent a list of hydrated expense objects." })) }).annotate({ "description": "Represents an expense with count data transfer object." })
544
- export type ApprovalDetailsDtoV1 = { readonly "approvalRequest"?: ApprovalRequestDtoV1, readonly "approvedTime"?: string, readonly "billableAmount"?: number, readonly "billableTime"?: string, readonly "breakTime"?: string, readonly "costAmount"?: number, readonly "entries"?: ReadonlyArray<TimeEntryInfoDto>, readonly "expenseTotal"?: number, readonly "expenses"?: ReadonlyArray<ExpenseHydratedDto>, readonly "pendingTime"?: string, readonly "trackedTime"?: string }
545
- export const ApprovalDetailsDtoV1 = Schema.Struct({ "approvalRequest": Schema.optionalKey(ApprovalRequestDtoV1), "approvedTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "billableAmount": Schema.optionalKey(Schema.Number.annotate({ "format": "double" }).check(Schema.isFinite())), "billableTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "breakTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "costAmount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount.", "format": "double" }).check(Schema.isFinite())), "entries": Schema.optionalKey(Schema.Array(TimeEntryInfoDto).annotate({ "description": "Represents a list of time entry info data transfer objects." })), "expenseTotal": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents an amount.", "format": "double" }).check(Schema.isFinite())), "expenses": Schema.optionalKey(Schema.Array(ExpenseHydratedDto).annotate({ "description": "Represents a list of expense hydrated data transfer objects." })), "pendingTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })), "trackedTime": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time duration." })) })
546
- export type TemplateDtoImpl = { readonly "entries"?: ReadonlyArray<TimeEntryWithCustomFieldsDto>, readonly "id"?: string, readonly "name"?: string, readonly "projectsAndTasks"?: ReadonlyArray<ProjectTaskTupleDto>, readonly "userId"?: string, readonly "weekStart"?: string, readonly "workspaceId"?: string }
547
- export const TemplateDtoImpl = Schema.Struct({ "entries": Schema.optionalKey(Schema.Array(TimeEntryWithCustomFieldsDto).annotate({ "description": "Represents a set of template time entries." })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a template name." })), "projectsAndTasks": Schema.optionalKey(Schema.Array(ProjectTaskTupleDto).annotate({ "description": "Represents a list of template's projects and tasks." })), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a user identifier across the system." })), "weekStart": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a day of the week.", "format": "date" })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a workspace identifier across the system." })) })
548
- export type AddLimitedUsersRequest = { readonly "users": ReadonlyArray<LimitedUserRequest> }
549
- export const AddLimitedUsersRequest = Schema.Struct({ "users": Schema.Array(LimitedUserRequest).check(Schema.isMinLength(1)).check(Schema.isMaxLength(250)) })
550
- export type InvoiceInfoResponseDtoV1 = { readonly "invoices"?: ReadonlyArray<InvoiceInfoV1>, readonly "total"?: number }
551
- export const InvoiceInfoResponseDtoV1 = Schema.Struct({ "invoices": Schema.optionalKey(Schema.Array(InvoiceInfoV1).annotate({ "description": "Represents a list of invoice info." })), "total": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the total invoice count.", "format": "int64" }).check(Schema.isInt())) })
552
- export type WebhooksDtoV1 = { readonly "webhooks"?: ReadonlyArray<WebhookDtoV1>, readonly "workspaceWebhookCount"?: number }
553
- export const WebhooksDtoV1 = Schema.Struct({ "webhooks": Schema.optionalKey(Schema.Array(WebhookDtoV1).annotate({ "description": "Represents a list of webhook objects for the workspace." })), "workspaceWebhookCount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of webhooks for the workspace.", "format": "int32" }).check(Schema.isInt())) })
545
+ export const TimeOffRequestV1Dto = Schema.Struct({ "balanceDiff": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the balance difference", "format": "double" }).check(Schema.isFinite().annotate({ "expected": "a finite number" }))), "createdAt": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the date when time off request is created. Date is in format YYYY-MM-DDTHH:MM:SS.ssssssZ", "format": "date-time" })), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time off requester identifier across the system." })), "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the note of the time off request." })), "policyId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents policy identifier across the system." })), "status": Schema.optionalKey(TimeOffRequestStatus), "timeOffPeriod": Schema.optionalKey(TimeOffRequestPeriodDto), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents user identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "TimeOffRequestV1Dto" })
546
+ export type RoleDetailsDtoV1 = { readonly "role"?: RoleDtoV1, readonly "userId"?: string, readonly "workspaceId"?: string }
547
+ export const RoleDetailsDtoV1 = Schema.Struct({ "role": Schema.optionalKey(RoleDtoV1), "userId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "identifier": "RoleDetailsDtoV1" })
554
548
  export type AttendanceReportFilterV1 = { readonly "amountShown"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "amounts"?: ReadonlyArray<"EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT">, readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "archived"?: boolean, readonly "attendanceFilter": AttendanceFilterV1, readonly "billable"?: boolean, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "customFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "dateFormat"?: string, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "description"?: string, readonly "detailedFilter"?: DetailedFilterV1, readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "projects"?: ContainsArchivedFilterV1, readonly "rounding"?: boolean, readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "summaryFilter"?: SummaryFilterV1, readonly "tags"?: ContainsTagFilterV1, readonly "tasks"?: ContainsTaskFilterV1, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyFilter"?: WeeklyFilterV1, readonly "withoutDescription"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
555
- export const AttendanceReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": AttendanceFilterV1, "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) })
549
+ export const AttendanceReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": AttendanceFilterV1, "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) }).annotate({ "identifier": "AttendanceReportFilterV1" })
556
550
  export type DetailedReportFilterV1 = { readonly "amountShown"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "amounts"?: ReadonlyArray<"EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT">, readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "archived"?: boolean, readonly "attendanceFilter"?: AttendanceFilterV1, readonly "billable"?: boolean, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "customFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "dateFormat"?: string, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "description"?: string, readonly "detailedFilter": DetailedFilterV1, readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "projects"?: ContainsArchivedFilterV1, readonly "rounding"?: boolean, readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "summaryFilter"?: SummaryFilterV1, readonly "tags"?: ContainsTagFilterV1, readonly "tasks"?: ContainsTaskFilterV1, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "userCustomFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyFilter"?: WeeklyFilterV1, readonly "withoutDescription"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
557
- export const DetailedReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": DetailedFilterV1, "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) })
558
- export type ReportFilterV1 = { readonly "amountShown"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "amounts"?: ReadonlyArray<"EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT">, readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "archived"?: boolean, readonly "attendanceFilter"?: AttendanceFilterV1, readonly "billable"?: boolean, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "customFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "dateFormat"?: string, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "description"?: string, readonly "detailedFilter"?: DetailedFilterV1, readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "projects"?: ContainsArchivedFilterV1, readonly "rounding"?: boolean, readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "summaryFilter"?: SummaryFilterV1, readonly "tags"?: ContainsTagFilterV1, readonly "tasks"?: ContainsTaskFilterV1, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "userCustomFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyFilter"?: WeeklyFilterV1, readonly "withoutDescription"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
559
- export const ReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) })
551
+ export const DetailedReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": DetailedFilterV1, "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) }).annotate({ "identifier": "DetailedReportFilterV1" })
560
552
  export type SummaryReportFilterV1 = { readonly "amountShown"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "amounts"?: ReadonlyArray<"EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT">, readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "archived"?: boolean, readonly "attendanceFilter"?: AttendanceFilterV1, readonly "billable"?: boolean, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "customFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "dateFormat"?: string, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "description"?: string, readonly "detailedFilter"?: DetailedFilterV1, readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "projects"?: ContainsArchivedFilterV1, readonly "rounding"?: boolean, readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "summaryFilter": SummaryFilterV1, readonly "tags"?: ContainsTagFilterV1, readonly "tasks"?: ContainsTaskFilterV1, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "userCustomFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyFilter"?: WeeklyFilterV1, readonly "withoutDescription"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
561
- export const SummaryReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": SummaryFilterV1, "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) })
553
+ export const SummaryReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": SummaryFilterV1, "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) }).annotate({ "identifier": "SummaryReportFilterV1" })
562
554
  export type WeeklyReportFilterV1 = { readonly "amountShown"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "amounts"?: ReadonlyArray<"EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT">, readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "archived"?: boolean, readonly "attendanceFilter"?: AttendanceFilterV1, readonly "billable"?: boolean, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "customFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "dateFormat"?: string, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "description"?: string, readonly "detailedFilter"?: DetailedFilterV1, readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "projects"?: ContainsArchivedFilterV1, readonly "rounding"?: boolean, readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "summaryFilter"?: SummaryFilterV1, readonly "tags"?: ContainsTagFilterV1, readonly "tasks"?: ContainsTaskFilterV1, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "userCustomFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyFilter": WeeklyFilterV1, readonly "withoutDescription"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
563
- export const WeeklyReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1)), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": WeeklyFilterV1, "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) })
555
+ export const WeeklyReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": WeeklyFilterV1, "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) }).annotate({ "identifier": "WeeklyReportFilterV1" })
556
+ export type ReportFilterV1 = { readonly "amountShown"?: "EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT", readonly "amounts"?: ReadonlyArray<"EARNED" | "COST" | "PROFIT" | "HIDE_AMOUNT" | "EXPORT">, readonly "approvalState"?: "APPROVED" | "UNAPPROVED" | "ALL", readonly "archived"?: boolean, readonly "attendanceFilter"?: AttendanceFilterV1, readonly "billable"?: boolean, readonly "clients"?: ContainsArchivedFilterV1, readonly "currency"?: ContainsArchivedFilterV1, readonly "customFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "dateFormat"?: string, readonly "dateRangeEnd": string, readonly "dateRangeStart": string, readonly "dateRangeType"?: "ABSOLUTE" | "TODAY" | "YESTERDAY" | "THIS_WEEK" | "LAST_WEEK" | "PAST_TWO_WEEKS" | "THIS_MONTH" | "LAST_MONTH" | "THIS_YEAR" | "LAST_YEAR", readonly "description"?: string, readonly "detailedFilter"?: DetailedFilterV1, readonly "exportType"?: "JSON" | "JSON_V1" | "PDF" | "CSV" | "XLSX" | "ZIP", readonly "invoicingState"?: "INVOICED" | "UNINVOICED" | "ALL", readonly "projects"?: ContainsArchivedFilterV1, readonly "rounding"?: boolean, readonly "sortOrder"?: "ASCENDING" | "DESCENDING", readonly "summaryFilter"?: SummaryFilterV1, readonly "tags"?: ContainsTagFilterV1, readonly "tasks"?: ContainsTaskFilterV1, readonly "timeFormat"?: string, readonly "timeZone"?: string, readonly "userCustomFields"?: ReadonlyArray<CustomFieldFilterV1>, readonly "userGroups"?: ContainsUsersFilterV1, readonly "userLocale"?: string, readonly "users"?: ContainsUsersFilterV1, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "weeklyFilter"?: WeeklyFilterV1, readonly "withoutDescription"?: boolean, readonly "zoomLevel"?: "WEEK" | "MONTH" | "YEAR" }
557
+ export const ReportFilterV1 = Schema.Struct({ "amountShown": Schema.optionalKey(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided amount shown." })), "amounts": Schema.optionalKey(Schema.Array(Schema.Literals(["EARNED", "COST", "PROFIT", "HIDE_AMOUNT", "EXPORT"]))), "approvalState": Schema.optionalKey(Schema.Literals(["APPROVED", "UNAPPROVED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided approval state." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is archived" })), "attendanceFilter": Schema.optionalKey(AttendanceFilterV1), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report is billable" })), "clients": Schema.optionalKey(ContainsArchivedFilterV1), "currency": Schema.optionalKey(ContainsArchivedFilterV1), "customFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1)), "dateFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DD" })), "dateRangeEnd": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeStart": Schema.String.annotate({ "description": "Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" }).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" })), "dateRangeType": Schema.optionalKey(Schema.Literals(["ABSOLUTE", "TODAY", "YESTERDAY", "THIS_WEEK", "LAST_WEEK", "PAST_TWO_WEEKS", "THIS_MONTH", "LAST_MONTH", "THIS_YEAR", "LAST_YEAR"]).annotate({ "description": "Provide the date range type" })), "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents search term for filtering report entries by description" })), "detailedFilter": Schema.optionalKey(DetailedFilterV1), "exportType": Schema.optionalKey(Schema.Literals(["JSON", "JSON_V1", "PDF", "CSV", "XLSX", "ZIP"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided export type." })), "invoicingState": Schema.optionalKey(Schema.Literals(["INVOICED", "UNINVOICED", "ALL"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided invoicing state." })), "projects": Schema.optionalKey(ContainsArchivedFilterV1), "rounding": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the report filter is rounding" })), "sortOrder": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"]).annotate({ "description": "If provided, you'll get sorted result by provided sort order." })), "summaryFilter": Schema.optionalKey(SummaryFilterV1), "tags": Schema.optionalKey(ContainsTagFilterV1), "tasks": Schema.optionalKey(ContainsTaskFilterV1), "timeFormat": Schema.optionalKey(Schema.String.annotate({ "description": "Provide time in format THH:MM:SS.ssssss" })), "timeZone": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided time zone." })), "userCustomFields": Schema.optionalKey(Schema.Array(CustomFieldFilterV1).annotate({ "writeOnly": true })), "userGroups": Schema.optionalKey(ContainsUsersFilterV1), "userLocale": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get filtered result including reports with provided user locale." })), "users": Schema.optionalKey(ContainsUsersFilterV1), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided week start." })), "weeklyFilter": Schema.optionalKey(WeeklyFilterV1), "withoutDescription": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to 'true', report will only include entries with empty description" })), "zoomLevel": Schema.optionalKey(Schema.Literals(["WEEK", "MONTH", "YEAR"]).annotate({ "description": "If provided, you'll get filtered result including reports with provided zoom level." })) }).annotate({ "identifier": "ReportFilterV1" })
564
558
  export type ExpenseDetailedReportDtoV1 = { readonly "expenses"?: ReadonlyArray<ExpenseReportDtoV1>, readonly "totals"?: ExpenseTotalsDtoV1 }
565
- export const ExpenseDetailedReportDtoV1 = Schema.Struct({ "expenses": Schema.optionalKey(Schema.Array(ExpenseReportDtoV1).annotate({ "description": "Represents list of expenses" })), "totals": Schema.optionalKey(ExpenseTotalsDtoV1) }).annotate({ "description": "report" })
566
- export type MemberProfileDtoV1 = { readonly "email"?: string, readonly "hasPassword"?: boolean, readonly "hasPendingApprovalRequest"?: boolean, readonly "imageUrl"?: string, readonly "name"?: string, readonly "userCustomFieldValues"?: ReadonlyArray<UserCustomFieldValueFullDtoV1>, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workCapacity"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workspaceNumber"?: number }
567
- export const MemberProfileDtoV1 = Schema.Struct({ "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents email address of the user." })), "hasPassword": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether user has password or none." })), "hasPendingApprovalRequest": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether user has pending approval request." })), "imageUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an image url." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents name of the user." })), "userCustomFieldValues": Schema.optionalKey(Schema.Array(UserCustomFieldValueFullDtoV1).annotate({ "description": "Represents a list of value objects for user’s custom fields." })), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents work capacity as a time duration in the ISO-8601 format." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of days of the week." })), "workspaceNumber": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the number of workspace(s) the user is associated to.", "format": "int32" }).check(Schema.isInt())) })
559
+ export const ExpenseDetailedReportDtoV1 = Schema.Struct({ "expenses": Schema.optionalKey(Schema.Array(ExpenseReportDtoV1).annotate({ "description": "Represents list of expenses" })), "totals": Schema.optionalKey(ExpenseTotalsDtoV1) }).annotate({ "description": "report", "identifier": "ExpenseDetailedReportDtoV1" })
568
560
  export type WorkspaceDtoV1 = { readonly "cakeOrganizationId"?: string, readonly "costRate"?: RateDtoV1, readonly "currencies"?: ReadonlyArray<CurrencyWithDefaultInfoDtoV1>, readonly "featureSubscriptionType"?: FeaturePlan, readonly "features"?: Feature, readonly "hourlyRate"?: HourlyRateDtoV1, readonly "id": string, readonly "imageUrl"?: string, readonly "memberships"?: ReadonlyArray<MembershipDtoV1>, readonly "name": string, readonly "subdomain"?: WorkspaceSubdomainDtoV1, readonly "workspaceSettings"?: WorkspaceSettingsDtoV1 }
569
- export const WorkspaceDtoV1 = Schema.Struct({ "cakeOrganizationId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the Cake organization identifier across the system." })), "costRate": Schema.optionalKey(RateDtoV1), "currencies": Schema.optionalKey(Schema.Array(CurrencyWithDefaultInfoDtoV1).annotate({ "description": "Represents currency with default info object." })), "featureSubscriptionType": Schema.optionalKey(FeaturePlan), "features": Schema.optionalKey(Feature), "hourlyRate": Schema.optionalKey(HourlyRateDtoV1), "id": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }), "imageUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an image url." })), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.String.annotate({ "description": "Represents workspace name." }), "subdomain": Schema.optionalKey(WorkspaceSubdomainDtoV1), "workspaceSettings": Schema.optionalKey(WorkspaceSettingsDtoV1) })
570
- export type TimeOffRequestsWithCountV1Dto = { readonly "count"?: number, readonly "requests"?: ReadonlyArray<TimeOffRequestFullV1Dto> }
571
- export const TimeOffRequestsWithCountV1Dto = Schema.Struct({ "count": Schema.optionalKey(Schema.Number.annotate({ "description": "Total count of time off requests.", "format": "int32" }).check(Schema.isInt())), "requests": Schema.optionalKey(Schema.Array(TimeOffRequestFullV1Dto)) })
561
+ export const WorkspaceDtoV1 = Schema.Struct({ "cakeOrganizationId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the Cake organization identifier across the system." })), "costRate": Schema.optionalKey(RateDtoV1), "currencies": Schema.optionalKey(Schema.Array(CurrencyWithDefaultInfoDtoV1).annotate({ "description": "Represents currency with default info object." })), "featureSubscriptionType": Schema.optionalKey(FeaturePlan), "features": Schema.optionalKey(Feature), "hourlyRate": Schema.optionalKey(HourlyRateDtoV1), "id": Schema.String.annotate({ "description": "Represents workspace identifier across the system." }), "imageUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an image url." })), "memberships": Schema.optionalKey(Schema.Array(MembershipDtoV1).annotate({ "description": "Represents a list of membership objects." })), "name": Schema.String.annotate({ "description": "Represents workspace name." }), "subdomain": Schema.optionalKey(WorkspaceSubdomainDtoV1), "workspaceSettings": Schema.optionalKey(WorkspaceSettingsDtoV1) }).annotate({ "identifier": "WorkspaceDtoV1" })
572
562
  export type ExpensesAndTotalsDtoV1 = { readonly "dailyTotals"?: ReadonlyArray<ExpenseDailyTotalsDtoV1>, readonly "expenses"?: ExpensesWithCountDtoV1, readonly "weeklyTotals"?: ReadonlyArray<ExpenseWeeklyTotalsDtoV1> }
573
- export const ExpensesAndTotalsDtoV1 = Schema.Struct({ "dailyTotals": Schema.optionalKey(Schema.Array(ExpenseDailyTotalsDtoV1).annotate({ "description": "Represents a list of expense daily total data transfer objects." })), "expenses": Schema.optionalKey(ExpensesWithCountDtoV1), "weeklyTotals": Schema.optionalKey(Schema.Array(ExpenseWeeklyTotalsDtoV1).annotate({ "description": "Represents a list of expense weekly total data transfer objects." })) })
563
+ export const ExpensesAndTotalsDtoV1 = Schema.Struct({ "dailyTotals": Schema.optionalKey(Schema.Array(ExpenseDailyTotalsDtoV1).annotate({ "description": "Represents a list of expense daily total data transfer objects." })), "expenses": Schema.optionalKey(ExpensesWithCountDtoV1), "weeklyTotals": Schema.optionalKey(Schema.Array(ExpenseWeeklyTotalsDtoV1).annotate({ "description": "Represents a list of expense weekly total data transfer objects." })) }).annotate({ "identifier": "ExpensesAndTotalsDtoV1" })
564
+ export type MemberProfileDtoV1 = { readonly "email"?: string, readonly "hasPassword"?: boolean, readonly "hasPendingApprovalRequest"?: boolean, readonly "imageUrl"?: string, readonly "name"?: string, readonly "userCustomFieldValues"?: ReadonlyArray<UserCustomFieldValueFullDtoV1>, readonly "weekStart"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workCapacity"?: string, readonly "workingDays"?: "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY", readonly "workspaceNumber"?: number }
565
+ export const MemberProfileDtoV1 = Schema.Struct({ "email": Schema.optionalKey(Schema.String.annotate({ "description": "Represents email address of the user." })), "hasPassword": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether user has password or none." })), "hasPendingApprovalRequest": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether user has pending approval request." })), "imageUrl": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an image url." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents name of the user." })), "userCustomFieldValues": Schema.optionalKey(Schema.Array(UserCustomFieldValueFullDtoV1).annotate({ "description": "Represents a list of value objects for user’s custom fields." })), "weekStart": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a day of the week." })), "workCapacity": Schema.optionalKey(Schema.String.annotate({ "description": "Represents work capacity as a time duration in the ISO-8601 format." })), "workingDays": Schema.optionalKey(Schema.Literals(["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]).annotate({ "description": "Represents a list of days of the week." })), "workspaceNumber": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the number of workspace(s) the user is associated to.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) }).annotate({ "identifier": "MemberProfileDtoV1" })
566
+ export type TimeOffRequestsWithCountV1Dto = { readonly "count"?: number, readonly "requests"?: ReadonlyArray<TimeOffRequestFullV1Dto> }
567
+ export const TimeOffRequestsWithCountV1Dto = Schema.Struct({ "count": Schema.optionalKey(Schema.Number.annotate({ "description": "Total count of time off requests.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "requests": Schema.optionalKey(Schema.Array(TimeOffRequestFullV1Dto)) }).annotate({ "identifier": "TimeOffRequestsWithCountV1Dto" })
574
568
  export type SharedReportRequestV1 = { readonly "filter"?: ReportFilterV1, readonly "fixedDate"?: boolean, readonly "isPublic"?: boolean, readonly "name"?: string, readonly "type"?: "DETAILED" | "WEEKLY" | "SUMMARY" | "SCHEDULED" | "EXPENSE_DETAILED" | "EXPENSE_RECEIPT" | "PTO_REQUESTS" | "PTO_BALANCE" | "ATTENDANCE" | "INVOICE_EXPENSE" | "INVOICE_TIME" | "PROJECT" | "TEAM_FULL" | "TEAM_LIMITED" | "TEAM_GROUPS" | "INVOICES" | "KIOSK_PIN_LIST" | "KIOSK_ASSIGNEES" | "USER_DATA_EXPORT", readonly "visibleToUserGroups"?: ReadonlyArray<string>, readonly "visibleToUsers"?: ReadonlyArray<string> }
575
- export const SharedReportRequestV1 = Schema.Struct({ "filter": Schema.optionalKey(ReportFilterV1), "fixedDate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report has a fixed date range." })), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report is public or not" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a shared report's name" })), "type": Schema.optionalKey(Schema.Literals(["DETAILED", "WEEKLY", "SUMMARY", "SCHEDULED", "EXPENSE_DETAILED", "EXPENSE_RECEIPT", "PTO_REQUESTS", "PTO_BALANCE", "ATTENDANCE", "INVOICE_EXPENSE", "INVOICE_TIME", "PROJECT", "TEAM_FULL", "TEAM_LIMITED", "TEAM_GROUPS", "INVOICES", "KIOSK_PIN_LIST", "KIOSK_ASSIGNEES", "USER_DATA_EXPORT"]).annotate({ "description": "Represent the type of shared report." })), "visibleToUserGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents user group ids." })).annotate({ "description": "Represents user group ids." }).check(Schema.isUnique())), "visibleToUsers": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents user ids." })).annotate({ "description": "Represents user ids." }).check(Schema.isUnique())) })
576
- // recursive definitions
577
- export type GroupOneDto = { readonly "amount"?: number, readonly "children"?: ReadonlyArray<GroupOneDto>, readonly "clientName"?: string, readonly "days"?: ReadonlyArray<DailyTotalDto>, readonly "duration"?: number, readonly "id"?: string, readonly "name"?: string, readonly "nameLowerCase"?: string }
578
- export const GroupOneDto = Schema.Struct({ "amount": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents group one amount" }).check(Schema.isFinite())), "children": Schema.optionalKey(Schema.Array(Schema.suspend((): Schema.Codec<GroupOneDto> => GroupOneDto)).annotate({ "description": "Represents list of children groups" })), "clientName": Schema.optionalKey(Schema.String.annotate({ "description": "Represents client name" })), "days": Schema.optionalKey(Schema.Array(DailyTotalDto).annotate({ "description": "Represents list of days" })), "duration": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents duration" }).check(Schema.isFinite())), "id": Schema.optionalKey(Schema.String.annotate({ "description": "Represents group one identifier across the system." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents name" })), "nameLowerCase": Schema.optionalKey(Schema.String.annotate({ "description": "Represents lower case name" })) }).annotate({ "description": "List of groups" })
569
+ export const SharedReportRequestV1 = Schema.Struct({ "filter": Schema.optionalKey(ReportFilterV1), "fixedDate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report has a fixed date range." })), "isPublic": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the shared report is public or not" })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a shared report's name" })), "type": Schema.optionalKey(Schema.Literals(["DETAILED", "WEEKLY", "SUMMARY", "SCHEDULED", "EXPENSE_DETAILED", "EXPENSE_RECEIPT", "PTO_REQUESTS", "PTO_BALANCE", "ATTENDANCE", "INVOICE_EXPENSE", "INVOICE_TIME", "PROJECT", "TEAM_FULL", "TEAM_LIMITED", "TEAM_GROUPS", "INVOICES", "KIOSK_PIN_LIST", "KIOSK_ASSIGNEES", "USER_DATA_EXPORT"]).annotate({ "description": "Represent the type of shared report." })), "visibleToUserGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents user group ids." })).annotate({ "description": "Represents user group ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "visibleToUsers": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "Represents user ids." })).annotate({ "description": "Represents user ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) }).annotate({ "identifier": "SharedReportRequestV1" })
579
570
  // schemas
580
571
  export type UploadImageRequestFormData = { readonly "file": string }
581
572
  export const UploadImageRequestFormData = Schema.Struct({ "file": Schema.String.annotate({ "description": "Image to be uploaded", "format": "binary" }) })
@@ -598,21 +589,31 @@ export const GetWorkspaceOfUser200 = WorkspaceDtoV1
598
589
  export type GetAddonWebhooks200 = WebhooksDtoV1
599
590
  export const GetAddonWebhooks200 = WebhooksDtoV1
600
591
  export type GetApprovalRequestsParams = { readonly "status"?: "PENDING" | "APPROVED" | "WITHDRAWN_APPROVAL", readonly "sort-column"?: "ID" | "USER_ID" | "START" | "UPDATED_AT", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number, readonly "types"?: ReadonlyArray<"TIMESHEET" | "EXPENSE" | "TIMESHEET_AND_EXPENSE"> }
601
- export const GetApprovalRequestsParams = Schema.Struct({ "status": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "WITHDRAWN_APPROVAL"])), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "USER_ID", "START", "UPDATED_AT"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "types": Schema.optionalKey(Schema.Array(Schema.Literals(["TIMESHEET", "EXPENSE", "TIMESHEET_AND_EXPENSE"])).check(Schema.isUnique())) })
592
+ export const GetApprovalRequestsParams = Schema.Struct({ "status": Schema.optionalKey(Schema.Literals(["PENDING", "APPROVED", "WITHDRAWN_APPROVAL"])), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "USER_ID", "START", "UPDATED_AT"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "types": Schema.optionalKey(Schema.Array(Schema.Literals(["TIMESHEET", "EXPENSE", "TIMESHEET_AND_EXPENSE"])).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))) })
602
593
  export type GetApprovalRequests200 = ReadonlyArray<ApprovalDetailsDtoV1>
603
594
  export const GetApprovalRequests200 = Schema.Array(ApprovalDetailsDtoV1)
595
+ export type CreateApprrovalRequestParams = { readonly "timeViewMode"?: string }
596
+ export const CreateApprrovalRequestParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
604
597
  export type CreateApprrovalRequestRequestJson = CreateApprovalRequest
605
598
  export const CreateApprrovalRequestRequestJson = CreateApprovalRequest
606
599
  export type CreateApprrovalRequest201 = ApprovalRequestDtoV1
607
600
  export const CreateApprrovalRequest201 = ApprovalRequestDtoV1
601
+ export type ResubmitApprovalRequestParams = { readonly "timeViewMode"?: string }
602
+ export const ResubmitApprovalRequestParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
608
603
  export type ResubmitApprovalRequestRequestJson = CreateApprovalRequest
609
604
  export const ResubmitApprovalRequestRequestJson = CreateApprovalRequest
605
+ export type CreateApprovalForOtherDeprecatedParams = { readonly "timeViewMode"?: string }
606
+ export const CreateApprovalForOtherDeprecatedParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
610
607
  export type CreateApprovalForOtherDeprecatedRequestJson = CreateApprovalRequest
611
608
  export const CreateApprovalForOtherDeprecatedRequestJson = CreateApprovalRequest
612
609
  export type CreateApprovalForOtherDeprecated201 = ApprovalRequestDtoV1
613
610
  export const CreateApprovalForOtherDeprecated201 = ApprovalRequestDtoV1
611
+ export type ResubmitApprovalRequestForOtherParams = { readonly "timeViewMode"?: string }
612
+ export const ResubmitApprovalRequestForOtherParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
614
613
  export type ResubmitApprovalRequestForOtherRequestJson = CreateApprovalRequest
615
614
  export const ResubmitApprovalRequestForOtherRequestJson = CreateApprovalRequest
615
+ export type CreateApprovalForOtherWithTypeParams = { readonly "timeViewMode"?: string }
616
+ export const CreateApprovalForOtherWithTypeParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
616
617
  export type CreateApprovalForOtherWithTypeRequestJson = CreateApprovalRequestNoType
617
618
  export const CreateApprovalForOtherWithTypeRequestJson = CreateApprovalRequestNoType
618
619
  export type CreateApprovalForOtherWithType201 = ApprovalRequestDtoV1
@@ -621,12 +622,14 @@ export type UpdateApprovalStatusRequestJson = UpdateApprovalRequest
621
622
  export const UpdateApprovalStatusRequestJson = UpdateApprovalRequest
622
623
  export type UpdateApprovalStatus200 = ApprovalRequestDtoV1
623
624
  export const UpdateApprovalStatus200 = ApprovalRequestDtoV1
625
+ export type CreateApprrovalRequest1Params = { readonly "timeViewMode"?: string }
626
+ export const CreateApprrovalRequest1Params = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
624
627
  export type CreateApprrovalRequest1RequestJson = CreateApprovalRequestNoType
625
628
  export const CreateApprrovalRequest1RequestJson = CreateApprovalRequestNoType
626
629
  export type CreateApprrovalRequest1201 = ApprovalRequestDtoV1
627
630
  export const CreateApprrovalRequest1201 = ApprovalRequestDtoV1
628
631
  export type GetClientsParams = { readonly "name"?: string, readonly "sort-column"?: string, readonly "sort-order"?: string, readonly "page"?: number, readonly "page-size"?: number, readonly "archived"?: string }
629
- export const GetClientsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Filters client results that matches with the string provided in their client name." })), "sort-column": Schema.optionalKey(Schema.String.annotate({ "description": "Column name that will be used as criteria for sorting results." })), "sort-order": Schema.optionalKey(Schema.String), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "archived": Schema.optionalKey(Schema.String) })
632
+ export const GetClientsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Filters client results that matches with the string provided in their client name." })), "sort-column": Schema.optionalKey(Schema.String.annotate({ "description": "Column name that will be used as criteria for sorting results." })), "sort-order": Schema.optionalKey(Schema.String), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "archived": Schema.optionalKey(Schema.String) })
630
633
  export type GetClients200 = ReadonlyArray<ClientWithCurrencyDtoV1>
631
634
  export const GetClients200 = Schema.Array(ClientWithCurrencyDtoV1)
632
635
  export type CreateClientRequestJson = CreateClientRequestV1
@@ -670,7 +673,7 @@ export const GetUpdatedEntityInfoParams = Schema.Struct({ "type": Schema.Array(S
670
673
  export type GetUpdatedEntityInfo200 = string
671
674
  export const GetUpdatedEntityInfo200 = Schema.String
672
675
  export type GetExpensesParams = { readonly "page"?: number, readonly "page-size"?: number, readonly "user-id"?: string }
673
- export const GetExpensesParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "user-id": Schema.optionalKey(Schema.String) })
676
+ export const GetExpensesParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "user-id": Schema.optionalKey(Schema.String) })
674
677
  export type GetExpenses200 = ExpensesAndTotalsDtoV1
675
678
  export const GetExpenses200 = ExpensesAndTotalsDtoV1
676
679
  export type CreateExpenseRequestFormData = CreateExpenseV1Request
@@ -678,7 +681,7 @@ export const CreateExpenseRequestFormData = CreateExpenseV1Request
678
681
  export type CreateExpense201 = ExpenseDtoV1
679
682
  export const CreateExpense201 = ExpenseDtoV1
680
683
  export type GetCategoriesParams = { readonly "sort-column"?: "NAME", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number, readonly "archived"?: boolean, readonly "name"?: string }
681
- export const GetCategoriesParams = Schema.Struct({ "sort-column": Schema.optionalKey(Schema.Literal("NAME")), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to filter results based on whether category is archived or not." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of expense categories that matches the provided string in their name." })) })
684
+ export const GetCategoriesParams = Schema.Struct({ "sort-column": Schema.optionalKey(Schema.Literal("NAME")), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to filter results based on whether category is archived or not." })), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of expense categories that matches the provided string in their name." })) })
682
685
  export type GetCategories200 = ExpenseCategoriesWithCountDtoV1
683
686
  export const GetCategories200 = ExpenseCategoriesWithCountDtoV1
684
687
  export type CreateExpenseCategoryRequestJson = ExpenseCategoryV1Request
@@ -722,7 +725,7 @@ export const SetWorkspaceHourlyRateRequestJson = RateWithCurrencyRequestV1
722
725
  export type SetWorkspaceHourlyRate200 = WorkspaceDtoV1
723
726
  export const SetWorkspaceHourlyRate200 = WorkspaceDtoV1
724
727
  export type GetInvoicesParams = { readonly "page"?: number, readonly "page-size"?: number, readonly "statuses"?: "UNSENT" | "SENT" | "PAID" | "PARTIALLY_PAID" | "VOID" | "OVERDUE", readonly "sort-column"?: "ID" | "CLIENT" | "DUE_ON" | "ISSUE_DATE" | "AMOUNT" | "BALANCE", readonly "sort-order"?: "ASCENDING" | "DESCENDING" }
725
- export const GetInvoicesParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "statuses": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"])), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "CLIENT", "DUE_ON", "ISSUE_DATE", "AMOUNT", "BALANCE"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
728
+ export const GetInvoicesParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "statuses": Schema.optionalKey(Schema.Literals(["UNSENT", "SENT", "PAID", "PARTIALLY_PAID", "VOID", "OVERDUE"])), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "CLIENT", "DUE_ON", "ISSUE_DATE", "AMOUNT", "BALANCE"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
726
729
  export type GetInvoices200 = InvoicesListDtoV1
727
730
  export const GetInvoices200 = InvoicesListDtoV1
728
731
  export type CreateInvoiceRequestJson = CreateInvoiceRequest
@@ -758,7 +761,7 @@ export const ImportTimeEntriesAndExpenses200 = InvoiceOverviewDtoV1
758
761
  export type RemoveInvoiceItem200 = InvoiceOverviewDtoV1
759
762
  export const RemoveInvoiceItem200 = InvoiceOverviewDtoV1
760
763
  export type GetPaymentsForInvoiceParams = { readonly "page"?: number, readonly "page-size"?: number }
761
- export const GetPaymentsForInvoiceParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))) })
764
+ export const GetPaymentsForInvoiceParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))) })
762
765
  export type GetPaymentsForInvoice200 = ReadonlyArray<InvoicePaymentDtoV1>
763
766
  export const GetPaymentsForInvoice200 = Schema.Array(InvoicePaymentDtoV1)
764
767
  export type CreateInvoicePaymentRequestJson = CreateInvoicePaymentRequest
@@ -778,7 +781,7 @@ export const UpdateMemberProfileWithAdditionalDataRequestJson = MemberProfileFul
778
781
  export type UpdateMemberProfileWithAdditionalData200 = MemberProfileDtoV1
779
782
  export const UpdateMemberProfileWithAdditionalData200 = MemberProfileDtoV1
780
783
  export type GetProjectsParams = { readonly "name"?: string, readonly "strict-name-search"?: boolean, readonly "archived"?: boolean, readonly "billable"?: boolean, readonly "clients"?: ReadonlyArray<string>, readonly "contains-client"?: boolean, readonly "client-status"?: "ACTIVE" | "ARCHIVED" | "ALL", readonly "users"?: ReadonlyArray<string>, readonly "contains-user"?: boolean, readonly "user-status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "is-template"?: boolean, readonly "sort-column"?: "ID" | "NAME" | "CLIENT_NAME" | "DURATION" | "BUDGET" | "PROGRESS", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "hydrated"?: boolean, readonly "page"?: number, readonly "page-size"?: number, readonly "access"?: "PUBLIC" | "PRIVATE", readonly "expense-limit"?: number, readonly "expense-date"?: string, readonly "userGroups"?: ReadonlyArray<string>, readonly "contains-group"?: boolean }
781
- export const GetProjectsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contains the provided string in the project name." })), "strict-name-search": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by name will only return projects whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include projects whose name contain the string value, but could be longer than the string value itself. For example, if there is a project with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that project in the results, whereas setting it to false will." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If provided and set to true, you'll only get archived projects. If omitted, you'll get both archived and non-archived projects." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If provided and set to true, you'll only get billable projects. If omitted, you'll get both billable and non-billable projects." })), "clients": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contain clients which match any of the provided ids." })).annotate({ "description": "If provided, you'll get a filtered list of projects that contain clients which match any of the provided ids." }).check(Schema.isUnique())), "contains-client": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, you'll get a filtered list of projects that contain clients which match the provided id(s) in 'clients' field. If set to false, you'll get a filtered list of projects which do NOT contain clients that match the provided id(s) in 'clients' field." })), "client-status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"])), "users": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contain users which match any of the provided ids." })).annotate({ "description": "If provided, you'll get a filtered list of projects that contain users which match any of the provided ids." }).check(Schema.isUnique())), "contains-user": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, you'll get a filtered list of projects that contain users which match the provided id(s) in 'users' field. If set to false, you'll get a filtered list of projects which do NOT contain users which match the provided id(s) in 'users' field." })), "user-status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"])), "is-template": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Filters projects based on whether they are used as a template or not." })), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME", "CLIENT_NAME", "DURATION", "BUDGET", "PROGRESS"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, results will contain additional information about the project." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "access": Schema.optionalKey(Schema.Literals(["PUBLIC", "PRIVATE"])), "expense-limit": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the maximum number of expenses to fetch.", "format": "int32" }).check(Schema.isInt())), "expense-date": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you will get expenses dated before the provided value in yyyy-MM-dd format." })), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contain groups which match any of the provided ids." })).annotate({ "description": "If provided, you'll get a filtered list of projects that contain groups which match any of the provided ids." }).check(Schema.isUnique())), "contains-group": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, you'll get a filtered list of projects that contain groups which match the provided id(s) in 'userGroups' field. If set to false, you'll get a filtered list of projects which do NOT contain groups which match the provided id(s) in 'userGroups' field." })) })
784
+ export const GetProjectsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contains the provided string in the project name." })), "strict-name-search": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by name will only return projects whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include projects whose name contain the string value, but could be longer than the string value itself. For example, if there is a project with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that project in the results, whereas setting it to false will." })), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If provided and set to true, you'll only get archived projects. If omitted, you'll get both archived and non-archived projects." })), "billable": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If provided and set to true, you'll only get billable projects. If omitted, you'll get both billable and non-billable projects." })), "clients": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contain clients which match any of the provided ids." })).annotate({ "description": "If provided, you'll get a filtered list of projects that contain clients which match any of the provided ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "contains-client": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, you'll get a filtered list of projects that contain clients which match the provided id(s) in 'clients' field. If set to false, you'll get a filtered list of projects which do NOT contain clients that match the provided id(s) in 'clients' field." })), "client-status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"])), "users": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contain users which match any of the provided ids." })).annotate({ "description": "If provided, you'll get a filtered list of projects that contain users which match any of the provided ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "contains-user": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, you'll get a filtered list of projects that contain users which match the provided id(s) in 'users' field. If set to false, you'll get a filtered list of projects which do NOT contain users which match the provided id(s) in 'users' field." })), "user-status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"])), "is-template": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Filters projects based on whether they are used as a template or not." })), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME", "CLIENT_NAME", "DURATION", "BUDGET", "PROGRESS"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, results will contain additional information about the project." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "access": Schema.optionalKey(Schema.Literals(["PUBLIC", "PRIVATE"])), "expense-limit": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the maximum number of expenses to fetch.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "expense-date": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you will get expenses dated before the provided value in yyyy-MM-dd format." })), "userGroups": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of projects that contain groups which match any of the provided ids." })).annotate({ "description": "If provided, you'll get a filtered list of projects that contain groups which match any of the provided ids." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "contains-group": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, you'll get a filtered list of projects that contain groups which match the provided id(s) in 'userGroups' field. If set to false, you'll get a filtered list of projects which do NOT contain groups which match the provided id(s) in 'userGroups' field." })) })
782
785
  export type GetProjects200 = ReadonlyArray<ProjectDtoV1>
783
786
  export const GetProjects200 = Schema.Array(ProjectDtoV1)
784
787
  export type CreateNewProjectRequestJson = ProjectRequest
@@ -790,7 +793,7 @@ export const CreateProjectFromTemplateRequestJson = CreateProjectFromTemplateV1
790
793
  export type CreateProjectFromTemplate200 = ProjectDtoImplV1
791
794
  export const CreateProjectFromTemplate200 = ProjectDtoImplV1
792
795
  export type GetProjectParams = { readonly "hydrated"?: boolean, readonly "custom-field-entity-type"?: string, readonly "expense-limit"?: number, readonly "expense-date"?: string }
793
- export const GetProjectParams = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, results will contain additional information about the project" })), "custom-field-entity-type": Schema.optionalKey(Schema.String), "expense-limit": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the maximum number of expenses to fetch.", "format": "int32" }).check(Schema.isInt())), "expense-date": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you will get expenses dated before the provided value in yyyy-MM-dd format." })) })
796
+ export const GetProjectParams = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, results will contain additional information about the project" })), "custom-field-entity-type": Schema.optionalKey(Schema.String), "expense-limit": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents the maximum number of expenses to fetch.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "expense-date": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you will get expenses dated before the provided value in yyyy-MM-dd format." })) })
794
797
  export type GetProject200 = ProjectDtoV1
795
798
  export const GetProject200 = ProjectDtoV1
796
799
  export type UpdateProjectRequestJson = UpdateProjectRequest
@@ -820,7 +823,7 @@ export const UpdateMembershipsRequestJson = UpdateProjectMembershipsRequest
820
823
  export type UpdateMemberships200 = ProjectDtoImplV1
821
824
  export const UpdateMemberships200 = ProjectDtoImplV1
822
825
  export type GetTasksParams = { readonly "name"?: string, readonly "strict-name-search"?: boolean, readonly "is-active"?: boolean, readonly "page"?: number, readonly "page-size"?: number, readonly "sort-column"?: "ID" | "NAME", readonly "sort-order"?: "ASCENDING" | "DESCENDING" }
823
- export const GetTasksParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of tasks that matches the provided string in their name." })), "strict-name-search": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by name only will return tasks whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include tasks whose name contain the string value, but could be longer than the string value itself. For example, if there is a task with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that task in the results, whereas setting it to false will." })), "is-active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Filters search results whether task is active or not." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
826
+ export const GetTasksParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of tasks that matches the provided string in their name." })), "strict-name-search": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by name only will return tasks whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include tasks whose name contain the string value, but could be longer than the string value itself. For example, if there is a task with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that task in the results, whereas setting it to false will." })), "is-active": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Filters search results whether task is active or not." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
824
827
  export type GetTasks200 = ReadonlyArray<TaskDtoV1>
825
828
  export const GetTasks200 = Schema.Array(TaskDtoV1)
826
829
  export type CreateTaskParams = { readonly "contains-assignee"?: boolean }
@@ -860,11 +863,11 @@ export const AddUsersHourlyRateRequestJson = CostRateRequestV1
860
863
  export type AddUsersHourlyRate200 = ProjectDtoImplV1
861
864
  export const AddUsersHourlyRate200 = ProjectDtoImplV1
862
865
  export type GetAllAssignmentsParams = { readonly "name"?: string, readonly "start": string, readonly "end": string, readonly "sort-column"?: "PROJECT" | "USER" | "ID", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number }
863
- export const GetAllAssignmentsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, assignments will be filtered by name" })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "end": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "sort-column": Schema.optionalKey(Schema.Literals(["PROJECT", "USER", "ID"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))) })
866
+ export const GetAllAssignmentsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, assignments will be filtered by name" })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "end": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "sort-column": Schema.optionalKey(Schema.Literals(["PROJECT", "USER", "ID"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))) })
864
867
  export type GetAllAssignments200 = ReadonlyArray<AssignmentHydratedDtoV1>
865
868
  export const GetAllAssignments200 = Schema.Array(AssignmentHydratedDtoV1)
866
869
  export type GetProjectTotalsParams = { readonly "search"?: string, readonly "start": string, readonly "end": string, readonly "page"?: number, readonly "page-size"?: number }
867
- export const GetProjectTotalsParams = Schema.Struct({ "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a term for searching projects and clients by name." })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))) })
870
+ export const GetProjectTotalsParams = Schema.Struct({ "search": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a term for searching projects and clients by name." })), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))) })
868
871
  export type GetProjectTotals200 = ReadonlyArray<SchedulingProjectsTotalsDtoV1>
869
872
  export const GetProjectTotals200 = Schema.Array(SchedulingProjectsTotalsDtoV1)
870
873
  export type GetFilteredProjectTotalsRequestJson = ProjectTotalsRequestV1
@@ -898,7 +901,7 @@ export const GetUserTotalsRequestJson = GetUserTotalsRequestV1
898
901
  export type GetUserTotals200 = ReadonlyArray<SchedulingUsersTotalsDtoV1>
899
902
  export const GetUserTotals200 = Schema.Array(SchedulingUsersTotalsDtoV1)
900
903
  export type GetUserTotalsForSingleUserParams = { readonly "page"?: number, readonly "page-size"?: number, readonly "start": string, readonly "end": string }
901
- export const GetUserTotalsForSingleUserParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }) })
904
+ export const GetUserTotalsForSingleUserParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "start": Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." }), "end": Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." }) })
902
905
  export type GetUserTotalsForSingleUser200 = SchedulingUsersTotalsDtoV1
903
906
  export const GetUserTotalsForSingleUser200 = SchedulingUsersTotalsDtoV1
904
907
  export type CopyAssignmentRequestJson = CopyAssignmentRequestV1
@@ -906,7 +909,7 @@ export const CopyAssignmentRequestJson = CopyAssignmentRequestV1
906
909
  export type CopyAssignment200 = ReadonlyArray<AssignmentDtoV1>
907
910
  export const CopyAssignment200 = Schema.Array(AssignmentDtoV1)
908
911
  export type GetTagsParams = { readonly "name"?: string, readonly "strict-name-search"?: boolean, readonly "excluded-ids"?: string, readonly "sort-column"?: "ID" | "NAME", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number, readonly "archived"?: boolean }
909
- export const GetTagsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of tags that matches the provided string in their name." })), "strict-name-search": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by name will only return tags whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include tags whose name contain the string value, but could be longer than the string value itself. For example, if there is a tag with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that tag in the results, whereas setting it to false will." })), "excluded-ids": Schema.optionalKey(Schema.String), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Filters the result whether tags are archived or not." })) })
912
+ export const GetTagsParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of tags that matches the provided string in their name." })), "strict-name-search": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to toggle on/off strict search mode. When set to true, search by name will only return tags whose name exactly matches the string value given for the 'name' parameter. When set to false, results will also include tags whose name contain the string value, but could be longer than the string value itself. For example, if there is a tag with the name 'applications', and the search value is 'app', setting strict-name-search to true will not return that tag in the results, whereas setting it to false will." })), "excluded-ids": Schema.optionalKey(Schema.String), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Filters the result whether tags are archived or not." })) })
910
913
  export type GetTags200 = ReadonlyArray<TagDtoV1>
911
914
  export const GetTags200 = Schema.Array(TagDtoV1)
912
915
  export type CreateNewTagRequestJson = TagRequest
@@ -922,7 +925,7 @@ export const UpdateTag200 = TagDtoV1
922
925
  export type DeleteTag200 = TagDtoV1
923
926
  export const DeleteTag200 = TagDtoV1
924
927
  export type GetTemplatesParams = { readonly "name"?: string, readonly "cleansed"?: boolean, readonly "hydrated"?: boolean, readonly "page"?: number, readonly "page-size"?: number }
925
- export const GetTemplatesParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of templates that contain the provided string in their name." })), "cleansed": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true will filter out inactive template projects and tasks." })), "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true will return hydrated template projects and tasks." })), "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())) })
928
+ export const GetTemplatesParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of templates that contain the provided string in their name." })), "cleansed": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true will filter out inactive template projects and tasks." })), "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true will return hydrated template projects and tasks." })), "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) })
926
929
  export type GetTemplates200 = ReadonlyArray<TemplateDto>
927
930
  export const GetTemplates200 = Schema.Array(TemplateDto)
928
931
  export type CreateManyRequestJson = ReadonlyArray<TemplateRequest>
@@ -950,7 +953,7 @@ export const GetMultipleTimeEntries200 = Schema.Array(TimeEntryWithRatesDtoV1)
950
953
  export type UpdateInvoicedStatusRequestJson = UpdateInvoicedStatusRequest
951
954
  export const UpdateInvoicedStatusRequestJson = UpdateInvoicedStatusRequest
952
955
  export type GetInProgressTimeEntriesParams = { readonly "page"?: number, readonly "page-size"?: number }
953
- export const GetInProgressTimeEntriesParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(1000))) })
956
+ export const GetInProgressTimeEntriesParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(1000).annotate({ "expected": "a value less than or equal to 1000" }))) })
954
957
  export type GetTimeEntryParams = { readonly "hydrated"?: boolean }
955
958
  export const GetTimeEntryParams = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to include additional information of a time entry or not." })) })
956
959
  export type GetTimeEntry200 = TimeEntryWithRatesDtoV1
@@ -966,13 +969,13 @@ export const UpdateBalanceAssignmentRequestJson = UpdateBalanceAssignmentV1Reque
966
969
  export type DeleteBalanceAssignmentRequestJson = DeleteBalanceAssignmentV1Request
967
970
  export const DeleteBalanceAssignmentRequestJson = DeleteBalanceAssignmentV1Request
968
971
  export type GetBalancesForPolicyParams = { readonly "page"?: number, readonly "page-size"?: number, readonly "sort"?: "USER" | "POLICY" | "USED" | "BALANCE" | "TOTAL", readonly "sort-order"?: "ASCENDING" | "DESCENDING" }
969
- export const GetBalancesForPolicyParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt()).check(Schema.isLessThanOrEqualTo(1000))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(200))), "sort": Schema.optionalKey(Schema.Literals(["USER", "POLICY", "USED", "BALANCE", "TOTAL"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
972
+ export const GetBalancesForPolicyParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isLessThanOrEqualTo(1000).annotate({ "expected": "a value less than or equal to 1000" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(200).annotate({ "expected": "a value less than or equal to 200" }))), "sort": Schema.optionalKey(Schema.Literals(["USER", "POLICY", "USED", "BALANCE", "TOTAL"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
970
973
  export type UpdateBalanceRequestJson = UpdateBalanceRequestV1
971
974
  export const UpdateBalanceRequestJson = UpdateBalanceRequestV1
972
975
  export type GetBalancesForUserParams = { readonly "page"?: string, readonly "page-size"?: string, readonly "sort"?: "USER" | "POLICY" | "USED" | "BALANCE" | "TOTAL", readonly "sort-order"?: "ASCENDING" | "DESCENDING" }
973
976
  export const GetBalancesForUserParams = Schema.Struct({ "page": Schema.optionalKey(Schema.String), "page-size": Schema.optionalKey(Schema.String), "sort": Schema.optionalKey(Schema.Literals(["USER", "POLICY", "USED", "BALANCE", "TOTAL"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])) })
974
977
  export type FindPoliciesForWorkspaceParams = { readonly "page"?: string, readonly "page-size"?: number, readonly "name"?: string, readonly "status"?: "ACTIVE" | "ARCHIVED" | "ALL", readonly "sort-column"?: string, readonly "sort-order"?: string }
975
- export const FindPoliciesForWorkspaceParams = Schema.Struct({ "page": Schema.optionalKey(Schema.String), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(200))), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of policies that contain the provided string in their name." })), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"])), "sort-column": Schema.optionalKey(Schema.String), "sort-order": Schema.optionalKey(Schema.String) })
978
+ export const FindPoliciesForWorkspaceParams = Schema.Struct({ "page": Schema.optionalKey(Schema.String), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" })).check(Schema.isLessThanOrEqualTo(200).annotate({ "expected": "a value less than or equal to 200" }))), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of policies that contain the provided string in their name." })), "status": Schema.optionalKey(Schema.Literals(["ACTIVE", "ARCHIVED", "ALL"])), "sort-column": Schema.optionalKey(Schema.String), "sort-order": Schema.optionalKey(Schema.String) })
976
979
  export type FindPoliciesForWorkspace200 = ReadonlyArray<PolicyDtoV1>
977
980
  export const FindPoliciesForWorkspace200 = Schema.Array(PolicyDtoV1)
978
981
  export type CreatePolicyRequestJson = CreatePolicyRequestV1
@@ -989,16 +992,24 @@ export type UpdatePolicyStatusRequestJson = ChangePolicyStatusRequestV1
989
992
  export const UpdatePolicyStatusRequestJson = ChangePolicyStatusRequestV1
990
993
  export type UpdatePolicyStatus200 = PolicyDtoV1
991
994
  export const UpdatePolicyStatus200 = PolicyDtoV1
995
+ export type CreateTimeOffRequestParams = { readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
996
+ export const CreateTimeOffRequestParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"]).annotate({ "description": "Represents time view mode used to display dates." })) })
992
997
  export type CreateTimeOffRequestRequestJson = CreateTimeOffRequestV1Request
993
998
  export const CreateTimeOffRequestRequestJson = CreateTimeOffRequestV1Request
994
999
  export type CreateTimeOffRequest200 = TimeOffRequestFullV1Dto
995
1000
  export const CreateTimeOffRequest200 = TimeOffRequestFullV1Dto
1001
+ export type DeleteTimeOffRequestParams = { readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
1002
+ export const DeleteTimeOffRequestParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"]).annotate({ "description": "Represents time view mode used to display dates." })) })
996
1003
  export type DeleteTimeOffRequest200 = TimeOffRequestV1Dto
997
1004
  export const DeleteTimeOffRequest200 = TimeOffRequestV1Dto
1005
+ export type ChangeTimeOffRequestStatusParams = { readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
1006
+ export const ChangeTimeOffRequestStatusParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"]).annotate({ "description": "Represents time view mode used to display dates." })) })
998
1007
  export type ChangeTimeOffRequestStatusRequestJson = StatusTimeOffRequestV1Request
999
1008
  export const ChangeTimeOffRequestStatusRequestJson = StatusTimeOffRequestV1Request
1000
1009
  export type ChangeTimeOffRequestStatus200 = TimeOffRequestV1Dto
1001
1010
  export const ChangeTimeOffRequestStatus200 = TimeOffRequestV1Dto
1011
+ export type CreateTimeOffRequestForOtherParams = { readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
1012
+ export const CreateTimeOffRequestForOtherParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"]).annotate({ "description": "Represents time view mode used to display dates." })) })
1002
1013
  export type CreateTimeOffRequestForOtherRequestJson = CreateTimeOffRequestV1Request
1003
1014
  export const CreateTimeOffRequestForOtherRequestJson = CreateTimeOffRequestV1Request
1004
1015
  export type CreateTimeOffRequestForOther200 = TimeOffRequestFullV1Dto
@@ -1008,7 +1019,7 @@ export const GetTimeOffRequestRequestJson = GetTimeOffRequestsV1Request
1008
1019
  export type GetTimeOffRequest200 = TimeOffRequestsWithCountV1Dto
1009
1020
  export const GetTimeOffRequest200 = TimeOffRequestsWithCountV1Dto
1010
1021
  export type GetUserGroupsParams = { readonly "project-id"?: string, readonly "name"?: string, readonly "sort-column"?: "ID" | "NAME", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number, readonly "includeTeamManagers"?: boolean }
1011
- export const GetUserGroupsParams = Schema.Struct({ "project-id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of groups that matches the string provided in their name." })), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "includeTeamManagers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If provided, you'll get a list of team managers assigned to this user group." })) })
1022
+ export const GetUserGroupsParams = Schema.Struct({ "project-id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of groups that matches the string provided in their name." })), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "NAME"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "includeTeamManagers": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If provided, you'll get a list of team managers assigned to this user group." })) })
1012
1023
  export type GetUserGroups200 = ReadonlyArray<UserGroupDtoV1>
1013
1024
  export const GetUserGroups200 = Schema.Array(UserGroupDtoV1)
1014
1025
  export type CreateUserGroupRequestJson = UserGroupRequest
@@ -1027,18 +1038,18 @@ export type AddUser200 = UserGroupDtoV1
1027
1038
  export const AddUser200 = UserGroupDtoV1
1028
1039
  export type DeleteUser200 = UserGroupDtoV1
1029
1040
  export const DeleteUser200 = UserGroupDtoV1
1030
- export type GetTimeEntriesParams = { readonly "description"?: string, readonly "start"?: string, readonly "end"?: string, readonly "project"?: string, readonly "task"?: string, readonly "tags"?: ReadonlyArray<string>, readonly "project-required"?: boolean, readonly "task-required"?: boolean, readonly "hydrated"?: boolean, readonly "page"?: number, readonly "page-size"?: number, readonly "in-progress"?: string, readonly "get-week-before"?: string }
1031
- export const GetTimeEntriesParams = Schema.Struct({ "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a term for searching time entries by description." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." })), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." })), "project": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string in their project id." })), "task": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string in their task id." })), "tags": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string(s) in their tag id(s)." })).annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string(s) in their tag id(s)." }).check(Schema.isUnique())), "project-required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to only get time entries which have a project." })), "task-required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to only get time entries which have tasks." })), "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to include additional information on time entries or not." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "in-progress": Schema.optionalKey(Schema.String), "get-week-before": Schema.optionalKey(Schema.String.annotate({ "description": "Valid yyyy-MM-ddThh:mm:ssZ format date. If provided, filters results within the week before the datetime provided and only those entries with assigned project or task." })) })
1041
+ export type GetTimeEntriesParams = { readonly "description"?: string, readonly "start"?: string, readonly "end"?: string, readonly "project"?: string, readonly "task"?: string, readonly "tags"?: ReadonlyArray<string>, readonly "project-required"?: boolean, readonly "task-required"?: boolean, readonly "hydrated"?: boolean, readonly "page"?: number, readonly "page-size"?: number, readonly "in-progress"?: string, readonly "get-week-before"?: string, readonly "timeViewMode"?: string }
1042
+ export const GetTimeEntriesParams = Schema.Struct({ "description": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a term for searching time entries by description." })), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a start date in the yyyy-MM-ddThh:mm:ssZ format." })), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an end date in the yyyy-MM-ddThh:mm:ssZ format." })), "project": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string in their project id." })), "task": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string in their task id." })), "tags": Schema.optionalKey(Schema.Array(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string(s) in their tag id(s)." })).annotate({ "description": "If provided, you'll get a filtered list of time entries that matches the provided string(s) in their tag id(s)." }).check(Schema.isUnique().annotate({ "expected": "an array with unique items" }))), "project-required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to only get time entries which have a project." })), "task-required": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to only get time entries which have tasks." })), "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether to include additional information on time entries or not." })), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "in-progress": Schema.optionalKey(Schema.String), "get-week-before": Schema.optionalKey(Schema.String.annotate({ "description": "Valid yyyy-MM-ddThh:mm:ssZ format date. If provided, filters results within the week before the datetime provided and only those entries with assigned project or task." })), "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
1032
1043
  export type GetTimeEntries200 = ReadonlyArray<TimeEntryWithRatesDtoV1>
1033
1044
  export const GetTimeEntries200 = Schema.Array(TimeEntryWithRatesDtoV1)
1034
- export type ReplaceManyParams = { readonly "hydrated"?: boolean }
1035
- export const ReplaceManyParams = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, results will contain additional information about the time entry." })) })
1045
+ export type ReplaceManyParams = { readonly "hydrated"?: boolean, readonly "timeViewMode"?: string }
1046
+ export const ReplaceManyParams = Schema.Struct({ "hydrated": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, results will contain additional information about the time entry." })), "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
1036
1047
  export type ReplaceManyRequestJson = ReadonlyArray<UpdateTimeEntryBulkRequest>
1037
- export const ReplaceManyRequestJson = Schema.Array(UpdateTimeEntryBulkRequest).check(Schema.isMinLength(1))
1048
+ export const ReplaceManyRequestJson = Schema.Array(UpdateTimeEntryBulkRequest).check(Schema.isMinLength(1).annotate({ "expected": "a value with a length of at least 1" }))
1038
1049
  export type ReplaceMany200 = ReadonlyArray<TimeEntryDtoV1>
1039
1050
  export const ReplaceMany200 = Schema.Array(TimeEntryDtoV1)
1040
- export type CreateForOthersParams = { readonly "from-entry"?: string }
1041
- export const CreateForOthersParams = Schema.Struct({ "from-entry": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry identifier across the system." })) })
1051
+ export type CreateForOthersParams = { readonly "from-entry"?: string, readonly "timeViewMode"?: "TIME_SENSITIVE_VIEW" | "AGGREGATED_TIME_VIEW" }
1052
+ export const CreateForOthersParams = Schema.Struct({ "from-entry": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry identifier across the system." })), "timeViewMode": Schema.optionalKey(Schema.Literals(["TIME_SENSITIVE_VIEW", "AGGREGATED_TIME_VIEW"])) })
1042
1053
  export type CreateForOthersRequestJson = CreateTimeEntryRequest
1043
1054
  export const CreateForOthersRequestJson = CreateTimeEntryRequest
1044
1055
  export type CreateForOthers201 = TimeEntryDtoImplV1
@@ -1051,10 +1062,12 @@ export type StopRunningTimeEntryRequestJson = StopTimeEntryRequest
1051
1062
  export const StopRunningTimeEntryRequestJson = StopTimeEntryRequest
1052
1063
  export type StopRunningTimeEntry200 = TimeEntryDtoImplV1
1053
1064
  export const StopRunningTimeEntry200 = TimeEntryDtoImplV1
1065
+ export type DuplicateTimeEntryParams = { readonly "timeViewMode"?: string }
1066
+ export const DuplicateTimeEntryParams = Schema.Struct({ "timeViewMode": Schema.optionalKey(Schema.String.annotate({ "description": "Represents time view mode used to display time entries." })) })
1054
1067
  export type DuplicateTimeEntry201 = TimeEntryDtoImplV1
1055
1068
  export const DuplicateTimeEntry201 = TimeEntryDtoImplV1
1056
1069
  export type GetUsersOfWorkspaceParams = { readonly "email"?: string, readonly "project-id"?: string, readonly "status"?: "PENDING" | "ACTIVE" | "DECLINED" | "INACTIVE" | "ALL", readonly "account-statuses"?: string, readonly "name"?: string, readonly "sort-column"?: "ID" | "EMAIL" | "NAME" | "NAME_LOWERCASE" | "ACCESS" | "HOURLYRATE" | "COSTRATE", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number, readonly "memberships"?: "ALL" | "NONE" | "WORKSPACE" | "PROJECT" | "USERGROUP", readonly "include-roles": string }
1057
- export const GetUsersOfWorkspaceParams = Schema.Struct({ "email": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their email address." })), "project-id": Schema.optionalKey(Schema.String), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"])), "account-statuses": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their name" })), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "EMAIL", "NAME", "NAME_LOWERCASE", "ACCESS", "HOURLYRATE", "COSTRATE"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "memberships": Schema.optionalKey(Schema.Literals(["ALL", "NONE", "WORKSPACE", "PROJECT", "USERGROUP"])), "include-roles": Schema.String })
1070
+ export const GetUsersOfWorkspaceParams = Schema.Struct({ "email": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their email address." })), "project-id": Schema.optionalKey(Schema.String), "status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"])), "account-statuses": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of users that contain the provided string in their name" })), "sort-column": Schema.optionalKey(Schema.Literals(["ID", "EMAIL", "NAME", "NAME_LOWERCASE", "ACCESS", "HOURLYRATE", "COSTRATE"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "memberships": Schema.optionalKey(Schema.Literals(["ALL", "NONE", "WORKSPACE", "PROJECT", "USERGROUP"])), "include-roles": Schema.String })
1058
1071
  export type GetUsersOfWorkspace200 = ReadonlyArray<UserDtoV1>
1059
1072
  export const GetUsersOfWorkspace200 = Schema.Array(UserDtoV1)
1060
1073
  export type AddUsersParams = { readonly "send-email": string }
@@ -1086,7 +1099,7 @@ export const SetHourlyRateForUserRequestJson = HourlyRateRequestV1
1086
1099
  export type SetHourlyRateForUser200 = WorkspaceDtoV1
1087
1100
  export const SetHourlyRateForUser200 = WorkspaceDtoV1
1088
1101
  export type GetManagersOfUserParams = { readonly "sort-column"?: "ID" | "EMAIL" | "NAME" | "NAME_LOWERCASE" | "ACCESS" | "HOURLYRATE" | "COSTRATE", readonly "sort-order"?: "ASCENDING" | "DESCENDING", readonly "page"?: number, readonly "page-size"?: number }
1089
- export const GetManagersOfUserParams = Schema.Struct({ "sort-column": Schema.optionalKey(Schema.Literals(["ID", "EMAIL", "NAME", "NAME_LOWERCASE", "ACCESS", "HOURLYRATE", "COSTRATE"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))) })
1102
+ export const GetManagersOfUserParams = Schema.Struct({ "sort-column": Schema.optionalKey(Schema.Literals(["ID", "EMAIL", "NAME", "NAME_LOWERCASE", "ACCESS", "HOURLYRATE", "COSTRATE"])), "sort-order": Schema.optionalKey(Schema.Literals(["ASCENDING", "DESCENDING"])), "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "page-size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))) })
1090
1103
  export type GetManagersOfUser200 = ReadonlyArray<UserDtoV1>
1091
1104
  export const GetManagersOfUser200 = Schema.Array(UserDtoV1)
1092
1105
  export type CreateUserRoleRequestJson = RoleRequestV1
@@ -1110,19 +1123,19 @@ export const UpdateWebhookRequestJson = UpdateWebhookRequestV1
1110
1123
  export type UpdateWebhook200 = WebhookDtoV1
1111
1124
  export const UpdateWebhook200 = WebhookDtoV1
1112
1125
  export type GetLogsForWebhookParams = { readonly "page"?: number, readonly "size"?: number }
1113
- export const GetLogsForWebhookParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))) })
1126
+ export const GetLogsForWebhookParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))) })
1114
1127
  export type GetLogsForWebhookRequestJson = WebhookLogSearchRequestV1
1115
1128
  export const GetLogsForWebhookRequestJson = WebhookLogSearchRequestV1
1116
1129
  export type GetLogsForWebhook200 = ReadonlyArray<WebhookLogDtoV1>
1117
1130
  export const GetLogsForWebhook200 = Schema.Array(WebhookLogDtoV1)
1118
1131
  export type GetWebhookEventStatusesWithLatestLogParams = { readonly "page"?: number, readonly "size"?: number, readonly "statuses"?: "SUCCEEDED" | "RETRYING" | "FAILED" }
1119
- export const GetWebhookEventStatusesWithLatestLogParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "statuses": Schema.optionalKey(Schema.Literals(["SUCCEEDED", "RETRYING", "FAILED"])) })
1132
+ export const GetWebhookEventStatusesWithLatestLogParams = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "size": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "statuses": Schema.optionalKey(Schema.Literals(["SUCCEEDED", "RETRYING", "FAILED"])) })
1120
1133
  export type GetWebhookEventStatusesWithLatestLog200 = ReadonlyArray<WebhookEventStatusWithLatestLogDtoV1>
1121
1134
  export const GetWebhookEventStatusesWithLatestLog200 = Schema.Array(WebhookEventStatusWithLatestLogDtoV1)
1122
1135
  export type GenerateNewToken200 = WebhookDtoV1
1123
1136
  export const GenerateNewToken200 = WebhookDtoV1
1124
1137
  export type GenerateSharedReportV1Params = { readonly "dateRangeStart"?: string, readonly "dateRangeEnd"?: string, readonly "sortOrder"?: string, readonly "sortColumn"?: string, readonly "exportType"?: string, readonly "page"?: number, readonly "pageSize"?: number }
1125
- export const GenerateSharedReportV1Params = Schema.Struct({ "dateRangeStart": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the start date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" })), "dateRangeEnd": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the end date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" })), "sortOrder": Schema.optionalKey(Schema.String.annotate({ "description": "Sort result in ascending or descending order" })), "sortColumn": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get result sorted by sort column." })), "exportType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an export type of shared report" })), "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt())) })
1138
+ export const GenerateSharedReportV1Params = Schema.Struct({ "dateRangeStart": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the start date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" })), "dateRangeEnd": Schema.optionalKey(Schema.String.annotate({ "description": "Provide the end date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)" })), "sortOrder": Schema.optionalKey(Schema.String.annotate({ "description": "Sort result in ascending or descending order" })), "sortColumn": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get result sorted by sort column." })), "exportType": Schema.optionalKey(Schema.String.annotate({ "description": "Represents an export type of shared report" })), "page": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))) })
1126
1139
  export type GenerateAttendanceReportRequestJson = AttendanceReportFilterV1
1127
1140
  export const GenerateAttendanceReportRequestJson = AttendanceReportFilterV1
1128
1141
  export type GenerateDetailedReportRequestJson = DetailedReportFilterV1
@@ -1136,7 +1149,7 @@ export const GenerateSummaryReportRequestJson = SummaryReportFilterV1
1136
1149
  export type GenerateWeeklyReportRequestJson = WeeklyReportFilterV1
1137
1150
  export const GenerateWeeklyReportRequestJson = WeeklyReportFilterV1
1138
1151
  export type GetSharedReportsV1Params = { readonly "page"?: number, readonly "pageSize"?: number, readonly "sharedReportsFilter"?: "ALL" | "ALL_ADMIN" | "CREATED_BY_ME" | "SHARED_WITH_ME" }
1139
- export const GetSharedReportsV1Params = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt())), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1))), "sharedReportsFilter": Schema.optionalKey(Schema.Literals(["ALL", "ALL_ADMIN", "CREATED_BY_ME", "SHARED_WITH_ME"]).annotate({ "description": "Filters shared reports by origin." })) })
1152
+ export const GetSharedReportsV1Params = Schema.Struct({ "page": Schema.optionalKey(Schema.Number.annotate({ "description": "Page number.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" }))), "pageSize": Schema.optionalKey(Schema.Number.annotate({ "description": "Page size.", "format": "int32" }).check(Schema.isInt().annotate({ "expected": "an integer" })).check(Schema.isGreaterThanOrEqualTo(1).annotate({ "expected": "a value greater than or equal to 1" }))), "sharedReportsFilter": Schema.optionalKey(Schema.Literals(["ALL", "ALL_ADMIN", "CREATED_BY_ME", "SHARED_WITH_ME"]).annotate({ "description": "Filters shared reports by origin." })) })
1140
1153
  export type SaveSharedReportV1RequestJson = SharedReportRequestV1
1141
1154
  export const SaveSharedReportV1RequestJson = SharedReportRequestV1
1142
1155
  export type UpdateSharedReportV1RequestJson = UpdateSharedReportRequestV1
@@ -1258,6 +1271,7 @@ export const make = (
1258
1271
  }))
1259
1272
  ),
1260
1273
  "createApprrovalRequest": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests`).pipe(
1274
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
1261
1275
  HttpClientRequest.bodyJsonUnsafe(options.payload),
1262
1276
  withResponse(options.config)(HttpClientResponse.matchStatus({
1263
1277
  "2xx": decodeSuccess(CreateApprrovalRequest201),
@@ -1265,12 +1279,14 @@ export const make = (
1265
1279
  }))
1266
1280
  ),
1267
1281
  "resubmitApprovalRequest": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/resubmit-entries-for-approval`).pipe(
1282
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
1268
1283
  HttpClientRequest.bodyJsonUnsafe(options.payload),
1269
1284
  withResponse(options.config)(HttpClientResponse.matchStatus({
1270
1285
  orElse: unexpectedStatus
1271
1286
  }))
1272
1287
  ),
1273
1288
  "createApprovalForOtherDeprecated": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/users/${userId}`).pipe(
1289
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
1274
1290
  HttpClientRequest.bodyJsonUnsafe(options.payload),
1275
1291
  withResponse(options.config)(HttpClientResponse.matchStatus({
1276
1292
  "2xx": decodeSuccess(CreateApprovalForOtherDeprecated201),
@@ -1278,12 +1294,14 @@ export const make = (
1278
1294
  }))
1279
1295
  ),
1280
1296
  "resubmitApprovalRequestForOther": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/users/${userId}/resubmit-entries-for-approval`).pipe(
1297
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
1281
1298
  HttpClientRequest.bodyJsonUnsafe(options.payload),
1282
1299
  withResponse(options.config)(HttpClientResponse.matchStatus({
1283
1300
  orElse: unexpectedStatus
1284
1301
  }))
1285
1302
  ),
1286
1303
  "createApprovalForOtherWithType": (workspaceId, userId, type, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/users/${userId}/${type}`).pipe(
1304
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
1287
1305
  HttpClientRequest.bodyJsonUnsafe(options.payload),
1288
1306
  withResponse(options.config)(HttpClientResponse.matchStatus({
1289
1307
  "2xx": decodeSuccess(CreateApprovalForOtherWithType201),
@@ -1298,6 +1316,7 @@ export const make = (
1298
1316
  }))
1299
1317
  ),
1300
1318
  "createApprrovalRequest1": (workspaceId, type, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/${type}`).pipe(
1319
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
1301
1320
  HttpClientRequest.bodyJsonUnsafe(options.payload),
1302
1321
  withResponse(options.config)(HttpClientResponse.matchStatus({
1303
1322
  "2xx": decodeSuccess(CreateApprrovalRequest1201),
@@ -2071,6 +2090,7 @@ export const make = (
2071
2090
  }))
2072
2091
  ),
2073
2092
  "createTimeOffRequest": (workspaceId, policyId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/requests`).pipe(
2093
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
2074
2094
  HttpClientRequest.bodyJsonUnsafe(options.payload),
2075
2095
  withResponse(options.config)(HttpClientResponse.matchStatus({
2076
2096
  "2xx": decodeSuccess(CreateTimeOffRequest200),
@@ -2078,12 +2098,14 @@ export const make = (
2078
2098
  }))
2079
2099
  ),
2080
2100
  "deleteTimeOffRequest": (workspaceId, policyId, requestId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/requests/${requestId}`).pipe(
2101
+ HttpClientRequest.setUrlParams({ "timeViewMode": options?.params?.["timeViewMode"] as any }),
2081
2102
  withResponse(options?.config)(HttpClientResponse.matchStatus({
2082
2103
  "2xx": decodeSuccess(DeleteTimeOffRequest200),
2083
2104
  orElse: unexpectedStatus
2084
2105
  }))
2085
2106
  ),
2086
2107
  "changeTimeOffRequestStatus": (workspaceId, policyId, requestId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/requests/${requestId}`).pipe(
2108
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
2087
2109
  HttpClientRequest.bodyJsonUnsafe(options.payload),
2088
2110
  withResponse(options.config)(HttpClientResponse.matchStatus({
2089
2111
  "2xx": decodeSuccess(ChangeTimeOffRequestStatus200),
@@ -2091,6 +2113,7 @@ export const make = (
2091
2113
  }))
2092
2114
  ),
2093
2115
  "createTimeOffRequestForOther": (workspaceId, policyId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/users/${userId}/requests`).pipe(
2116
+ HttpClientRequest.setUrlParams({ "timeViewMode": options.params?.["timeViewMode"] as any }),
2094
2117
  HttpClientRequest.bodyJsonUnsafe(options.payload),
2095
2118
  withResponse(options.config)(HttpClientResponse.matchStatus({
2096
2119
  "2xx": decodeSuccess(CreateTimeOffRequestForOther200),
@@ -2145,14 +2168,14 @@ export const make = (
2145
2168
  }))
2146
2169
  ),
2147
2170
  "getTimeEntries": (workspaceId, userId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(
2148
- HttpClientRequest.setUrlParams({ "description": options?.params?.["description"] as any, "start": options?.params?.["start"] as any, "end": options?.params?.["end"] as any, "project": options?.params?.["project"] as any, "task": options?.params?.["task"] as any, "tags": options?.params?.["tags"] as any, "project-required": options?.params?.["project-required"] as any, "task-required": options?.params?.["task-required"] as any, "hydrated": options?.params?.["hydrated"] as any, "page": options?.params?.["page"] as any, "page-size": options?.params?.["page-size"] as any, "in-progress": options?.params?.["in-progress"] as any, "get-week-before": options?.params?.["get-week-before"] as any }),
2171
+ HttpClientRequest.setUrlParams({ "description": options?.params?.["description"] as any, "start": options?.params?.["start"] as any, "end": options?.params?.["end"] as any, "project": options?.params?.["project"] as any, "task": options?.params?.["task"] as any, "tags": options?.params?.["tags"] as any, "project-required": options?.params?.["project-required"] as any, "task-required": options?.params?.["task-required"] as any, "hydrated": options?.params?.["hydrated"] as any, "page": options?.params?.["page"] as any, "page-size": options?.params?.["page-size"] as any, "in-progress": options?.params?.["in-progress"] as any, "get-week-before": options?.params?.["get-week-before"] as any, "timeViewMode": options?.params?.["timeViewMode"] as any }),
2149
2172
  withResponse(options?.config)(HttpClientResponse.matchStatus({
2150
2173
  "2xx": decodeSuccess(GetTimeEntries200),
2151
2174
  orElse: unexpectedStatus
2152
2175
  }))
2153
2176
  ),
2154
2177
  "replaceMany": (workspaceId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(
2155
- HttpClientRequest.setUrlParams({ "hydrated": options.params?.["hydrated"] as any }),
2178
+ HttpClientRequest.setUrlParams({ "hydrated": options.params?.["hydrated"] as any, "timeViewMode": options.params?.["timeViewMode"] as any }),
2156
2179
  HttpClientRequest.bodyJsonUnsafe(options.payload),
2157
2180
  withResponse(options.config)(HttpClientResponse.matchStatus({
2158
2181
  "2xx": decodeSuccess(ReplaceMany200),
@@ -2160,7 +2183,7 @@ export const make = (
2160
2183
  }))
2161
2184
  ),
2162
2185
  "createForOthers": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(
2163
- HttpClientRequest.setUrlParams({ "from-entry": options.params?.["from-entry"] as any }),
2186
+ HttpClientRequest.setUrlParams({ "from-entry": options.params?.["from-entry"] as any, "timeViewMode": options.params?.["timeViewMode"] as any }),
2164
2187
  HttpClientRequest.bodyJsonUnsafe(options.payload),
2165
2188
  withResponse(options.config)(HttpClientResponse.matchStatus({
2166
2189
  "2xx": decodeSuccess(CreateForOthers201),
@@ -2182,6 +2205,7 @@ export const make = (
2182
2205
  }))
2183
2206
  ),
2184
2207
  "duplicateTimeEntry": (workspaceId, userId, id, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries/${id}/duplicate`).pipe(
2208
+ HttpClientRequest.setUrlParams({ "timeViewMode": options?.params?.["timeViewMode"] as any }),
2185
2209
  withResponse(options?.config)(HttpClientResponse.matchStatus({
2186
2210
  "2xx": decodeSuccess(DuplicateTimeEntry201),
2187
2211
  orElse: unexpectedStatus
@@ -2422,23 +2446,23 @@ readonly "getApprovalRequests": <Config extends OperationConfig>(workspaceId: st
2422
2446
  /**
2423
2447
  * Submit approval request
2424
2448
  */
2425
- readonly "createApprrovalRequest": <Config extends OperationConfig>(workspaceId: string, options: { readonly payload: typeof CreateApprrovalRequestRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprrovalRequest201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2449
+ readonly "createApprrovalRequest": <Config extends OperationConfig>(workspaceId: string, options: { readonly params?: typeof CreateApprrovalRequestParams.Encoded | undefined; readonly payload: typeof CreateApprrovalRequestRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprrovalRequest201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2426
2450
  /**
2427
2451
  * Submit non pending/approved entries/expenses for approval to an existing approval request
2428
2452
  */
2429
- readonly "resubmitApprovalRequest": <Config extends OperationConfig>(workspaceId: string, options: { readonly payload: typeof ResubmitApprovalRequestRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<void, Config>, HttpClientError.HttpClientError | SchemaError>
2453
+ readonly "resubmitApprovalRequest": <Config extends OperationConfig>(workspaceId: string, options: { readonly params?: typeof ResubmitApprovalRequestParams.Encoded | undefined; readonly payload: typeof ResubmitApprovalRequestRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<void, Config>, HttpClientError.HttpClientError | SchemaError>
2430
2454
  /**
2431
2455
  * Submit approval request for user
2432
2456
  */
2433
- readonly "createApprovalForOtherDeprecated": <Config extends OperationConfig>(workspaceId: string, userId: string, options: { readonly payload: typeof CreateApprovalForOtherDeprecatedRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprovalForOtherDeprecated201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2457
+ readonly "createApprovalForOtherDeprecated": <Config extends OperationConfig>(workspaceId: string, userId: string, options: { readonly params?: typeof CreateApprovalForOtherDeprecatedParams.Encoded | undefined; readonly payload: typeof CreateApprovalForOtherDeprecatedRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprovalForOtherDeprecated201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2434
2458
  /**
2435
2459
  * Re-submit rejected/withdrawn entries/expenses for an approval of a user
2436
2460
  */
2437
- readonly "resubmitApprovalRequestForOther": <Config extends OperationConfig>(workspaceId: string, userId: string, options: { readonly payload: typeof ResubmitApprovalRequestForOtherRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<void, Config>, HttpClientError.HttpClientError | SchemaError>
2461
+ readonly "resubmitApprovalRequestForOther": <Config extends OperationConfig>(workspaceId: string, userId: string, options: { readonly params?: typeof ResubmitApprovalRequestForOtherParams.Encoded | undefined; readonly payload: typeof ResubmitApprovalRequestForOtherRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<void, Config>, HttpClientError.HttpClientError | SchemaError>
2438
2462
  /**
2439
2463
  * Submit approval request for user with type
2440
2464
  */
2441
- readonly "createApprovalForOtherWithType": <Config extends OperationConfig>(workspaceId: string, userId: string, type: string, options: { readonly payload: typeof CreateApprovalForOtherWithTypeRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprovalForOtherWithType201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2465
+ readonly "createApprovalForOtherWithType": <Config extends OperationConfig>(workspaceId: string, userId: string, type: string, options: { readonly params?: typeof CreateApprovalForOtherWithTypeParams.Encoded | undefined; readonly payload: typeof CreateApprovalForOtherWithTypeRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprovalForOtherWithType201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2442
2466
  /**
2443
2467
  * Update an approval request
2444
2468
  */
@@ -2446,7 +2470,7 @@ readonly "updateApprovalStatus": <Config extends OperationConfig>(workspaceId: s
2446
2470
  /**
2447
2471
  * Submit approval request with type
2448
2472
  */
2449
- readonly "createApprrovalRequest1": <Config extends OperationConfig>(workspaceId: string, type: string, options: { readonly payload: typeof CreateApprrovalRequest1RequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprrovalRequest1201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2473
+ readonly "createApprrovalRequest1": <Config extends OperationConfig>(workspaceId: string, type: string, options: { readonly params?: typeof CreateApprrovalRequest1Params.Encoded | undefined; readonly payload: typeof CreateApprrovalRequest1RequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateApprrovalRequest1201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2450
2474
  /**
2451
2475
  * Find clients on a workspace
2452
2476
  */
@@ -2589,11 +2613,13 @@ readonly "createInvoice": <Config extends OperationConfig>(workspaceId: string,
2589
2613
  */
2590
2614
  readonly "getInvoicesInfo": <Config extends OperationConfig>(workspaceId: string, options: { readonly payload: typeof GetInvoicesInfoRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof GetInvoicesInfo200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2591
2615
  /**
2592
- * Get an invoice in another language
2616
+ * Get invoice settings
2593
2617
  */
2594
2618
  readonly "getInvoiceSettings": <Config extends OperationConfig>(workspaceId: string, options: { readonly config?: Config | undefined } | undefined) => Effect.Effect<WithOptionalResponse<typeof GetInvoiceSettings200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2595
2619
  /**
2596
- * Change an invoice language
2620
+ * To update settings, first perform a `GET` request to ``/v1/workspaces/{workspaceId}/invoices/settings`` to retrieve the object's current state. Next, modify only the specific fields you wish to change while leaving the rest of the structure intact. Finally, send that modified payload back to the server using a PUT request to overwrite and update the resource.
2621
+ *
2622
+ * Important: You must echo back the full payload returned by the initial `GET` request; Because PUT replaces the entire resource, any omitted fields will be overwritten with default values or cleared entirely.
2597
2623
  */
2598
2624
  readonly "updateInvoiceSettings": <Config extends OperationConfig>(workspaceId: string, options: { readonly payload: typeof UpdateInvoiceSettingsRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<void, Config>, HttpClientError.HttpClientError | SchemaError>
2599
2625
  /**
@@ -2915,19 +2941,19 @@ readonly "updatePolicyStatus": <Config extends OperationConfig>(workspaceId: str
2915
2941
  /**
2916
2942
  * Create a time off request
2917
2943
  */
2918
- readonly "createTimeOffRequest": <Config extends OperationConfig>(workspaceId: string, policyId: string, options: { readonly payload: typeof CreateTimeOffRequestRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateTimeOffRequest200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2944
+ readonly "createTimeOffRequest": <Config extends OperationConfig>(workspaceId: string, policyId: string, options: { readonly params?: typeof CreateTimeOffRequestParams.Encoded | undefined; readonly payload: typeof CreateTimeOffRequestRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateTimeOffRequest200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2919
2945
  /**
2920
2946
  * Delete a time off request
2921
2947
  */
2922
- readonly "deleteTimeOffRequest": <Config extends OperationConfig>(workspaceId: string, policyId: string, requestId: string, options: { readonly config?: Config | undefined } | undefined) => Effect.Effect<WithOptionalResponse<typeof DeleteTimeOffRequest200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2948
+ readonly "deleteTimeOffRequest": <Config extends OperationConfig>(workspaceId: string, policyId: string, requestId: string, options: { readonly params?: typeof DeleteTimeOffRequestParams.Encoded | undefined; readonly config?: Config | undefined } | undefined) => Effect.Effect<WithOptionalResponse<typeof DeleteTimeOffRequest200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2923
2949
  /**
2924
2950
  * Change a time off request status
2925
2951
  */
2926
- readonly "changeTimeOffRequestStatus": <Config extends OperationConfig>(workspaceId: string, policyId: string, requestId: string, options: { readonly payload: typeof ChangeTimeOffRequestStatusRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof ChangeTimeOffRequestStatus200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2952
+ readonly "changeTimeOffRequestStatus": <Config extends OperationConfig>(workspaceId: string, policyId: string, requestId: string, options: { readonly params?: typeof ChangeTimeOffRequestStatusParams.Encoded | undefined; readonly payload: typeof ChangeTimeOffRequestStatusRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof ChangeTimeOffRequestStatus200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2927
2953
  /**
2928
2954
  * Create a time off request for a user
2929
2955
  */
2930
- readonly "createTimeOffRequestForOther": <Config extends OperationConfig>(workspaceId: string, policyId: string, userId: string, options: { readonly payload: typeof CreateTimeOffRequestForOtherRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateTimeOffRequestForOther200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2956
+ readonly "createTimeOffRequestForOther": <Config extends OperationConfig>(workspaceId: string, policyId: string, userId: string, options: { readonly params?: typeof CreateTimeOffRequestForOtherParams.Encoded | undefined; readonly payload: typeof CreateTimeOffRequestForOtherRequestJson.Encoded; readonly config?: Config | undefined }) => Effect.Effect<WithOptionalResponse<typeof CreateTimeOffRequestForOther200.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2931
2957
  /**
2932
2958
  * Get all time off requests on a workspace
2933
2959
  */
@@ -2979,7 +3005,7 @@ readonly "stopRunningTimeEntry": <Config extends OperationConfig>(workspaceId: s
2979
3005
  /**
2980
3006
  * Duplicate a time entry
2981
3007
  */
2982
- readonly "duplicateTimeEntry": <Config extends OperationConfig>(workspaceId: string, userId: string, id: string, options: { readonly config?: Config | undefined } | undefined) => Effect.Effect<WithOptionalResponse<typeof DuplicateTimeEntry201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
3008
+ readonly "duplicateTimeEntry": <Config extends OperationConfig>(workspaceId: string, userId: string, id: string, options: { readonly params?: typeof DuplicateTimeEntryParams.Encoded | undefined; readonly config?: Config | undefined } | undefined) => Effect.Effect<WithOptionalResponse<typeof DuplicateTimeEntry201.Type, Config>, HttpClientError.HttpClientError | SchemaError>
2983
3009
  /**
2984
3010
  * Find all users on a workspace
2985
3011
  */