@knpkv/clockify-api-client 0.3.0 → 1.0.1

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +92 -80
  3. package/dist/ClockifyApiClient.d.ts +44 -45
  4. package/dist/ClockifyApiClient.d.ts.map +1 -1
  5. package/dist/ClockifyApiClient.js +52 -121
  6. package/dist/ClockifyApiClient.js.map +1 -1
  7. package/dist/generated/ClockifyApi.d.ts +14432 -0
  8. package/dist/generated/ClockifyApi.d.ts.map +1 -0
  9. package/dist/generated/ClockifyApi.js +1239 -0
  10. package/dist/generated/ClockifyApi.js.map +1 -0
  11. package/dist/index.d.ts +4 -6
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -4
  14. package/dist/index.js.map +1 -1
  15. package/package.json +15 -21
  16. package/scripts/regenerate.ts +182 -201
  17. package/scripts/tsconfig.json +13 -0
  18. package/src/ClockifyApiClient.ts +125 -226
  19. package/src/generated/ClockifyApi.ts +3020 -0
  20. package/src/index.ts +10 -14
  21. package/test/ClockifyApiClient.test.ts +195 -0
  22. package/vitest.config.ts +7 -0
  23. package/.specs/VERSION +0 -1
  24. package/.specs/clockify-v1.json +0 -31670
  25. package/.specs/clockify-v1.patch.json +0 -48
  26. package/dist/ClockifyApiError.d.ts +0 -11
  27. package/dist/ClockifyApiError.d.ts.map +0 -1
  28. package/dist/ClockifyApiError.js +0 -14
  29. package/dist/ClockifyApiError.js.map +0 -1
  30. package/dist/OpenApiFetchClient.d.ts +0 -55
  31. package/dist/OpenApiFetchClient.d.ts.map +0 -1
  32. package/dist/OpenApiFetchClient.js +0 -63
  33. package/dist/OpenApiFetchClient.js.map +0 -1
  34. package/dist/generated/index.d.ts +0 -2
  35. package/dist/generated/index.d.ts.map +0 -1
  36. package/dist/generated/index.js +0 -2
  37. package/dist/generated/index.js.map +0 -1
  38. package/dist/generated/schema.d.ts +0 -16204
  39. package/src/ClockifyApiError.ts +0 -17
  40. package/src/OpenApiFetchClient.ts +0 -92
  41. package/src/generated/index.ts +0 -1
  42. package/src/generated/schema.d.ts +0 -16204
  43. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,1239 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Schema from "effect/Schema";
4
+ import * as HttpClientError from "effect/unstable/http/HttpClientError";
5
+ import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
6
+ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
7
+ export const AccountStatus = Schema.Literals(["ACTIVE", "PENDING_EMAIL_VERIFICATION", "DELETED", "NOT_REGISTERED", "LIMITED", "LIMITED_DELETED"]).annotate({ "description": "Represents account status enum." });
8
+ export const AddUserToWorkspaceRequest = Schema.Struct({ "email": Schema.String.annotate({ "description": "Represents an email address of the user." }).check(Schema.isMinLength(1)) });
9
+ export const ApplyTaxes = Schema.Never;
10
+ 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." });
11
+ 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." });
12
+ 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." });
13
+ 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." });
14
+ 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." })) });
15
+ 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." });
16
+ 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." });
17
+ 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." })), "timeUnit": Schema.optionalKey(Schema.Literals(["DAYS", "HOURS"]).annotate({ "description": "Represents automatic accrual time unit." })) }).annotate({ "description": "Provide automatic accrual settings." });
18
+ 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." });
19
+ 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." })), "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." });
20
+ 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." });
21
+ export const CalculationType = Schema.Never;
22
+ 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." })) });
23
+ 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." }) });
24
+ 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." })) });
25
+ 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." })) });
26
+ 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." });
27
+ 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." });
28
+ 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." });
29
+ 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." });
30
+ 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." });
31
+ 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." }) });
32
+ 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." });
33
+ 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." })) });
34
+ 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)) });
35
+ 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))) });
36
+ 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." });
37
+ 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)) });
38
+ 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." })) });
39
+ 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()) });
40
+ 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." })) });
41
+ 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"])) });
42
+ 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)) });
43
+ export const CreateRecurringAssignmentRequestV1 = Schema.Struct({ "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is recurring or not." })), "weeks": Schema.Number.annotate({ "description": "Indicates number of weeks for assignment.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(99)) }).annotate({ "description": "Represents a recurring assignment object. This parameter is optional." });
44
+ 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." }) });
45
+ 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." })) });
46
+ 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." });
47
+ 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." });
48
+ 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." })) });
49
+ 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>" })) });
50
+ export const CustomFieldType = Schema.Never;
51
+ 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." });
52
+ 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." });
53
+ 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" });
54
+ 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." });
55
+ 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." });
56
+ export const DefaultEntitiesDto = Schema.Struct({ "projectId": Schema.optionalKey(Schema.String), "taskId": Schema.optionalKey(Schema.String) });
57
+ 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." });
58
+ export const EntityCreationPermission = Schema.Never;
59
+ 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." });
60
+ 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." });
61
+ 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." });
62
+ 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" });
63
+ 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." });
64
+ 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." });
65
+ 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." });
66
+ export const ExpenseCategoryArchiveV1Request = Schema.Struct({ "archived": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag whether to archive the expense category or not." })) });
67
+ 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." });
68
+ 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." });
69
+ 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." })) });
70
+ 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." });
71
+ 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." })) });
72
+ 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." });
73
+ export const Feature = Schema.Never;
74
+ export const FeaturePlan = Schema.Never;
75
+ 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())) });
76
+ 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())) });
77
+ 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." });
78
+ 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." });
79
+ 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." })) });
80
+ 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." });
81
+ 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." });
82
+ 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." });
83
+ 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." });
84
+ 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." });
85
+ 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." })) });
86
+ 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." });
87
+ 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." });
88
+ 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) });
89
+ 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." });
90
+ 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." });
91
+ 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." });
92
+ export const PatchProjectTemplateRequest = Schema.Struct({ "isTemplate": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether project is a template or not." })) });
93
+ export const Period = Schema.Struct({ "end": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })), "start": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) });
94
+ 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." });
95
+ 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." });
96
+ 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." });
97
+ 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." });
98
+ 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." });
99
+ 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." })) });
100
+ 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." });
101
+ 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." });
102
+ 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." })) });
103
+ export const RecurringAssignmentDto = Schema.Struct({ "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is recurring or not." })), "seriesId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents series identifier." })), "weeks": Schema.optionalKey(Schema.Number.annotate({ "description": "Represents number of weeks for thhis assignment.", "format": "int32" }).check(Schema.isInt())) }).annotate({ "description": "Represents recurring assignment object." });
104
+ export const RecurringAssignmentRequestV1 = Schema.Struct({ "repeat": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether assignment is recurring or not." })), "weeks": Schema.Number.annotate({ "description": "Indicates number of weeks for assignment.", "format": "int32" }).check(Schema.isInt()).check(Schema.isGreaterThanOrEqualTo(1)).check(Schema.isLessThanOrEqualTo(99)) });
105
+ 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" })) });
106
+ export const RoundDto = Schema.Struct({ "minutes": Schema.optionalKey(Schema.String), "round": Schema.optionalKey(Schema.String) }).annotate({ "description": "Represents a time rounding object." });
107
+ 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" });
108
+ 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." })) });
109
+ 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" }) });
110
+ 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." });
111
+ 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." });
112
+ 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." }) });
113
+ export const TagRequest = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a tag name." }).check(Schema.isMinLength(0)).check(Schema.isMaxLength(100))) });
114
+ 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." });
115
+ 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())) });
116
+ export const TaskStatus = Schema.Never;
117
+ export const TaxType = Schema.Never;
118
+ 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." })) });
119
+ export const TemplatePatchRequest = Schema.Struct({ "name": Schema.String.annotate({ "description": "Represents a template name." }).check(Schema.isMinLength(1)) });
120
+ export const TimeEntryId = Schema.Struct({ "dateOfCreationFromObjectId": Schema.optionalKey(Schema.String.annotate({ "format": "date-time" })) }).annotate({ "description": "Represents a list of invoiced time entry ids" });
121
+ 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." });
122
+ 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." });
123
+ 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." });
124
+ 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." });
125
+ 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." });
126
+ 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." });
127
+ 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." });
128
+ 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." }) });
129
+ export const UpdateBalanceRequestV1 = Schema.Struct({ "note": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a new balance note value." })), "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 a new balance value.", "format": "double" }).check(Schema.isFinite()).check(Schema.isGreaterThanOrEqualTo(-10000)).check(Schema.isLessThanOrEqualTo(10000)) });
130
+ 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))) });
131
+ 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." });
132
+ 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." })) });
133
+ 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)) });
134
+ 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))) });
135
+ 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())) });
136
+ 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))) });
137
+ export const UpdateUserStatusRequest = Schema.Struct({ "status": Schema.Literals(["ACTIVE", "INACTIVE"]).annotate({ "description": "Represents membership status." }) });
138
+ 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." }) });
139
+ 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" })) });
140
+ 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." });
141
+ export const UpsertUserCustomFieldRequestV1 = Schema.Struct({ "value": Schema.optionalKey(Schema.Struct({}).annotate({ "description": "Represents custom field value." })) });
142
+ 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." });
143
+ 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))) });
144
+ export const UserGroupUserRequest = Schema.Struct({ "userId": Schema.String.annotate({ "description": "Represents a user identifier across the system." }) });
145
+ 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." });
146
+ 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." });
147
+ export const VisibleZeroFieldsInvoice = Schema.Never;
148
+ 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." })) });
149
+ export const WebhookEventTriggerSourceType = Schema.Never;
150
+ export const WebhookEventType = Schema.Never;
151
+ 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." })) });
152
+ 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" })) });
153
+ 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" });
154
+ 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" });
155
+ 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" });
156
+ 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." })) });
157
+ 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." })) });
158
+ 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" })) });
159
+ 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." })) });
160
+ 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." })) });
161
+ 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." })) });
162
+ 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." })) });
163
+ 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." })) });
164
+ 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." })) });
165
+ 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." })) });
166
+ 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." });
167
+ 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." });
168
+ 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." })) });
169
+ 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." });
170
+ 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" });
171
+ export const DetailedOptionsV1 = Schema.Struct({ "totals": Schema.optionalKey(Schema.Literals(["CALCULATE", "EXCLUDE"])) });
172
+ export const EntityName = Schema.Struct({ "id": Schema.optionalKey(Schema.String), "name": Schema.optionalKey(Schema.String) });
173
+ 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" });
174
+ 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" });
175
+ 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" });
176
+ 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." });
177
+ 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" });
178
+ 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())) });
179
+ 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 });
180
+ 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." });
181
+ export const InvoicingInfo = Schema.Struct({ "invoiceId": Schema.optionalKey(Schema.String), "manuallyInvoiced": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Expense's invoicing info." });
182
+ 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." })) });
183
+ 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." });
184
+ 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." });
185
+ 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." });
186
+ 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." }) });
187
+ 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) });
188
+ 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." })) });
189
+ 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)) });
190
+ 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." })) });
191
+ 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." });
192
+ 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." })) });
193
+ 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), "workspaceId": Schema.optionalKey(Schema.String.annotate({ "description": "Represents workspace identifier across the system." })) }).annotate({ "description": "Represents a valid approval request data transfer object." });
194
+ 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." })) });
195
+ export const AutomaticTimeEntryCreationDto = Schema.Struct({ "defaultEntities": Schema.optionalKey(DefaultEntitiesDto), "enabled": Schema.optionalKey(Schema.Boolean) }).annotate({ "description": "Represents automatic time entry creation settings." });
196
+ 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." });
197
+ 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." });
198
+ 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())) });
199
+ 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." });
200
+ 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." });
201
+ 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))) });
202
+ 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." });
203
+ 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())) });
204
+ export const InvoiceSettingsDtoV1 = Schema.Struct({ "defaults": Schema.optionalKey(InvoiceDefaultSettingsDto), "exportFields": Schema.optionalKey(InvoiceExportFields), "labels": Schema.optionalKey(LabelsCustomization) });
205
+ export const UpdateInvoiceSettingsRequestV1 = Schema.Struct({ "defaults": Schema.optionalKey(InvoiceDefaultSettingsRequestV1), "exportFields": Schema.optionalKey(InvoiceExportFieldsRequest), "labels": LabelsCustomizationRequest });
206
+ export const PageableCollectionLogBinDocumentDto = Schema.Struct({ "response": Schema.optionalKey(Schema.Array(LogBinDocumentDto)) });
207
+ 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." })) });
208
+ 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." });
209
+ 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`." });
210
+ 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" })) });
211
+ 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." });
212
+ 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(RecurringAssignmentDto), "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." })) });
213
+ 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." });
214
+ 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." });
215
+ 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." });
216
+ 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())) });
217
+ 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." })) });
218
+ 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()) });
219
+ export const ProjectEstimateRequest = Schema.Struct({ "budgetEstimate": Schema.optionalKey(EstimateWithOptionsRequest), "estimateReset": Schema.optionalKey(EstimateResetRequest), "timeEstimate": Schema.optionalKey(TimeEstimateRequest) });
220
+ 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." });
221
+ 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." });
222
+ 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." }) });
223
+ 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." })) });
224
+ 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." }) });
225
+ 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." })) });
226
+ 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." })) });
227
+ 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 value objects for user’s custom fields." }).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." })) });
228
+ 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"])) });
229
+ 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"])) });
230
+ 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." })) });
231
+ 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." })) });
232
+ 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." })) });
233
+ 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." })) });
234
+ 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." });
235
+ 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." })) });
236
+ 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" });
237
+ 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." });
238
+ 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" })) });
239
+ 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." });
240
+ 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." });
241
+ 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" });
242
+ 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" });
243
+ export const PageableV1ListAuditLogDtoV1 = Schema.Struct({ "response": Schema.optionalKey(Schema.Array(AuditLogDtoV1)) });
244
+ 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." }) });
245
+ 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) });
246
+ 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." })) });
247
+ 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." });
248
+ 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." })) });
249
+ 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), "everyoneIncludingNew": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Indicates whether the policy is applied to future new users." })), "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." })) });
250
+ 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) });
251
+ 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) });
252
+ 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) });
253
+ 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": UserGroupIdsSchema, "users": UserIdsSchema });
254
+ 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" });
255
+ 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." })) });
256
+ 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) });
257
+ 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." });
258
+ 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." })) });
259
+ 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 });
260
+ 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." })) });
261
+ 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 });
262
+ 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) });
263
+ 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." });
264
+ 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." })) });
265
+ 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." })) });
266
+ export const AddLimitedUsersRequest = Schema.Struct({ "users": Schema.Array(LimitedUserRequest).check(Schema.isMinLength(1)).check(Schema.isMaxLength(250)) });
267
+ 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())) });
268
+ 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())) });
269
+ 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." })) });
270
+ 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." })) });
271
+ 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." })) });
272
+ 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." })) });
273
+ 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." })) });
274
+ export const ExpenseDetailedReportDtoV1 = Schema.Struct({ "expenses": Schema.optionalKey(Schema.Array(ExpenseReportDtoV1).annotate({ "description": "Represents list of expenses" })), "totals": Schema.optionalKey(ExpenseTotalsDtoV1) }).annotate({ "description": "report" });
275
+ 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())) });
276
+ 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) });
277
+ 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)) });
278
+ 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." })) });
279
+ 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())) });
280
+ 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(() => 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" });
281
+ export const UploadImageRequestFormData = Schema.Struct({ "file": Schema.String.annotate({ "description": "Image to be uploaded", "format": "binary" }) });
282
+ export const UploadImage200 = UploadFileResponseV1;
283
+ export const GetLoggedUserParams = Schema.Struct({ "include-memberships": Schema.optionalKey(Schema.Boolean.annotate({ "description": "If set to true, memberships will be included." })) });
284
+ export const GetLoggedUser200 = UserDtoV1;
285
+ export const GetWorkspacesOfUserParams = Schema.Struct({ "roles": Schema.optionalKey(Schema.Literals(["WORKSPACE_ADMIN", "OWNER", "TEAM_MANAGER", "PROJECT_MANAGER"])) });
286
+ export const GetWorkspacesOfUser200 = Schema.Array(WorkspaceDtoV1);
287
+ export const CreateWorkspaceRequestJson = CreateWorkspaceRequestV1;
288
+ export const CreateWorkspace201 = WorkspaceDtoV1;
289
+ export const GetWorkspaceOfUser200 = WorkspaceDtoV1;
290
+ export const GetAddonWebhooks200 = WebhooksDtoV1;
291
+ 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))) });
292
+ export const GetApprovalRequests200 = Schema.Array(ApprovalDetailsDtoV1);
293
+ export const CreateApprrovalRequestRequestJson = CreateApprovalRequest;
294
+ export const CreateApprrovalRequest201 = ApprovalRequestDtoV1;
295
+ export const ResubmitApprovalRequestRequestJson = CreateApprovalRequest;
296
+ export const CreateApprovalForOtherRequestJson = CreateApprovalRequest;
297
+ export const CreateApprovalForOther201 = ApprovalRequestDtoV1;
298
+ export const ResubmitApprovalRequestForOtherRequestJson = CreateApprovalRequest;
299
+ export const UpdateApprovalStatusRequestJson = UpdateApprovalRequest;
300
+ export const UpdateApprovalStatus200 = ApprovalRequestDtoV1;
301
+ 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) });
302
+ export const GetClients200 = Schema.Array(ClientWithCurrencyDtoV1);
303
+ export const CreateClientRequestJson = CreateClientRequestV1;
304
+ export const CreateClient201 = ClientWithCurrencyDtoV1;
305
+ export const GetClient200 = ClientWithCurrencyDtoV1;
306
+ export const UpdateClientParams = Schema.Struct({ "archive-projects": Schema.optionalKey(Schema.Boolean), "mark-tasks-as-done": Schema.optionalKey(Schema.Boolean) });
307
+ export const UpdateClientRequestJson = UpdateClientRequestV1;
308
+ export const UpdateClient200 = ClientDtoV1;
309
+ export const DeleteClient200 = ClientDtoV1;
310
+ export const SetWorkspaceCostRateRequestJson = CostRateRequestV1;
311
+ export const SetWorkspaceCostRate200 = WorkspaceDtoV1;
312
+ export const OfWorkspaceParams = Schema.Struct({ "name": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of custom fields that contain the provided string in their name." })), "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"])), "entity-type": Schema.optionalKey(Schema.String) });
313
+ export const OfWorkspace200 = Schema.Array(CustomFieldDtoV1);
314
+ export const CreateRequestJson = CustomFieldRequestV1;
315
+ export const EditCustomFieldRequestJson = UpdateCustomFieldRequestV1;
316
+ export const EditCustomField200 = CustomFieldDtoV1;
317
+ export const GetCreatedEntityInfoParams = Schema.Struct({ "type": Schema.Array(Schema.String.annotate({ "description": "Specifies the type of document to be retrieved. Expected values are ${changetracker.update.documentation.description}.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types." })).annotate({ "description": "Specifies the type of document to be retrieved. Expected values are ${changetracker.update.documentation.description}.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types." }), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the start date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no start date is provided, the application will set a default start date that matches the end date to create a date range of 30 days. If the end date is not specified either, the default behavior will apply from the current date." })), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the end date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no end date is provided, the application will set a default end date that matches the start date to create a date range of 30 days." })), "page": Schema.optionalKey(Schema.String), "limit": Schema.optionalKey(Schema.String) });
318
+ export const GetCreatedEntityInfo200 = Schema.String;
319
+ export const GetDeletedEntityInfoParams = Schema.Struct({ "type": Schema.Array(Schema.String.annotate({ "description": "Specifies the type of document to be retrieved. Expected values are ${changetracker.update.documentation.description}.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types." })).annotate({ "description": "Specifies the type of document to be retrieved. Expected values are ${changetracker.update.documentation.description}.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types." }), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the start date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no start date is provided, the application will set a default start date that matches the end date to create a date range of 30 days. If the end date is not specified either, the default behavior will apply from the current date." })), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the end date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no end date is provided, the application will set a default end date that matches the start date to create a date range of 30 days." })), "page": Schema.optionalKey(Schema.String), "limit": Schema.optionalKey(Schema.String) });
320
+ export const GetDeletedEntityInfo200 = PageableCollectionLogBinDocumentDto;
321
+ export const GetUpdatedEntityInfoParams = Schema.Struct({ "type": Schema.Array(Schema.String.annotate({ "description": "Specifies the type of document to be retrieved. Expected values are ${changetracker.update.documentation.description}.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types." })).annotate({ "description": "Specifies the type of document to be retrieved. Expected values are ${changetracker.update.documentation.description}.This parameter can accept multiple values, and at least one option must be provided. Based on the input, the application will return results corresponding to the selected document types." }), "start": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the start date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no start date is provided, the application will set a default start date that matches the end date to create a date range of 30 days. If the end date is not specified either, the default behavior will apply from the current date." })), "end": Schema.optionalKey(Schema.String.annotate({ "description": "Represents the end date in yyyy-MM-ddThh:mm:ssZ format. This parameter is optional; if no end date is provided, the application will set a default end date that matches the start date to create a date range of 30 days." })), "page": Schema.optionalKey(Schema.String), "limit": Schema.optionalKey(Schema.String) });
322
+ export const GetUpdatedEntityInfo200 = Schema.String;
323
+ 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) });
324
+ export const GetExpenses200 = ExpensesAndTotalsDtoV1;
325
+ export const CreateExpenseRequestFormData = CreateExpenseV1Request;
326
+ export const CreateExpense201 = ExpenseDtoV1;
327
+ 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." })) });
328
+ export const GetCategories200 = ExpenseCategoriesWithCountDtoV1;
329
+ export const CreateExpenseCategoryRequestJson = ExpenseCategoryV1Request;
330
+ export const CreateExpenseCategory201 = ExpenseCategoryDtoV1;
331
+ export const UpdateCategoryRequestJson = ExpenseCategoryV1Request;
332
+ export const UpdateCategory200 = ExpenseCategoryDtoV1;
333
+ export const UpdateExpenseCategoryStatusRequestJson = ExpenseCategoryArchiveV1Request;
334
+ export const UpdateExpenseCategoryStatus200 = ExpenseCategoryDtoV1;
335
+ export const GetExpense200 = ExpenseDtoV1;
336
+ export const UpdateExpenseRequestFormData = UpdateExpenseV1Request;
337
+ export const UpdateExpense200 = ExpenseDtoV1;
338
+ export const GetHolidaysParams = Schema.Struct({ "assigned-to": Schema.optionalKey(Schema.String.annotate({ "description": "If provided, you'll get a filtered list of holidays assigned to user." })) });
339
+ export const GetHolidays200 = Schema.Array(HolidayDtoV1);
340
+ export const CreateHolidayRequestJson = CreateHolidayRequestV1;
341
+ export const CreateHoliday200 = HolidayDtoV1;
342
+ export const GetHolidaysInPeriodParams = Schema.Struct({ "assigned-to": Schema.String.annotate({ "description": "Filter list of holidays assigned to user." }), "start": Schema.String.annotate({ "description": "Filter list of holidays starting from start date. Expected date format yyyy-MM-ddThh:mm:ssZ" }), "end": Schema.String.annotate({ "description": "Filter list of holidays ending by end date. Expected date format yyyy-MM-ddThh:mm:ssZ" }) });
343
+ export const GetHolidaysInPeriod200 = Schema.Array(HolidayDtoV1);
344
+ export const UpdateHolidayRequestJson = UpdateHolidayRequestV1;
345
+ export const UpdateHoliday200 = HolidayDtoV1;
346
+ export const DeleteHoliday200 = HolidayDto;
347
+ export const SetWorkspaceHourlyRateRequestJson = RateWithCurrencyRequestV1;
348
+ export const SetWorkspaceHourlyRate200 = WorkspaceDtoV1;
349
+ 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"])) });
350
+ export const GetInvoices200 = InvoicesListDtoV1;
351
+ export const CreateInvoiceRequestJson = CreateInvoiceRequest;
352
+ export const CreateInvoice201 = CreateInvoiceDtoV1;
353
+ export const GetInvoicesInfoRequestJson = InvoiceFilterRequestV1;
354
+ export const GetInvoicesInfo200 = InvoiceInfoResponseDtoV1;
355
+ export const GetInvoiceSettings200 = InvoiceSettingsDtoV1;
356
+ export const UpdateInvoiceSettingsRequestJson = UpdateInvoiceSettingsRequestV1;
357
+ export const GetInvoice200 = InvoiceOverviewDtoV1;
358
+ export const UpdateInvoiceRequestJson = UpdateInvoiceRequestV1;
359
+ export const UpdateInvoice200 = InvoiceOverviewDtoV1;
360
+ export const DuplicateInvoice201 = InvoiceOverviewDtoV1;
361
+ export const ExportInvoiceParams = Schema.Struct({ "userLocale": Schema.String.annotate({ "description": "Represents a locale." }) });
362
+ export const AddInvoiceItemRequestJson = CreateInvoiceItemRequestV1;
363
+ export const AddInvoiceItem200 = InvoiceOverviewDtoV1;
364
+ export const ImportTimeEntriesAndExpensesRequestJson = ImportTimeEntriesAndExpensesRequestV1;
365
+ export const ImportTimeEntriesAndExpenses200 = InvoiceOverviewDtoV1;
366
+ export const RemoveInvoiceItem200 = InvoiceOverviewDtoV1;
367
+ 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))) });
368
+ export const GetPaymentsForInvoice200 = Schema.Array(InvoicePaymentDtoV1);
369
+ export const CreateInvoicePaymentRequestJson = CreateInvoicePaymentRequest;
370
+ export const CreateInvoicePayment201 = InvoiceOverviewDtoV1;
371
+ export const DeletePaymentById200 = InvoiceOverviewDtoV1;
372
+ export const ChangeInvoiceStatusRequestJson = ChangeInvoiceStatusRequestV1;
373
+ export const AddLimitedUsersRequestJson = AddLimitedUsersRequest;
374
+ export const GetMemberProfile200 = MemberProfileDtoV1;
375
+ export const UpdateMemberProfileWithAdditionalDataRequestJson = MemberProfileFullRequestV1;
376
+ export const UpdateMemberProfileWithAdditionalData200 = MemberProfileDtoV1;
377
+ 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." })) });
378
+ export const GetProjects200 = Schema.Array(ProjectDtoV1);
379
+ export const CreateNewProjectRequestJson = ProjectRequest;
380
+ export const CreateNewProject201 = ProjectDtoImplV1;
381
+ export const CreateProjectFromTemplateRequestJson = CreateProjectFromTemplateV1;
382
+ export const CreateProjectFromTemplate200 = ProjectDtoImplV1;
383
+ 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." })) });
384
+ export const GetProject200 = ProjectDtoV1;
385
+ export const UpdateProjectRequestJson = UpdateProjectRequest;
386
+ export const UpdateProject200 = ProjectDtoImplV1;
387
+ export const DeleteProject200 = ProjectDtoImplV1;
388
+ export const GetCustomFieldsOfProjectParams = Schema.Struct({ "status": Schema.optionalKey(Schema.Literals(["INACTIVE", "VISIBLE", "INVISIBLE"])), "entity-type": Schema.optionalKey(Schema.String) });
389
+ export const GetCustomFieldsOfProject200 = Schema.Array(CustomFieldDtoV1);
390
+ export const RemoveDefaultValueOfProject200 = CustomFieldDtoV1;
391
+ export const EditProjectCustomFieldDefaultValueRequestJson = CustomFieldProjectDefaultValuesRequest;
392
+ export const EditProjectCustomFieldDefaultValue200 = CustomFieldDtoV1;
393
+ export const UpdateEstimateRequestJson = ProjectEstimateRequest;
394
+ export const UpdateEstimate200 = ProjectDtoImplV1;
395
+ export const AddUsersToProjectRequestJson = AddUsersToProjectRequestV1;
396
+ export const UpdateMembershipsRequestJson = UpdateProjectMembershipsRequest;
397
+ export const UpdateMemberships200 = ProjectDtoImplV1;
398
+ 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"])) });
399
+ export const GetTasks200 = Schema.Array(TaskDtoV1);
400
+ export const CreateTaskParams = Schema.Struct({ "contains-assignee": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether task will have assignee or none." })) });
401
+ export const CreateTaskRequestJson = TaskRequestV1;
402
+ export const CreateTask201 = TaskDtoV1;
403
+ export const SetTaskCostRateRequestJson = CostRateRequestV1;
404
+ export const SetTaskCostRate200 = TaskDtoV1;
405
+ export const SetTaskHourlyRateRequestJson = HourlyRateRequestV1;
406
+ export const SetTaskHourlyRate200 = TaskDtoV1;
407
+ export const GetTask200 = TaskDtoV1;
408
+ export const UpdateTaskParams = Schema.Struct({ "contains-assignee": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Flag to set whether task will have assignee or none." })), "membership-status": Schema.optionalKey(Schema.Literals(["PENDING", "ACTIVE", "DECLINED", "INACTIVE", "ALL"])) });
409
+ export const UpdateTaskRequestJson = UpdateTaskRequest;
410
+ export const UpdateTask200 = TaskDtoV1;
411
+ export const DeleteTask200 = TaskDtoV1;
412
+ export const UpdateIsProjectTemplateRequestJson = PatchProjectTemplateRequest;
413
+ export const UpdateIsProjectTemplate200 = ProjectDtoImplV1;
414
+ export const AddUsersCostRateRequestJson = CostRateRequestV1;
415
+ export const AddUsersCostRate200 = ProjectDtoImplV1;
416
+ export const AddUsersHourlyRateRequestJson = CostRateRequestV1;
417
+ export const AddUsersHourlyRate200 = ProjectDtoImplV1;
418
+ 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))) });
419
+ export const GetAllAssignments200 = Schema.Array(AssignmentHydratedDtoV1);
420
+ 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))) });
421
+ export const GetProjectTotals200 = Schema.Array(SchedulingProjectsTotalsDtoV1);
422
+ export const GetFilteredProjectTotalsRequestJson = ProjectTotalsRequestV1;
423
+ export const GetFilteredProjectTotals200 = Schema.Array(SchedulingProjectsTotalsDtoV1);
424
+ export const GetProjectTotalsForSingleProjectParams = Schema.Struct({ "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." }) });
425
+ export const GetProjectTotalsForSingleProject200 = SchedulingProjectsTotalsDtoV1;
426
+ export const PublishAssignmentsRequestJson = PublishAssignmentsRequestV1;
427
+ export const CreateRecurringRequestJson = AssignmentCreateRequestV1;
428
+ export const CreateRecurring201 = Schema.Array(AssignmentDtoV1);
429
+ export const DeleteRRecurringAssignmentParams = Schema.Struct({ "seriesUpdateOption": Schema.optionalKey(Schema.Literals(["THIS_ONE", "THIS_AND_FOLLOWING", "ALL"])) });
430
+ export const DeleteRRecurringAssignment200 = Schema.Array(AssignmentDtoV1);
431
+ export const EditRecurringRequestJson = AssignmentUpdateRequestV1;
432
+ export const EditRecurring200 = Schema.Array(AssignmentDtoV1);
433
+ export const EditRecurringPeriodRequestJson = RecurringAssignmentRequestV1;
434
+ export const EditRecurringPeriod200 = Schema.Array(AssignmentDtoV1);
435
+ export const GetUserTotalsRequestJson = GetUserTotalsRequestV1;
436
+ export const GetUserTotals200 = Schema.Array(SchedulingUsersTotalsDtoV1);
437
+ 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." }) });
438
+ export const GetUserTotalsForSingleUser200 = SchedulingUsersTotalsDtoV1;
439
+ export const CopyAssignmentRequestJson = CopyAssignmentRequestV1;
440
+ export const CopyAssignment200 = Schema.Array(AssignmentDtoV1);
441
+ 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." })) });
442
+ export const GetTags200 = Schema.Array(TagDtoV1);
443
+ export const CreateNewTagRequestJson = TagRequest;
444
+ export const CreateNewTag201 = TagDtoV1;
445
+ export const GetTag200 = TagDtoV1;
446
+ export const UpdateTagRequestJson = UpdateTagRequest;
447
+ export const UpdateTag200 = TagDtoV1;
448
+ export const DeleteTag200 = TagDtoV1;
449
+ 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())) });
450
+ export const GetTemplates200 = Schema.Array(TemplateDto);
451
+ export const CreateManyRequestJson = Schema.Array(TemplateRequest);
452
+ export const CreateMany200 = Schema.Array(TemplateDtoImpl);
453
+ export const GetTemplateParams = Schema.Struct({ "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." })) });
454
+ export const GetTemplate200 = TemplateDto;
455
+ export const Delete1200 = TemplateDtoImpl;
456
+ export const UpdateRequestJson = TemplatePatchRequest;
457
+ export const Update200 = TemplateDtoImpl;
458
+ export const CreateTimeEntryRequestJson = CreateTimeEntryRequest;
459
+ export const CreateTimeEntry201 = TimeEntryDtoImplV1;
460
+ export const UpdateInvoicedStatusRequestJson = UpdateInvoicedStatusRequest;
461
+ 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))) });
462
+ 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." })) });
463
+ export const GetTimeEntry200 = TimeEntryWithRatesDtoV1;
464
+ export const UpdateTimeEntryRequestJson = UpdateTimeEntryRequest;
465
+ export const UpdateTimeEntry200 = TimeEntryDtoImplV1;
466
+ 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"])) });
467
+ export const UpdateBalanceRequestJson = UpdateBalanceRequestV1;
468
+ 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"])) });
469
+ 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) });
470
+ export const FindPoliciesForWorkspace200 = Schema.Array(PolicyDtoV1);
471
+ export const CreatePolicyRequestJson = CreatePolicyRequestV1;
472
+ export const CreatePolicy201 = PolicyDtoV1;
473
+ export const GetPolicy200 = PolicyDtoV1;
474
+ export const UpdatePolicyRequestJson = UpdatePolicyRequestV1;
475
+ export const UpdatePolicy200 = PolicyDtoV1;
476
+ export const UpdatePolicyStatusRequestJson = ChangePolicyStatusRequestV1;
477
+ export const UpdatePolicyStatus200 = PolicyDtoV1;
478
+ export const CreateTimeOffRequestRequestJson = CreateTimeOffRequestV1Request;
479
+ export const CreateTimeOffRequest200 = TimeOffRequestFullV1Dto;
480
+ export const DeleteTimeOffRequest200 = TimeOffRequestV1Dto;
481
+ export const ChangeTimeOffRequestStatusRequestJson = StatusTimeOffRequestV1Request;
482
+ export const ChangeTimeOffRequestStatus200 = TimeOffRequestV1Dto;
483
+ export const CreateTimeOffRequestForOtherRequestJson = CreateTimeOffRequestV1Request;
484
+ export const CreateTimeOffRequestForOther200 = TimeOffRequestFullV1Dto;
485
+ export const GetTimeOffRequestRequestJson = GetTimeOffRequestsV1Request;
486
+ export const GetTimeOffRequest200 = TimeOffRequestsWithCountV1Dto;
487
+ 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." })) });
488
+ export const GetUserGroups200 = Schema.Array(UserGroupDtoV1);
489
+ export const CreateUserGroupRequestJson = UserGroupRequest;
490
+ export const CreateUserGroup201 = UserGroupDtoV1;
491
+ export const UpdateUserGroupRequestJson = UpdateUserGroupRequest;
492
+ export const UpdateUserGroup200 = UserGroupDtoV1;
493
+ export const DeleteUserGroup200 = UserGroupDtoV1;
494
+ export const AddUserRequestJson = UserGroupUserRequest;
495
+ export const AddUser200 = UserGroupDtoV1;
496
+ export const DeleteUser200 = UserGroupDtoV1;
497
+ 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." })) });
498
+ export const GetTimeEntries200 = Schema.Array(TimeEntryWithRatesDtoV1);
499
+ 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." })) });
500
+ export const ReplaceManyRequestJson = Schema.Array(UpdateTimeEntryBulkRequest).check(Schema.isMinLength(1));
501
+ export const ReplaceMany200 = Schema.Array(TimeEntryDtoV1);
502
+ export const CreateForOthersParams = Schema.Struct({ "from-entry": Schema.optionalKey(Schema.String.annotate({ "description": "Represents a time entry identifier across the system." })) });
503
+ export const CreateForOthersRequestJson = CreateTimeEntryRequest;
504
+ export const CreateForOthers201 = TimeEntryDtoImplV1;
505
+ export const DeleteManyParams = Schema.Struct({ "time-entry-ids": Schema.Array(Schema.String.annotate({ "description": "Represents a list of time entry ids to delete." })).annotate({ "description": "Represents a list of time entry ids to delete." }) });
506
+ export const DeleteMany200 = Schema.Array(TimeEntryDtoImplV1);
507
+ export const StopRunningTimeEntryRequestJson = StopTimeEntryRequest;
508
+ export const StopRunningTimeEntry200 = TimeEntryDtoImplV1;
509
+ export const DuplicateTimeEntry201 = TimeEntryDtoImplV1;
510
+ 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 });
511
+ export const GetUsersOfWorkspace200 = Schema.Array(UserDtoV1);
512
+ export const AddUsersParams = Schema.Struct({ "send-email": Schema.String });
513
+ export const AddUsersRequestJson = AddUserToWorkspaceRequest;
514
+ export const AddUsers200 = WorkspaceDtoV1;
515
+ export const FilterUsersOfWorkspaceRequestJson = GetUsersRequestV1;
516
+ export const FilterUsersOfWorkspace200 = Schema.Array(UserDtoV1);
517
+ export const UpdateUserStatusRequestJson = UpdateUserStatusRequest;
518
+ export const UpdateUserStatus200 = WorkspaceDtoV1;
519
+ export const RemoveMember200 = WorkspaceDtoV1;
520
+ export const SetCostRateForUserRequestJson = CostRateRequestV1;
521
+ export const SetCostRateForUser200 = WorkspaceDtoV1;
522
+ export const UpsertUserCustomFieldValueRequestJson = UpsertUserCustomFieldRequestV1;
523
+ export const UpsertUserCustomFieldValue201 = UserCustomFieldValueDtoV1;
524
+ export const SetHourlyRateForUserRequestJson = HourlyRateRequestV1;
525
+ export const SetHourlyRateForUser200 = WorkspaceDtoV1;
526
+ 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))) });
527
+ export const GetManagersOfUser200 = Schema.Array(UserDtoV1);
528
+ export const CreateUserRoleRequestJson = RoleRequestV1;
529
+ export const CreateUserRole201 = Schema.Array(RoleDetailsDtoV1);
530
+ export const DeleteUserRoleRequestJson = RoleRequestV1;
531
+ export const GetWebhooksParams = Schema.Struct({ "type": Schema.optionalKey(Schema.Literals(["USER_CREATED", "SYSTEM", "ADDON"])) });
532
+ export const GetWebhooks200 = WebhooksDtoV1;
533
+ export const CreateWebhookRequestJson = CreateWebhookRequestV1;
534
+ export const CreateWebhook201 = WebhookDtoV1;
535
+ export const GetWebhook200 = WebhookDtoV1;
536
+ export const UpdateWebhookRequestJson = UpdateWebhookRequestV1;
537
+ export const UpdateWebhook200 = WebhookDtoV1;
538
+ 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))) });
539
+ export const GetLogsForWebhookRequestJson = WebhookLogSearchRequestV1;
540
+ export const GetLogsForWebhook200 = Schema.Array(WebhookLogDtoV1);
541
+ 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"])) });
542
+ export const GetWebhookEventStatusesWithLatestLog200 = Schema.Array(WebhookEventStatusWithLatestLogDtoV1);
543
+ export const GenerateNewToken200 = WebhookDtoV1;
544
+ 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())) });
545
+ export const GenerateAttendanceReportRequestJson = AttendanceReportFilterV1;
546
+ export const GenerateDetailedReportRequestJson = DetailedReportFilterV1;
547
+ export const GenerateDetailedReportV1RequestJson = ExpenseReportFilterV1;
548
+ export const GenerateDetailedReportV1200 = ExpenseDetailedReportDtoV1;
549
+ export const GenerateSummaryReportRequestJson = SummaryReportFilterV1;
550
+ export const GenerateWeeklyReportRequestJson = WeeklyReportFilterV1;
551
+ 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." })) });
552
+ export const SaveSharedReportV1RequestJson = SharedReportRequestV1;
553
+ export const UpdateSharedReportV1RequestJson = UpdateSharedReportRequestV1;
554
+ export const GetAuditLogsRequestJson = AuditLogGetRequestV1;
555
+ export const GetAuditLogs200 = PageableV1ListAuditLogDtoV1;
556
+ export const make = (httpClient, options = {}) => {
557
+ const unexpectedStatus = (response) => Effect.flatMap(Effect.orElseSucceed(response.json, () => "Unexpected status code"), (description) => Effect.fail(new HttpClientError.HttpClientError({
558
+ reason: new HttpClientError.StatusCodeError({
559
+ request: response.request,
560
+ response,
561
+ description: typeof description === "string" ? description : JSON.stringify(description),
562
+ }),
563
+ })));
564
+ const withResponse = (config) => (f) => {
565
+ const withOptionalResponse = (config?.includeResponse
566
+ ? (response) => Effect.map(f(response), (a) => [a, response])
567
+ : (response) => f(response));
568
+ return options?.transformClient
569
+ ? (request) => Effect.flatMap(Effect.flatMap(options.transformClient(httpClient), (client) => client.execute(request)), withOptionalResponse)
570
+ : (request) => Effect.flatMap(httpClient.execute(request), withOptionalResponse);
571
+ };
572
+ const decodeSuccess = (schema) => (response) => HttpClientResponse.schemaBodyJson(schema)(response);
573
+ return {
574
+ httpClient,
575
+ "uploadImage": (options) => HttpClientRequest.post(`/v1/file/image`).pipe(HttpClientRequest.bodyFormDataRecord(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
576
+ "2xx": decodeSuccess(UploadImage200),
577
+ orElse: unexpectedStatus
578
+ }))),
579
+ "getLoggedUser": (options) => HttpClientRequest.get(`/v1/user`).pipe(HttpClientRequest.setUrlParams({ "include-memberships": options?.params?.["include-memberships"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
580
+ "2xx": decodeSuccess(GetLoggedUser200),
581
+ orElse: unexpectedStatus
582
+ }))),
583
+ "getWorkspacesOfUser": (options) => HttpClientRequest.get(`/v1/workspaces`).pipe(HttpClientRequest.setUrlParams({ "roles": options?.params?.["roles"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
584
+ "2xx": decodeSuccess(GetWorkspacesOfUser200),
585
+ orElse: unexpectedStatus
586
+ }))),
587
+ "createWorkspace": (options) => HttpClientRequest.post(`/v1/workspaces`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
588
+ "2xx": decodeSuccess(CreateWorkspace201),
589
+ orElse: unexpectedStatus
590
+ }))),
591
+ "getWorkspaceOfUser": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
592
+ "2xx": decodeSuccess(GetWorkspaceOfUser200),
593
+ orElse: unexpectedStatus
594
+ }))),
595
+ "getAddonWebhooks": (workspaceId, addonId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/addons/${addonId}/webhooks`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
596
+ "2xx": decodeSuccess(GetAddonWebhooks200),
597
+ orElse: unexpectedStatus
598
+ }))),
599
+ "getApprovalRequests": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/approval-requests`).pipe(HttpClientRequest.setUrlParams({ "status": options?.params?.["status"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
600
+ "2xx": decodeSuccess(GetApprovalRequests200),
601
+ orElse: unexpectedStatus
602
+ }))),
603
+ "createApprrovalRequest": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
604
+ "2xx": decodeSuccess(CreateApprrovalRequest201),
605
+ orElse: unexpectedStatus
606
+ }))),
607
+ "resubmitApprovalRequest": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/resubmit-entries-for-approval`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
608
+ orElse: unexpectedStatus
609
+ }))),
610
+ "createApprovalForOther": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/users/${userId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
611
+ "2xx": decodeSuccess(CreateApprovalForOther201),
612
+ orElse: unexpectedStatus
613
+ }))),
614
+ "resubmitApprovalRequestForOther": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/approval-requests/users/${userId}/resubmit-entries-for-approval`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
615
+ orElse: unexpectedStatus
616
+ }))),
617
+ "updateApprovalStatus": (workspaceId, approvalRequestId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/approval-requests/${approvalRequestId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
618
+ "2xx": decodeSuccess(UpdateApprovalStatus200),
619
+ orElse: unexpectedStatus
620
+ }))),
621
+ "getClients": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/clients`).pipe(HttpClientRequest.setUrlParams({ "name": options?.params?.["name"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "archived": options?.params?.["archived"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
622
+ "2xx": decodeSuccess(GetClients200),
623
+ orElse: unexpectedStatus
624
+ }))),
625
+ "createClient": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/clients`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
626
+ "2xx": decodeSuccess(CreateClient201),
627
+ orElse: unexpectedStatus
628
+ }))),
629
+ "getClient": (workspaceId, id, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/clients/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
630
+ "2xx": decodeSuccess(GetClient200),
631
+ orElse: unexpectedStatus
632
+ }))),
633
+ "updateClient": (workspaceId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/clients/${id}`).pipe(HttpClientRequest.setUrlParams({ "archive-projects": options.params?.["archive-projects"], "mark-tasks-as-done": options.params?.["mark-tasks-as-done"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
634
+ "2xx": decodeSuccess(UpdateClient200),
635
+ orElse: unexpectedStatus
636
+ }))),
637
+ "deleteClient": (workspaceId, id, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/clients/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
638
+ "2xx": decodeSuccess(DeleteClient200),
639
+ orElse: unexpectedStatus
640
+ }))),
641
+ "setWorkspaceCostRate": (workspaceId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/cost-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
642
+ "2xx": decodeSuccess(SetWorkspaceCostRate200),
643
+ orElse: unexpectedStatus
644
+ }))),
645
+ "ofWorkspace": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/custom-fields`).pipe(HttpClientRequest.setUrlParams({ "name": options?.params?.["name"], "status": options?.params?.["status"], "entity-type": options?.params?.["entity-type"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
646
+ "2xx": decodeSuccess(OfWorkspace200),
647
+ orElse: unexpectedStatus
648
+ }))),
649
+ "create": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/custom-fields`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
650
+ orElse: unexpectedStatus
651
+ }))),
652
+ "editCustomField": (workspaceId, customFieldId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/custom-fields/${customFieldId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
653
+ "2xx": decodeSuccess(EditCustomField200),
654
+ orElse: unexpectedStatus
655
+ }))),
656
+ "delete": (workspaceId, customFieldId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/custom-fields/${customFieldId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
657
+ "204": () => Effect.void,
658
+ orElse: unexpectedStatus
659
+ }))),
660
+ "getCreatedEntityInfo": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/entities/created`).pipe(HttpClientRequest.setUrlParams({ "type": options.params["type"], "start": options.params["start"], "end": options.params["end"], "page": options.params["page"], "limit": options.params["limit"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
661
+ "2xx": decodeSuccess(GetCreatedEntityInfo200),
662
+ orElse: unexpectedStatus
663
+ }))),
664
+ "getDeletedEntityInfo": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/entities/deleted`).pipe(HttpClientRequest.setUrlParams({ "type": options.params["type"], "start": options.params["start"], "end": options.params["end"], "page": options.params["page"], "limit": options.params["limit"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
665
+ "2xx": decodeSuccess(GetDeletedEntityInfo200),
666
+ orElse: unexpectedStatus
667
+ }))),
668
+ "getUpdatedEntityInfo": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/entities/updated`).pipe(HttpClientRequest.setUrlParams({ "type": options.params["type"], "start": options.params["start"], "end": options.params["end"], "page": options.params["page"], "limit": options.params["limit"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
669
+ "2xx": decodeSuccess(GetUpdatedEntityInfo200),
670
+ orElse: unexpectedStatus
671
+ }))),
672
+ "getExpenses": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/expenses`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "user-id": options?.params?.["user-id"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
673
+ "2xx": decodeSuccess(GetExpenses200),
674
+ orElse: unexpectedStatus
675
+ }))),
676
+ "createExpense": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/expenses`).pipe(HttpClientRequest.bodyFormDataRecord(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
677
+ "2xx": decodeSuccess(CreateExpense201),
678
+ orElse: unexpectedStatus
679
+ }))),
680
+ "getCategories": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/expenses/categories`).pipe(HttpClientRequest.setUrlParams({ "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "archived": options?.params?.["archived"], "name": options?.params?.["name"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
681
+ "2xx": decodeSuccess(GetCategories200),
682
+ orElse: unexpectedStatus
683
+ }))),
684
+ "createExpenseCategory": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/expenses/categories`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
685
+ "2xx": decodeSuccess(CreateExpenseCategory201),
686
+ orElse: unexpectedStatus
687
+ }))),
688
+ "updateCategory": (workspaceId, categoryId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/expenses/categories/${categoryId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
689
+ "2xx": decodeSuccess(UpdateCategory200),
690
+ orElse: unexpectedStatus
691
+ }))),
692
+ "deleteCategory": (workspaceId, categoryId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/expenses/categories/${categoryId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
693
+ "204": () => Effect.void,
694
+ orElse: unexpectedStatus
695
+ }))),
696
+ "updateExpenseCategoryStatus": (workspaceId, categoryId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/expenses/categories/${categoryId}/status`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
697
+ "2xx": decodeSuccess(UpdateExpenseCategoryStatus200),
698
+ orElse: unexpectedStatus
699
+ }))),
700
+ "getExpense": (workspaceId, expenseId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/expenses/${expenseId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
701
+ "2xx": decodeSuccess(GetExpense200),
702
+ orElse: unexpectedStatus
703
+ }))),
704
+ "updateExpense": (workspaceId, expenseId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/expenses/${expenseId}`).pipe(HttpClientRequest.bodyFormDataRecord(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
705
+ "2xx": decodeSuccess(UpdateExpense200),
706
+ orElse: unexpectedStatus
707
+ }))),
708
+ "deleteExpense": (workspaceId, expenseId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/expenses/${expenseId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
709
+ "200": () => Effect.void,
710
+ orElse: unexpectedStatus
711
+ }))),
712
+ "downloadFile": (workspaceId, expenseId, fileId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/expenses/${expenseId}/files/${fileId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
713
+ orElse: unexpectedStatus
714
+ }))),
715
+ "getHolidays": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/holidays`).pipe(HttpClientRequest.setUrlParams({ "assigned-to": options?.params?.["assigned-to"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
716
+ "2xx": decodeSuccess(GetHolidays200),
717
+ orElse: unexpectedStatus
718
+ }))),
719
+ "createHoliday": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/holidays`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
720
+ "2xx": decodeSuccess(CreateHoliday200),
721
+ orElse: unexpectedStatus
722
+ }))),
723
+ "getHolidaysInPeriod": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/holidays/in-period`).pipe(HttpClientRequest.setUrlParams({ "assigned-to": options.params["assigned-to"], "start": options.params["start"], "end": options.params["end"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
724
+ "2xx": decodeSuccess(GetHolidaysInPeriod200),
725
+ orElse: unexpectedStatus
726
+ }))),
727
+ "updateHoliday": (workspaceId, holidayId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/holidays/${holidayId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
728
+ "2xx": decodeSuccess(UpdateHoliday200),
729
+ orElse: unexpectedStatus
730
+ }))),
731
+ "deleteHoliday": (workspaceId, holidayId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/holidays/${holidayId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
732
+ "2xx": decodeSuccess(DeleteHoliday200),
733
+ orElse: unexpectedStatus
734
+ }))),
735
+ "setWorkspaceHourlyRate": (workspaceId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/hourly-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
736
+ "2xx": decodeSuccess(SetWorkspaceHourlyRate200),
737
+ orElse: unexpectedStatus
738
+ }))),
739
+ "getInvoices": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/invoices`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "statuses": options?.params?.["statuses"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
740
+ "2xx": decodeSuccess(GetInvoices200),
741
+ orElse: unexpectedStatus
742
+ }))),
743
+ "createInvoice": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/invoices`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
744
+ "2xx": decodeSuccess(CreateInvoice201),
745
+ orElse: unexpectedStatus
746
+ }))),
747
+ "getInvoicesInfo": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/invoices/info`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
748
+ "2xx": decodeSuccess(GetInvoicesInfo200),
749
+ orElse: unexpectedStatus
750
+ }))),
751
+ "getInvoiceSettings": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/invoices/settings`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
752
+ "2xx": decodeSuccess(GetInvoiceSettings200),
753
+ orElse: unexpectedStatus
754
+ }))),
755
+ "updateInvoiceSettings": (workspaceId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/invoices/settings`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
756
+ "200": () => Effect.void,
757
+ orElse: unexpectedStatus
758
+ }))),
759
+ "getInvoice": (workspaceId, invoiceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
760
+ "2xx": decodeSuccess(GetInvoice200),
761
+ orElse: unexpectedStatus
762
+ }))),
763
+ "updateInvoice": (workspaceId, invoiceId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
764
+ "2xx": decodeSuccess(UpdateInvoice200),
765
+ orElse: unexpectedStatus
766
+ }))),
767
+ "deleteInvoice": (workspaceId, invoiceId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
768
+ "200": () => Effect.void,
769
+ orElse: unexpectedStatus
770
+ }))),
771
+ "duplicateInvoice": (workspaceId, invoiceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/duplicate`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
772
+ "2xx": decodeSuccess(DuplicateInvoice201),
773
+ orElse: unexpectedStatus
774
+ }))),
775
+ "exportInvoice": (workspaceId, invoiceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/export`).pipe(HttpClientRequest.setUrlParams({ "userLocale": options.params["userLocale"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
776
+ orElse: unexpectedStatus
777
+ }))),
778
+ "addInvoiceItem": (workspaceId, invoiceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/items`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
779
+ "2xx": decodeSuccess(AddInvoiceItem200),
780
+ orElse: unexpectedStatus
781
+ }))),
782
+ "importTimeEntriesAndExpenses": (workspaceId, invoiceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/items/import`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
783
+ "2xx": decodeSuccess(ImportTimeEntriesAndExpenses200),
784
+ orElse: unexpectedStatus
785
+ }))),
786
+ "removeInvoiceItem": (workspaceId, invoiceId, order, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/items/${order}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
787
+ "2xx": decodeSuccess(RemoveInvoiceItem200),
788
+ orElse: unexpectedStatus
789
+ }))),
790
+ "getPaymentsForInvoice": (workspaceId, invoiceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/payments`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
791
+ "2xx": decodeSuccess(GetPaymentsForInvoice200),
792
+ orElse: unexpectedStatus
793
+ }))),
794
+ "createInvoicePayment": (workspaceId, invoiceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/payments`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
795
+ "2xx": decodeSuccess(CreateInvoicePayment201),
796
+ orElse: unexpectedStatus
797
+ }))),
798
+ "deletePaymentById": (workspaceId, invoiceId, paymentId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/payments/${paymentId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
799
+ "2xx": decodeSuccess(DeletePaymentById200),
800
+ orElse: unexpectedStatus
801
+ }))),
802
+ "changeInvoiceStatus": (workspaceId, invoiceId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/invoices/${invoiceId}/status`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
803
+ "200": () => Effect.void,
804
+ orElse: unexpectedStatus
805
+ }))),
806
+ "addLimitedUsers": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/limited-users`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
807
+ orElse: unexpectedStatus
808
+ }))),
809
+ "getMemberProfile": (workspaceId, userId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/member-profile/${userId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
810
+ "2xx": decodeSuccess(GetMemberProfile200),
811
+ orElse: unexpectedStatus
812
+ }))),
813
+ "updateMemberProfileWithAdditionalData": (workspaceId, userId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/member-profile/${userId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
814
+ "2xx": decodeSuccess(UpdateMemberProfileWithAdditionalData200),
815
+ orElse: unexpectedStatus
816
+ }))),
817
+ "getProjects": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/projects`).pipe(HttpClientRequest.setUrlParams({ "name": options?.params?.["name"], "strict-name-search": options?.params?.["strict-name-search"], "archived": options?.params?.["archived"], "billable": options?.params?.["billable"], "clients": options?.params?.["clients"], "contains-client": options?.params?.["contains-client"], "client-status": options?.params?.["client-status"], "users": options?.params?.["users"], "contains-user": options?.params?.["contains-user"], "user-status": options?.params?.["user-status"], "is-template": options?.params?.["is-template"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "hydrated": options?.params?.["hydrated"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "access": options?.params?.["access"], "expense-limit": options?.params?.["expense-limit"], "expense-date": options?.params?.["expense-date"], "userGroups": options?.params?.["userGroups"], "contains-group": options?.params?.["contains-group"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
818
+ "2xx": decodeSuccess(GetProjects200),
819
+ orElse: unexpectedStatus
820
+ }))),
821
+ "createNewProject": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/projects`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
822
+ "2xx": decodeSuccess(CreateNewProject201),
823
+ orElse: unexpectedStatus
824
+ }))),
825
+ "createProjectFromTemplate": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/projects/from-template`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
826
+ "2xx": decodeSuccess(CreateProjectFromTemplate200),
827
+ orElse: unexpectedStatus
828
+ }))),
829
+ "getProject": (workspaceId, projectId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/projects/${projectId}`).pipe(HttpClientRequest.setUrlParams({ "hydrated": options?.params?.["hydrated"], "custom-field-entity-type": options?.params?.["custom-field-entity-type"], "expense-limit": options?.params?.["expense-limit"], "expense-date": options?.params?.["expense-date"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
830
+ "2xx": decodeSuccess(GetProject200),
831
+ orElse: unexpectedStatus
832
+ }))),
833
+ "updateProject": (workspaceId, projectId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/projects/${projectId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
834
+ "2xx": decodeSuccess(UpdateProject200),
835
+ orElse: unexpectedStatus
836
+ }))),
837
+ "deleteProject": (workspaceId, projectId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/projects/${projectId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
838
+ "2xx": decodeSuccess(DeleteProject200),
839
+ orElse: unexpectedStatus
840
+ }))),
841
+ "getCustomFieldsOfProject": (workspaceId, projectId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/projects/${projectId}/custom-fields`).pipe(HttpClientRequest.setUrlParams({ "status": options?.params?.["status"], "entity-type": options?.params?.["entity-type"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
842
+ "2xx": decodeSuccess(GetCustomFieldsOfProject200),
843
+ orElse: unexpectedStatus
844
+ }))),
845
+ "removeDefaultValueOfProject": (workspaceId, projectId, customFieldId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/projects/${projectId}/custom-fields/${customFieldId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
846
+ "2xx": decodeSuccess(RemoveDefaultValueOfProject200),
847
+ orElse: unexpectedStatus
848
+ }))),
849
+ "editProjectCustomFieldDefaultValue": (workspaceId, projectId, customFieldId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/projects/${projectId}/custom-fields/${customFieldId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
850
+ "2xx": decodeSuccess(EditProjectCustomFieldDefaultValue200),
851
+ orElse: unexpectedStatus
852
+ }))),
853
+ "updateEstimate": (workspaceId, projectId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/projects/${projectId}/estimate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
854
+ "2xx": decodeSuccess(UpdateEstimate200),
855
+ orElse: unexpectedStatus
856
+ }))),
857
+ "addUsersToProject": (workspaceId, projectId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/projects/${projectId}/memberships`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
858
+ orElse: unexpectedStatus
859
+ }))),
860
+ "updateMemberships": (workspaceId, projectId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/projects/${projectId}/memberships`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
861
+ "2xx": decodeSuccess(UpdateMemberships200),
862
+ orElse: unexpectedStatus
863
+ }))),
864
+ "getTasks": (workspaceId, projectId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks`).pipe(HttpClientRequest.setUrlParams({ "name": options?.params?.["name"], "strict-name-search": options?.params?.["strict-name-search"], "is-active": options?.params?.["is-active"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
865
+ "2xx": decodeSuccess(GetTasks200),
866
+ orElse: unexpectedStatus
867
+ }))),
868
+ "createTask": (workspaceId, projectId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks`).pipe(HttpClientRequest.setUrlParams({ "contains-assignee": options.params?.["contains-assignee"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
869
+ "2xx": decodeSuccess(CreateTask201),
870
+ orElse: unexpectedStatus
871
+ }))),
872
+ "setTaskCostRate": (workspaceId, projectId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks/${id}/cost-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
873
+ "2xx": decodeSuccess(SetTaskCostRate200),
874
+ orElse: unexpectedStatus
875
+ }))),
876
+ "setTaskHourlyRate": (workspaceId, projectId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks/${id}/hourly-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
877
+ "2xx": decodeSuccess(SetTaskHourlyRate200),
878
+ orElse: unexpectedStatus
879
+ }))),
880
+ "getTask": (workspaceId, projectId, taskId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks/${taskId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
881
+ "2xx": decodeSuccess(GetTask200),
882
+ orElse: unexpectedStatus
883
+ }))),
884
+ "updateTask": (workspaceId, projectId, taskId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks/${taskId}`).pipe(HttpClientRequest.setUrlParams({ "contains-assignee": options.params?.["contains-assignee"], "membership-status": options.params?.["membership-status"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
885
+ "2xx": decodeSuccess(UpdateTask200),
886
+ orElse: unexpectedStatus
887
+ }))),
888
+ "deleteTask": (workspaceId, projectId, taskId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/projects/${projectId}/tasks/${taskId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
889
+ "2xx": decodeSuccess(DeleteTask200),
890
+ orElse: unexpectedStatus
891
+ }))),
892
+ "updateIsProjectTemplate": (workspaceId, projectId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/projects/${projectId}/template`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
893
+ "2xx": decodeSuccess(UpdateIsProjectTemplate200),
894
+ orElse: unexpectedStatus
895
+ }))),
896
+ "addUsersCostRate": (workspaceId, projectId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/projects/${projectId}/users/${userId}/cost-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
897
+ "2xx": decodeSuccess(AddUsersCostRate200),
898
+ orElse: unexpectedStatus
899
+ }))),
900
+ "addUsersHourlyRate": (workspaceId, projectId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/projects/${projectId}/users/${userId}/hourly-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
901
+ "2xx": decodeSuccess(AddUsersHourlyRate200),
902
+ orElse: unexpectedStatus
903
+ }))),
904
+ "getAllAssignments": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/scheduling/assignments/all`).pipe(HttpClientRequest.setUrlParams({ "name": options.params["name"], "start": options.params["start"], "end": options.params["end"], "sort-column": options.params["sort-column"], "sort-order": options.params["sort-order"], "page": options.params["page"], "page-size": options.params["page-size"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
905
+ "2xx": decodeSuccess(GetAllAssignments200),
906
+ orElse: unexpectedStatus
907
+ }))),
908
+ "getProjectTotals": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/scheduling/assignments/projects/totals`).pipe(HttpClientRequest.setUrlParams({ "search": options.params["search"], "start": options.params["start"], "end": options.params["end"], "page": options.params["page"], "page-size": options.params["page-size"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
909
+ "2xx": decodeSuccess(GetProjectTotals200),
910
+ orElse: unexpectedStatus
911
+ }))),
912
+ "getFilteredProjectTotals": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/scheduling/assignments/projects/totals`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
913
+ "2xx": decodeSuccess(GetFilteredProjectTotals200),
914
+ orElse: unexpectedStatus
915
+ }))),
916
+ "getProjectTotalsForSingleProject": (workspaceId, projectId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/scheduling/assignments/projects/totals/${projectId}`).pipe(HttpClientRequest.setUrlParams({ "start": options.params["start"], "end": options.params["end"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
917
+ "2xx": decodeSuccess(GetProjectTotalsForSingleProject200),
918
+ orElse: unexpectedStatus
919
+ }))),
920
+ "publishAssignments": (workspaceId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/scheduling/assignments/publish`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
921
+ "200": () => Effect.void,
922
+ orElse: unexpectedStatus
923
+ }))),
924
+ "createRecurring": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/scheduling/assignments/recurring`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
925
+ "2xx": decodeSuccess(CreateRecurring201),
926
+ orElse: unexpectedStatus
927
+ }))),
928
+ "deleteRRecurringAssignment": (workspaceId, assignmentId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/scheduling/assignments/recurring/${assignmentId}`).pipe(HttpClientRequest.setUrlParams({ "seriesUpdateOption": options?.params?.["seriesUpdateOption"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
929
+ "2xx": decodeSuccess(DeleteRRecurringAssignment200),
930
+ orElse: unexpectedStatus
931
+ }))),
932
+ "editRecurring": (workspaceId, assignmentId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/scheduling/assignments/recurring/${assignmentId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
933
+ "2xx": decodeSuccess(EditRecurring200),
934
+ orElse: unexpectedStatus
935
+ }))),
936
+ "editRecurringPeriod": (workspaceId, assignmentId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/scheduling/assignments/series/${assignmentId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
937
+ "2xx": decodeSuccess(EditRecurringPeriod200),
938
+ orElse: unexpectedStatus
939
+ }))),
940
+ "getUserTotals": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/scheduling/assignments/user-filter/totals`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
941
+ "2xx": decodeSuccess(GetUserTotals200),
942
+ orElse: unexpectedStatus
943
+ }))),
944
+ "getUserTotalsForSingleUser": (workspaceId, userId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/scheduling/assignments/users/${userId}/totals`).pipe(HttpClientRequest.setUrlParams({ "page": options.params["page"], "page-size": options.params["page-size"], "start": options.params["start"], "end": options.params["end"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
945
+ "2xx": decodeSuccess(GetUserTotalsForSingleUser200),
946
+ orElse: unexpectedStatus
947
+ }))),
948
+ "copyAssignment": (workspaceId, assignmentId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/scheduling/assignments/${assignmentId}/copy`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
949
+ "2xx": decodeSuccess(CopyAssignment200),
950
+ orElse: unexpectedStatus
951
+ }))),
952
+ "getTags": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/tags`).pipe(HttpClientRequest.setUrlParams({ "name": options?.params?.["name"], "strict-name-search": options?.params?.["strict-name-search"], "excluded-ids": options?.params?.["excluded-ids"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "archived": options?.params?.["archived"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
953
+ "2xx": decodeSuccess(GetTags200),
954
+ orElse: unexpectedStatus
955
+ }))),
956
+ "createNewTag": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/tags`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
957
+ "2xx": decodeSuccess(CreateNewTag201),
958
+ orElse: unexpectedStatus
959
+ }))),
960
+ "getTag": (workspaceId, id, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/tags/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
961
+ "2xx": decodeSuccess(GetTag200),
962
+ orElse: unexpectedStatus
963
+ }))),
964
+ "updateTag": (workspaceId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/tags/${id}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
965
+ "2xx": decodeSuccess(UpdateTag200),
966
+ orElse: unexpectedStatus
967
+ }))),
968
+ "deleteTag": (workspaceId, id, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/tags/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
969
+ "2xx": decodeSuccess(DeleteTag200),
970
+ orElse: unexpectedStatus
971
+ }))),
972
+ "getTemplates": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/templates`).pipe(HttpClientRequest.setUrlParams({ "name": options?.params?.["name"], "cleansed": options?.params?.["cleansed"], "hydrated": options?.params?.["hydrated"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
973
+ "2xx": decodeSuccess(GetTemplates200),
974
+ orElse: unexpectedStatus
975
+ }))),
976
+ "createMany": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/templates`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
977
+ "2xx": decodeSuccess(CreateMany200),
978
+ orElse: unexpectedStatus
979
+ }))),
980
+ "getTemplate": (workspaceId, templateId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/templates/${templateId}`).pipe(HttpClientRequest.setUrlParams({ "cleansed": options?.params?.["cleansed"], "hydrated": options?.params?.["hydrated"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
981
+ "2xx": decodeSuccess(GetTemplate200),
982
+ orElse: unexpectedStatus
983
+ }))),
984
+ "delete1": (workspaceId, templateId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/templates/${templateId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
985
+ "2xx": decodeSuccess(Delete1200),
986
+ orElse: unexpectedStatus
987
+ }))),
988
+ "update": (workspaceId, templateId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/templates/${templateId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
989
+ "2xx": decodeSuccess(Update200),
990
+ orElse: unexpectedStatus
991
+ }))),
992
+ "createTimeEntry": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-entries`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
993
+ "2xx": decodeSuccess(CreateTimeEntry201),
994
+ orElse: unexpectedStatus
995
+ }))),
996
+ "updateInvoicedStatus": (workspaceId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/time-entries/invoiced`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
997
+ "200": () => Effect.void,
998
+ orElse: unexpectedStatus
999
+ }))),
1000
+ "getInProgressTimeEntries": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/time-entries/status/in-progress`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1001
+ orElse: unexpectedStatus
1002
+ }))),
1003
+ "getTimeEntry": (workspaceId, id, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/time-entries/${id}`).pipe(HttpClientRequest.setUrlParams({ "hydrated": options?.params?.["hydrated"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1004
+ "2xx": decodeSuccess(GetTimeEntry200),
1005
+ orElse: unexpectedStatus
1006
+ }))),
1007
+ "updateTimeEntry": (workspaceId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/time-entries/${id}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1008
+ "2xx": decodeSuccess(UpdateTimeEntry200),
1009
+ orElse: unexpectedStatus
1010
+ }))),
1011
+ "deleteTimeEntry": (workspaceId, id, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/time-entries/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1012
+ "204": () => Effect.void,
1013
+ orElse: unexpectedStatus
1014
+ }))),
1015
+ "getBalancesForPolicy": (workspaceId, policyId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/time-off/balance/policy/${policyId}`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "sort": options?.params?.["sort"], "sort-order": options?.params?.["sort-order"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1016
+ orElse: unexpectedStatus
1017
+ }))),
1018
+ "updateBalance": (workspaceId, policyId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/time-off/balance/policy/${policyId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1019
+ "204": () => Effect.void,
1020
+ orElse: unexpectedStatus
1021
+ }))),
1022
+ "getBalancesForUser": (workspaceId, userId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/time-off/balance/user/${userId}`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "sort": options?.params?.["sort"], "sort-order": options?.params?.["sort-order"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1023
+ orElse: unexpectedStatus
1024
+ }))),
1025
+ "findPoliciesForWorkspace": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/time-off/policies`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "name": options?.params?.["name"], "status": options?.params?.["status"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1026
+ "2xx": decodeSuccess(FindPoliciesForWorkspace200),
1027
+ orElse: unexpectedStatus
1028
+ }))),
1029
+ "createPolicy": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-off/policies`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1030
+ "2xx": decodeSuccess(CreatePolicy201),
1031
+ orElse: unexpectedStatus
1032
+ }))),
1033
+ "getPolicy": (workspaceId, id, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/time-off/policies/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1034
+ "2xx": decodeSuccess(GetPolicy200),
1035
+ orElse: unexpectedStatus
1036
+ }))),
1037
+ "updatePolicy": (workspaceId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/time-off/policies/${id}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1038
+ "2xx": decodeSuccess(UpdatePolicy200),
1039
+ orElse: unexpectedStatus
1040
+ }))),
1041
+ "deletePolicy": (workspaceId, id, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/time-off/policies/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1042
+ "200": () => Effect.void,
1043
+ orElse: unexpectedStatus
1044
+ }))),
1045
+ "updatePolicyStatus": (workspaceId, id, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/time-off/policies/${id}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1046
+ "2xx": decodeSuccess(UpdatePolicyStatus200),
1047
+ orElse: unexpectedStatus
1048
+ }))),
1049
+ "createTimeOffRequest": (workspaceId, policyId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/requests`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1050
+ "2xx": decodeSuccess(CreateTimeOffRequest200),
1051
+ orElse: unexpectedStatus
1052
+ }))),
1053
+ "deleteTimeOffRequest": (workspaceId, policyId, requestId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/requests/${requestId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1054
+ "2xx": decodeSuccess(DeleteTimeOffRequest200),
1055
+ orElse: unexpectedStatus
1056
+ }))),
1057
+ "changeTimeOffRequestStatus": (workspaceId, policyId, requestId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/requests/${requestId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1058
+ "2xx": decodeSuccess(ChangeTimeOffRequestStatus200),
1059
+ orElse: unexpectedStatus
1060
+ }))),
1061
+ "createTimeOffRequestForOther": (workspaceId, policyId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-off/policies/${policyId}/users/${userId}/requests`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1062
+ "2xx": decodeSuccess(CreateTimeOffRequestForOther200),
1063
+ orElse: unexpectedStatus
1064
+ }))),
1065
+ "getTimeOffRequest": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/time-off/requests`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1066
+ "2xx": decodeSuccess(GetTimeOffRequest200),
1067
+ orElse: unexpectedStatus
1068
+ }))),
1069
+ "getUserGroups": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/user-groups`).pipe(HttpClientRequest.setUrlParams({ "project-id": options?.params?.["project-id"], "name": options?.params?.["name"], "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "includeTeamManagers": options?.params?.["includeTeamManagers"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1070
+ "2xx": decodeSuccess(GetUserGroups200),
1071
+ orElse: unexpectedStatus
1072
+ }))),
1073
+ "createUserGroup": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/user-groups`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1074
+ "2xx": decodeSuccess(CreateUserGroup201),
1075
+ orElse: unexpectedStatus
1076
+ }))),
1077
+ "updateUserGroup": (workspaceId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/user-groups/${id}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1078
+ "2xx": decodeSuccess(UpdateUserGroup200),
1079
+ orElse: unexpectedStatus
1080
+ }))),
1081
+ "deleteUserGroup": (workspaceId, id, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/user-groups/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1082
+ "2xx": decodeSuccess(DeleteUserGroup200),
1083
+ orElse: unexpectedStatus
1084
+ }))),
1085
+ "addUser": (workspaceId, userGroupId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/user-groups/${userGroupId}/users`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1086
+ "2xx": decodeSuccess(AddUser200),
1087
+ orElse: unexpectedStatus
1088
+ }))),
1089
+ "deleteUser": (workspaceId, userGroupId, userId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/user-groups/${userGroupId}/users/${userId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1090
+ "2xx": decodeSuccess(DeleteUser200),
1091
+ orElse: unexpectedStatus
1092
+ }))),
1093
+ "getTimeEntries": (workspaceId, userId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(HttpClientRequest.setUrlParams({ "description": options?.params?.["description"], "start": options?.params?.["start"], "end": options?.params?.["end"], "project": options?.params?.["project"], "task": options?.params?.["task"], "tags": options?.params?.["tags"], "project-required": options?.params?.["project-required"], "task-required": options?.params?.["task-required"], "hydrated": options?.params?.["hydrated"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"], "in-progress": options?.params?.["in-progress"], "get-week-before": options?.params?.["get-week-before"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1094
+ "2xx": decodeSuccess(GetTimeEntries200),
1095
+ orElse: unexpectedStatus
1096
+ }))),
1097
+ "replaceMany": (workspaceId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(HttpClientRequest.setUrlParams({ "hydrated": options.params?.["hydrated"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1098
+ "2xx": decodeSuccess(ReplaceMany200),
1099
+ orElse: unexpectedStatus
1100
+ }))),
1101
+ "createForOthers": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(HttpClientRequest.setUrlParams({ "from-entry": options.params?.["from-entry"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1102
+ "2xx": decodeSuccess(CreateForOthers201),
1103
+ orElse: unexpectedStatus
1104
+ }))),
1105
+ "deleteMany": (workspaceId, userId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(HttpClientRequest.setUrlParams({ "time-entry-ids": options.params["time-entry-ids"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
1106
+ "2xx": decodeSuccess(DeleteMany200),
1107
+ orElse: unexpectedStatus
1108
+ }))),
1109
+ "stopRunningTimeEntry": (workspaceId, userId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1110
+ "2xx": decodeSuccess(StopRunningTimeEntry200),
1111
+ orElse: unexpectedStatus
1112
+ }))),
1113
+ "duplicateTimeEntry": (workspaceId, userId, id, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/user/${userId}/time-entries/${id}/duplicate`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1114
+ "2xx": decodeSuccess(DuplicateTimeEntry201),
1115
+ orElse: unexpectedStatus
1116
+ }))),
1117
+ "getUsersOfWorkspace": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/users`).pipe(HttpClientRequest.setUrlParams({ "email": options.params["email"], "project-id": options.params["project-id"], "status": options.params["status"], "account-statuses": options.params["account-statuses"], "name": options.params["name"], "sort-column": options.params["sort-column"], "sort-order": options.params["sort-order"], "page": options.params["page"], "page-size": options.params["page-size"], "memberships": options.params["memberships"], "include-roles": options.params["include-roles"] }), withResponse(options.config)(HttpClientResponse.matchStatus({
1118
+ "2xx": decodeSuccess(GetUsersOfWorkspace200),
1119
+ orElse: unexpectedStatus
1120
+ }))),
1121
+ "addUsers": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/users`).pipe(HttpClientRequest.setUrlParams({ "send-email": options.params["send-email"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1122
+ "2xx": decodeSuccess(AddUsers200),
1123
+ orElse: unexpectedStatus
1124
+ }))),
1125
+ "filterUsersOfWorkspace": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/users/info`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1126
+ "2xx": decodeSuccess(FilterUsersOfWorkspace200),
1127
+ orElse: unexpectedStatus
1128
+ }))),
1129
+ "updateUserStatus": (workspaceId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/users/${userId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1130
+ "2xx": decodeSuccess(UpdateUserStatus200),
1131
+ orElse: unexpectedStatus
1132
+ }))),
1133
+ "removeMember": (workspaceId, userId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/users/${userId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1134
+ "2xx": decodeSuccess(RemoveMember200),
1135
+ orElse: unexpectedStatus
1136
+ }))),
1137
+ "setCostRateForUser": (workspaceId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/users/${userId}/cost-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1138
+ "2xx": decodeSuccess(SetCostRateForUser200),
1139
+ orElse: unexpectedStatus
1140
+ }))),
1141
+ "upsertUserCustomFieldValue": (workspaceId, userId, customFieldId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/users/${userId}/custom-field/${customFieldId}/value`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1142
+ "2xx": decodeSuccess(UpsertUserCustomFieldValue201),
1143
+ orElse: unexpectedStatus
1144
+ }))),
1145
+ "setHourlyRateForUser": (workspaceId, userId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/users/${userId}/hourly-rate`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1146
+ "2xx": decodeSuccess(SetHourlyRateForUser200),
1147
+ orElse: unexpectedStatus
1148
+ }))),
1149
+ "getManagersOfUser": (workspaceId, userId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/users/${userId}/managers`).pipe(HttpClientRequest.setUrlParams({ "sort-column": options?.params?.["sort-column"], "sort-order": options?.params?.["sort-order"], "page": options?.params?.["page"], "page-size": options?.params?.["page-size"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1150
+ "2xx": decodeSuccess(GetManagersOfUser200),
1151
+ orElse: unexpectedStatus
1152
+ }))),
1153
+ "createUserRole": (workspaceId, userId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/users/${userId}/roles`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1154
+ "2xx": decodeSuccess(CreateUserRole201),
1155
+ orElse: unexpectedStatus
1156
+ }))),
1157
+ "deleteUserRole": (workspaceId, userId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/users/${userId}/roles`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1158
+ "204": () => Effect.void,
1159
+ orElse: unexpectedStatus
1160
+ }))),
1161
+ "getWebhooks": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/webhooks`).pipe(HttpClientRequest.setUrlParams({ "type": options?.params?.["type"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1162
+ "2xx": decodeSuccess(GetWebhooks200),
1163
+ orElse: unexpectedStatus
1164
+ }))),
1165
+ "createWebhook": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/webhooks`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1166
+ "2xx": decodeSuccess(CreateWebhook201),
1167
+ orElse: unexpectedStatus
1168
+ }))),
1169
+ "getWebhook": (workspaceId, webhookId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/webhooks/${webhookId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1170
+ "2xx": decodeSuccess(GetWebhook200),
1171
+ orElse: unexpectedStatus
1172
+ }))),
1173
+ "updateWebhook": (workspaceId, webhookId, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/webhooks/${webhookId}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1174
+ "2xx": decodeSuccess(UpdateWebhook200),
1175
+ orElse: unexpectedStatus
1176
+ }))),
1177
+ "deleteWebhook": (workspaceId, webhookId, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/webhooks/${webhookId}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1178
+ "200": () => Effect.void,
1179
+ orElse: unexpectedStatus
1180
+ }))),
1181
+ "getLogsForWebhook": (workspaceId, webhookId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/webhooks/${webhookId}/logs`).pipe(HttpClientRequest.setUrlParams({ "page": options.params?.["page"], "size": options.params?.["size"] }), HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1182
+ "2xx": decodeSuccess(GetLogsForWebhook200),
1183
+ orElse: unexpectedStatus
1184
+ }))),
1185
+ "getWebhookEventStatusesWithLatestLog": (workspaceId, webhookId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/webhooks/${webhookId}/statuses`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "size": options?.params?.["size"], "statuses": options?.params?.["statuses"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1186
+ "2xx": decodeSuccess(GetWebhookEventStatusesWithLatestLog200),
1187
+ orElse: unexpectedStatus
1188
+ }))),
1189
+ "generateNewToken": (workspaceId, webhookId, options) => HttpClientRequest.patch(`/v1/workspaces/${workspaceId}/webhooks/${webhookId}/token`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1190
+ "2xx": decodeSuccess(GenerateNewToken200),
1191
+ orElse: unexpectedStatus
1192
+ }))),
1193
+ "generateSharedReportV1": (id, options) => HttpClientRequest.get(`/v1/shared-reports/${id}`).pipe(HttpClientRequest.setUrlParams({ "dateRangeStart": options?.params?.["dateRangeStart"], "dateRangeEnd": options?.params?.["dateRangeEnd"], "sortOrder": options?.params?.["sortOrder"], "sortColumn": options?.params?.["sortColumn"], "exportType": options?.params?.["exportType"], "page": options?.params?.["page"], "pageSize": options?.params?.["pageSize"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1194
+ orElse: unexpectedStatus
1195
+ }))),
1196
+ "generateAttendanceReport": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/reports/attendance`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1197
+ orElse: unexpectedStatus
1198
+ }))),
1199
+ "generateDetailedReport": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/reports/detailed`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1200
+ orElse: unexpectedStatus
1201
+ }))),
1202
+ "generateDetailedReportV1": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/reports/expenses/detailed`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1203
+ "2xx": decodeSuccess(GenerateDetailedReportV1200),
1204
+ orElse: unexpectedStatus
1205
+ }))),
1206
+ "generateSummaryReport": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/reports/summary`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1207
+ orElse: unexpectedStatus
1208
+ }))),
1209
+ "generateWeeklyReport": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/reports/weekly`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1210
+ orElse: unexpectedStatus
1211
+ }))),
1212
+ "getSharedReportsV1": (workspaceId, options) => HttpClientRequest.get(`/v1/workspaces/${workspaceId}/shared-reports`).pipe(HttpClientRequest.setUrlParams({ "page": options?.params?.["page"], "pageSize": options?.params?.["pageSize"], "sharedReportsFilter": options?.params?.["sharedReportsFilter"] }), withResponse(options?.config)(HttpClientResponse.matchStatus({
1213
+ orElse: unexpectedStatus
1214
+ }))),
1215
+ "saveSharedReportV1": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/shared-reports`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1216
+ orElse: unexpectedStatus
1217
+ }))),
1218
+ "updateSharedReportV1": (workspaceId, id, options) => HttpClientRequest.put(`/v1/workspaces/${workspaceId}/shared-reports/${id}`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1219
+ orElse: unexpectedStatus
1220
+ }))),
1221
+ "deleteSharedReportV1": (workspaceId, id, options) => HttpClientRequest.delete(`/v1/workspaces/${workspaceId}/shared-reports/${id}`).pipe(withResponse(options?.config)(HttpClientResponse.matchStatus({
1222
+ "204": () => Effect.void,
1223
+ orElse: unexpectedStatus
1224
+ }))),
1225
+ "getAuditLogs": (workspaceId, options) => HttpClientRequest.post(`/v1/workspaces/${workspaceId}/audit-log`).pipe(HttpClientRequest.bodyJsonUnsafe(options.payload), withResponse(options.config)(HttpClientResponse.matchStatus({
1226
+ "2xx": decodeSuccess(GetAuditLogs200),
1227
+ orElse: unexpectedStatus
1228
+ })))
1229
+ };
1230
+ };
1231
+ class ClockifyApiErrorImpl extends Data.Error {
1232
+ }
1233
+ export const ClockifyApiError = (tag, cause, response) => new ClockifyApiErrorImpl({
1234
+ _tag: tag,
1235
+ cause,
1236
+ response,
1237
+ request: response.request,
1238
+ });
1239
+ //# sourceMappingURL=ClockifyApi.js.map