openapi: 3.2.0 info: description: '## Introduction By using this REST API, you can easily integrate Clockify with your own add-ons, push and pull data between Clockify and other tools, and create custom add-ons on CAKE.com Marketplace.' title: Clockify Shared Report API version: v1 x-logo: altText: Clockify logo url: https://clockify.me/downloads/clockify_logo_primary_black_margin.png tags: - name: Shared Report x-displayName: Shared Report paths: /v1/shared-reports/{id}: servers: - url: https://reports.api.clockify.me get: description: 'Response depends on report type and export type. Given example is for SUMMARY report and JSON exportType. Shared report data on FREE subscription plan is limited to a maximum interval length of one month (31 days).' operationId: generateSharedReportV1 parameters: - in: query name: dateRangeStart schema: type: string 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) example: '2018-11-01T00:00:00' - in: query name: dateRangeEnd schema: type: string 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) example: '2018-11-30T23:59:59.999' - in: query name: sortOrder schema: type: string description: Sort result in ascending or descending order example: ASCENDING - in: query name: sortColumn schema: type: string description: If provided, you'll get result sorted by sort column. - in: query name: exportType schema: type: string description: Represents an export type of shared report example: JSON - in: query name: page schema: type: integer format: int32 example: 1 - in: query name: pageSize schema: type: integer format: int32 example: 20 - in: path name: id required: true schema: type: string description: Represents a shared report identifier across the system. example: 61794f784363c45af78e5555 responses: '200': content: '*/*': schema: $ref: '#/components/schemas/TimeEntrySummaryReportDto' description: OK summary: Generate shared report by ID tags: - Shared Report security: - ApiKeyAuth: [] - AddonKeyAuth: [] /v1/workspaces/{workspaceId}/shared-reports: servers: - url: https://reports.api.clockify.me get: description: Gets all shared reports for current user on given workspace operationId: getSharedReportsV1 parameters: - in: path name: workspaceId required: true schema: type: string description: Represents a workspace identifier across the system. example: 60f91b3ffdaf031696ecxxxx - in: query name: page schema: type: integer format: int32 default: 1 description: Page number. example: 2 - in: query name: pageSize schema: type: integer format: int32 default: 50 description: Page size. example: 20 minimum: 1 - in: query name: sharedReportsFilter schema: type: string default: ALL description: Filters shared reports by origin. enum: - ALL - CREATED_BY_ME - SHARED_WITH_ME example: CREATED_BY_ME responses: '200': content: '*/*': schema: $ref: '#/components/schemas/SharedReportsAndCountDtoV1' description: OK summary: Get all my shared reports tags: - Shared Report security: - ApiKeyAuth: [] - AddonKeyAuth: [] post: description: 'Saves shared report with name, options and report filter. Shared report data on FREE subscription plan is limited to a maximum interval length of one month (31 days).' operationId: saveSharedReportV1 parameters: - in: path name: workspaceId required: true schema: type: string description: Represents a workspace identifier across the system. example: 60f91b3ffdaf031696ecxxxx requestBody: content: application/json: schema: $ref: '#/components/schemas/SharedReportRequestV1' required: true responses: '200': content: '*/*': schema: $ref: '#/components/schemas/SharedReportV1' description: OK summary: Create a shared report tags: - Shared Report security: - ApiKeyAuth: [] - AddonKeyAuth: [] /v1/workspaces/{workspaceId}/shared-reports/{id}: servers: - url: https://reports.api.clockify.me delete: operationId: deleteSharedReportV1 parameters: - in: path name: id required: true schema: type: string description: Represents a shared report identifier across the system. example: 61794f784363c45af78e5555 - in: path name: workspaceId required: true schema: type: string description: Represents a workspace identifier across the system. example: 60f91b3ffdaf031696ecxxxx responses: '204': description: Success summary: Delete a shared report tags: - Shared Report security: - ApiKeyAuth: [] - AddonKeyAuth: [] put: description: Updates shared report name and/or options operationId: updateSharedReportV1 parameters: - in: path name: workspaceId required: true schema: type: string description: Represents a workspace identifier across the system. example: 60f91b3ffdaf031696ecxxxx - in: path name: id required: true schema: type: string description: Represents a shared report identifier across the system. example: 61794f784363c45af78e5555 requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateSharedReportRequestV1' required: true responses: '200': content: '*/*': schema: $ref: '#/components/schemas/SharedReportV1' description: OK summary: Update a shared report tags: - Shared Report security: - ApiKeyAuth: [] - AddonKeyAuth: [] components: schemas: CompareEndFilter: type: object properties: filtrationType: type: string enum: - EXACTLY - LARGER_THAN - SMALLER_THAN value: type: string description: Represents end time in 24-hour notation. example: '17:00' WeeklyFilterV1: type: object description: Represents a weekly report filter. properties: group: type: string description: Weekly filter will include group identifier. example: 5b715448b079875110791111 subgroup: type: string description: Weekly filter will include subgroup identifier. example: 5b715448b079875110792222 CompareStartFilter: type: object properties: filtrationType: type: string enum: - EXACTLY - LARGER_THAN - SMALLER_THAN value: type: string description: Represents start time in 24-hour notation. example: '15:00' AuditFilterV1: type: object properties: duration: type: integer format: int32 description: Represent audit duration. example: 2 durationShorter: type: boolean description: Represent audit duration shorter. example: false withoutProject: type: boolean description: Indicates whether to filter without a project. example: false withoutTask: type: boolean description: Indicates whether to filter without a task. example: true SummaryReportChartDto: type: object description: List of summary report charts properties: earned: type: number description: Represents how much is earned example: 1000 id: type: string description: Represents summary report identifier across the system. example: 5b715612b079875110791111 totalAmount: type: number description: Represents total amount example: 11000 totalBillableTime: type: number description: Represents total billable time example: 19000 totalTime: type: number description: Represents total time example: 20000 CompareOvertimeFilter: type: object properties: filtrationType: type: string enum: - EXACTLY - LARGER_THAN - SMALLER_THAN value: type: string description: Represents duration of overtime work (difference between work and capacity) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150. example: '150' SummaryFilterV1: type: object description: Represents a summary report filter. properties: groups: type: array description: Represents group ids example: '"[5b715448b07987511071111", "5b715448b079875110792222"]' items: type: string description: Represents group ids example: '"[5b715448b07987511071111", "5b715448b079875110792222"]' sortColumn: type: string description: If provided, you'll get sorted result by provided sort column. enum: - GROUP - DURATION - AMOUNT - EARNED - COST - PROFIT example: GROUP summaryChartType: type: string description: If provided, you'll get sorted result by provided summary chart type. enum: - BILLABILITY - PROJECT example: PROJECT ContainsTaskFilterV1: type: object description: Represents filter criteria for expenses associated with tasks. properties: contains: type: string description: Represents a contains type. enum: - CONTAINS - DOES_NOT_CONTAIN - CONTAINS_ONLY example: CONTAINS ids: type: array description: Filter includes provided list of ids. example: - 5b715448b079875110792222 - 5b715448b079875110791111 items: type: string description: Filter includes provided list of ids. example: '["5b715448b079875110792222","5b715448b079875110791111"]' uniqueItems: true status: type: string description: Filter entities in 'contains' by their status. enum: - ACTIVE - ARCHIVED - ALL example: ACTIVE UpdateSharedReportRequestV1: type: object properties: fixedDate: type: boolean description: Indicates whether the shared report has a fixed date range. example: false isPublic: type: boolean description: Indicates whether the shared report is public. example: false name: type: string description: Represents a shared reports name. example: Weekly Updated Report visibleToUserGroups: type: array description: Provide user groups ids to which the shared report is visible. example: '"[5b715448b079875110792222", "5b715448b079875110791111"]' items: type: string description: Provide user groups ids to which the shared report is visible. example: '"[5b715448b079875110792222", "5b715448b079875110791111"]' uniqueItems: true visibleToUsers: type: array description: Provide user ids to which the shared report is visible. example: - 5b715448b079875110791234 - 5b715448b079875110791432 - 5b715448b079875110791324 items: type: string description: Provide user ids to which the shared report is visible. example: '["5b715448b079875110791234","5b715448b079875110791432","5b715448b079875110791324"]' uniqueItems: true required: - name ReportFilterV1: type: object properties: amountShown: type: string description: If provided, you'll get filtered result including reports with provided amount shown. enum: - EARNED - COST - PROFIT - HIDE_AMOUNT - EXPORT example: COST amounts: type: array items: type: string enum: - EARNED - COST - PROFIT - HIDE_AMOUNT - EXPORT example: '[EARNED, COST]' approvalState: type: string description: If provided, you'll get filtered result including reports with provided approval state. enum: - APPROVED - UNAPPROVED - ALL example: APPROVED archived: type: boolean description: Indicates whether the report is archived example: false attendanceFilter: $ref: '#/components/schemas/AttendanceFilterV1' billable: type: boolean description: Indicates whether the report is billable example: true clients: $ref: '#/components/schemas/ContainsArchivedFilterV1' currency: $ref: '#/components/schemas/ContainsArchivedFilterV1' customFields: type: array items: $ref: '#/components/schemas/CustomFieldFilterV1' dateFormat: type: string description: Provide date in format YYYY-MM-DD example: '2018-11-01' dateRangeEnd: type: string 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) example: '2018-11-30T23:59:59.999' minLength: 1 dateRangeStart: type: string 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) example: '2018-11-01T00:00:00' minLength: 1 dateRangeType: type: string description: Provide the date range type enum: - ABSOLUTE - TODAY - YESTERDAY - THIS_WEEK - LAST_WEEK - PAST_TWO_WEEKS - THIS_MONTH - LAST_MONTH - THIS_YEAR - LAST_YEAR example: LAST_MONTH description: type: string description: Represents search term for filtering report entries by description example: some description keyword detailedFilter: $ref: '#/components/schemas/DetailedFilterV1' exportType: type: string description: If provided, you'll get filtered result including reports with provided export type. enum: - JSON - JSON_V1 - PDF - CSV - XLSX - ZIP example: JSON invoicingState: type: string description: If provided, you'll get filtered result including reports with provided invoicing state. enum: - INVOICED - UNINVOICED - ALL example: INVOICED projects: $ref: '#/components/schemas/ContainsArchivedFilterV1' rounding: type: boolean description: Indicates whether the report filter is rounding example: false sortOrder: type: string description: If provided, you'll get sorted result by provided sort order. enum: - ASCENDING - DESCENDING example: ASCENDING summaryFilter: $ref: '#/components/schemas/SummaryFilterV1' tags: $ref: '#/components/schemas/ContainsTagFilterV1' tasks: $ref: '#/components/schemas/ContainsTaskFilterV1' timeFormat: type: string description: Provide time in format THH:MM:SS.ssssss example: T00:00:00 timeZone: type: string description: If provided, you'll get filtered result including reports with provided time zone. example: Europe/Belgrade userCustomFields: type: array items: $ref: '#/components/schemas/CustomFieldFilterV1' writeOnly: true userGroups: $ref: '#/components/schemas/ContainsUsersFilterV1' userLocale: type: string description: If provided, you'll get filtered result including reports with provided user locale. example: en users: $ref: '#/components/schemas/ContainsUsersFilterV1' weekStart: type: string description: If provided, you'll get filtered result including reports with provided week start. enum: - MONDAY - TUESDAY - WEDNESDAY - THURSDAY - FRIDAY - SATURDAY - SUNDAY example: MONDAY weeklyFilter: $ref: '#/components/schemas/WeeklyFilterV1' withoutDescription: type: boolean description: If set to 'true', report will only include entries with empty description example: false zoomLevel: type: string description: If provided, you'll get filtered result including reports with provided zoom level. enum: - WEEK - MONTH - YEAR example: WEEK required: - dateRangeEnd - dateRangeStart SharedReportDtoV1: type: object description: Represents the array of reports. properties: fixedDate: type: boolean description: Indicates whether the shared report has a fixed date range id: type: string description: Represents a shared report identifier across the system. example: 60f91b3ffdaf031696ecxx11 isPublic: type: boolean link: type: string format: uri description: Represents URI link of shared report. name: type: string description: Represents shared report's name. example: Weekly 1 reportAuthor: type: string description: Represents report author (user) identifier across the system. example: 60f91b3ffdaf031696ecxxxx type: type: string description: Represents shared report type enum: - 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 example: WEEKLY visibleToUserGroups: type: array items: $ref: '#/components/schemas/EntityName' visibleToUsers: type: array description: Represents ids of user to whom are visible shared report. example: '[userId1, userId2, userId3]' items: $ref: '#/components/schemas/EntityName' ContainsUsersFilterV1: type: object properties: contains: type: string description: Represents a contains type. enum: - CONTAINS - DOES_NOT_CONTAIN - CONTAINS_ONLY example: CONTAINS ids: type: array description: Filter includes provided list of ids. example: - 5b715448b079875110792222 - 5b715448b079875110791111 items: type: string description: Filter includes provided list of ids. example: '["5b715448b079875110792222","5b715448b079875110791111"]' uniqueItems: true status: type: string description: Filter entities in 'contains' by their status. enum: - ALL - ACTIVE_WITH_PENDING - ACTIVE - PENDING - INACTIVE example: ACTIVE TimeEntrySummaryReportDto: type: object description: report properties: chart: type: array description: List of summary report charts items: $ref: '#/components/schemas/SummaryReportChartDto' groupOne: type: array description: List of groups items: $ref: '#/components/schemas/GroupOneDto' totals: type: array description: List of totals items: $ref: '#/components/schemas/TimeEntryReportTotals' DetailedOptionsV1: type: object properties: totals: type: string enum: - CALCULATE - EXCLUDE example: CALCULATE TimeEntryReportTotals: type: object description: List of totals properties: amounts: type: array description: List of amounts items: $ref: '#/components/schemas/AmountDto' entriesCount: type: integer format: int32 description: Represents entries count example: 1 id: type: string description: Represents time entry report identifier across the system. example: 5b715612b079875110791122 totalBillableTime: type: number description: Represents total billable time example: 1000 totalTime: type: number description: Represents total time example: 1200 AttendanceFilterV1: type: object description: Represents an attendance report filter. properties: breakFilters: type: array items: $ref: '#/components/schemas/CompareBreakFilter' capacityFilters: type: array items: $ref: '#/components/schemas/CompareCapacityFilter' endFilters: type: array items: $ref: '#/components/schemas/CompareEndFilter' hasTimeOff: type: boolean description: If set to true, report will include time off hours. example: true overtimeFilters: type: array items: $ref: '#/components/schemas/CompareOvertimeFilter' page: type: integer format: int32 default: 1 description: Specifies page number. minimum: 1 pageSize: type: integer format: int32 description: Specifies page size. minimum: 1 sortColumn: type: string enum: - USER - DATE - START - END - BREAK - WORK - CAPACITY - OVERTIME - TIME_OFF startFilters: type: array items: $ref: '#/components/schemas/CompareStartFilter' workFilters: type: array items: $ref: '#/components/schemas/CompareWorkFilter' GroupOneDto: type: object description: List of groups properties: amount: type: number description: Represents group one amount example: 100 children: type: array description: Represents list of children groups items: $ref: '#/components/schemas/GroupOneDto' clientName: type: string description: Represents client name example: Cake.com days: type: array description: Represents list of days items: $ref: '#/components/schemas/DailyTotalDto' duration: type: number description: Represents duration example: 10 id: type: string description: Represents group one identifier across the system. example: 5b715612b079875110791111 name: type: string description: Represents name example: Name nameLowerCase: type: string description: Represents lower case name example: name DailyTotalDto: type: object description: Represents list of days properties: amount: type: number date: type: string duration: type: number SharedReportV1: type: object properties: filter: $ref: '#/components/schemas/ReportFilterV1' fixedDate: type: boolean description: Indicates whether the shared report has a fixed date range id: type: string description: Represents a shared report identifier across the system. example: 5b715612b079875110791111 isPublic: type: boolean description: Indicates whether the shared report is public or not example: false name: type: string description: Represents shared report name example: Weekly 1 type: type: string enum: - 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 example: WEEKLY userId: type: string description: Represents user identifier across the system. example: 5b715612b079875110791113 visibleToUserGroups: type: array description: Indicates to which user groups are visible shared report example: - 5b715612b079875110791342 - 5b715612b079875110791324 - 5b715612b079875110793142 items: type: string description: Indicates to which user groups are visible shared report example: '["5b715612b079875110791342","5b715612b079875110791324","5b715612b079875110793142"]' uniqueItems: true visibleToUsers: type: array description: Indicates to whom users are visible shared report example: - 5b715612b079875110791432 - 5b715612b079875110791234 items: type: string description: Indicates to whom users are visible shared report example: '["5b715612b079875110791432","5b715612b079875110791234"]' uniqueItems: true workspaceId: type: string description: Represents workspace identifier across the system. example: 5b715612b079875110791112 ContainsTagFilterV1: type: object description: Represents an object for filtering entries by tags. properties: containedInTimeentry: type: string description: If provided, you'll get result filtered by value of contained in time entry. enum: - CONTAINS - DOES_NOT_CONTAIN - CONTAINS_ONLY example: CONTAINS_ONLY contains: type: string description: Represents a contains type. enum: - CONTAINS - DOES_NOT_CONTAIN - CONTAINS_ONLY example: CONTAINS ids: type: array description: Filter includes provided list of ids. example: - 5b715448b079875110792222 - 5b715448b079875110791111 items: type: string description: Filter includes provided list of ids. example: '["5b715448b079875110792222","5b715448b079875110791111"]' uniqueItems: true status: type: string description: Filter entities in 'contains' by their status. enum: - ACTIVE - ARCHIVED - ALL example: ACTIVE CompareCapacityFilter: type: object properties: filtrationType: type: string enum: - EXACTLY - LARGER_THAN - SMALLER_THAN value: type: string description: Represents daily work capacity of user in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750. example: '750' CustomFieldFilterV1: type: object description: Represents list of time entry custom field filter objects. properties: id: type: string description: Represents a custom field identifier across the system. example: 5b71544ab0798751107918b3 isEmpty: type: boolean description: Indicates whether the custom field is empty. example: false numberCondition: type: string description: Represents a custom field number condition. enum: - EQUAL - GREATER_THAN - LESS_THAN example: EQUAL type: type: string description: Represents a type of custom field. enum: - TXT - NUMBER - DROPDOWN_SINGLE - DROPDOWN_MULTIPLE - CHECKBOX - LINK example: NUMBER value: type: object description: Represents a custom field value. example: 2000 EntityName: type: object properties: id: type: string name: type: string ContainsArchivedFilterV1: type: object properties: contains: type: string description: Represents a contains type. enum: - CONTAINS - DOES_NOT_CONTAIN - CONTAINS_ONLY example: CONTAINS ids: type: array description: Filter includes provided list of ids. example: - 5b715448b079875110792222 - 5b715448b079875110791111 items: type: string description: Filter includes provided list of ids. example: '["5b715448b079875110792222","5b715448b079875110791111"]' uniqueItems: true status: type: string description: Filter entities in 'contains' by their status. enum: - ACTIVE - ARCHIVED - ALL example: ACTIVE CompareBreakFilter: type: object properties: filtrationType: type: string enum: - EXACTLY - LARGER_THAN - SMALLER_THAN value: type: string 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 example: '50' DetailedFilterV1: type: object description: Represents a detailed report filter. properties: auditFilter: $ref: '#/components/schemas/AuditFilterV1' options: $ref: '#/components/schemas/DetailedOptionsV1' page: type: integer format: int32 example: 1 pageSize: type: integer format: int32 example: 20 sortColumn: type: string description: If provided, you'll get sorted result by sort column. enum: - ID - DESCRIPTION - USER - DURATION - DATE - ZONED_DATE - NATURAL - USER_DATE example: ID SharedReportsAndCountDtoV1: type: object properties: count: type: integer format: int32 description: Represents the count of reports. example: 2 reports: type: array items: $ref: '#/components/schemas/SharedReportDtoV1' SharedReportRequestV1: type: object properties: filter: $ref: '#/components/schemas/ReportFilterV1' fixedDate: type: boolean description: Indicates whether the shared report has a fixed date range. isPublic: type: boolean description: Indicates whether the shared report is public or not example: false name: type: string description: Represents a shared report's name example: Weekly 1 type: type: string description: Represent the type of shared report. enum: - 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 example: WEEKLY visibleToUserGroups: type: array description: Represents user group ids. example: '"[5b715448b079875110792222", "5b715448b079875110791111"]' items: type: string description: Represents user group ids. example: '"[5b715448b079875110792222", "5b715448b079875110791111"]' uniqueItems: true visibleToUsers: type: array description: Represents user ids. example: - 5b715448b079875110791234 - 5b715448b079875110791432 - 5b715448b079875110791324 items: type: string description: Represents user ids. example: '["5b715448b079875110791234","5b715448b079875110791432","5b715448b079875110791324"]' uniqueItems: true CompareWorkFilter: type: object properties: filtrationType: type: string enum: - EXACTLY - LARGER_THAN - SMALLER_THAN value: type: string 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. example: '750' AmountDto: type: object description: List of amounts properties: type: type: string description: Represents amount type enum: - EARNED - COST - PROFIT - HIDE_AMOUNT - EXPORT example: PROFIT value: type: number description: Represents amount value example: 1000 securitySchemes: AddonKeyAuth: in: header name: x-addon-token type: apiKey ApiKeyAuth: in: header name: x-api-key type: apiKey MarketplaceKeyAuth: in: header name: x-marketplace-token type: apiKey ReportAddonKeyAuth: in: header name: x-addon-token type: apiKey x-tagGroups: - name: Clockify API tags: - User - Workspace - Webhooks - Approval - Client - Custom fields - Expense - Holiday - Invoice - Project - Task - Scheduling - Tag - Time entry - Balance - Policy - Time Off - Group - name: Clockify Reports API tags: - Shared Report - Team Report - Time Entry Report - Expense Report - name: Clockify Audit Log API tags: - Audit Log Report - name: Deprecated API tags: - Template (Deprecated) - Scheduling (Deprecated) - Workspace (Deprecated) - name: Experimental API tags: - Entity changes (Experimental) - name: Guide tags: - 'Entity Changes: Use cases'