Type: | Package |
Title: | A Wrapper for the 'Clockify' API |
Version: | 0.1.6 |
Description: | A wrapper for the Clockify API https://docs.clockify.me/, making it possible to query, insert and update time keeping data. |
License: | GPL-3 |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.1 |
Imports: | anytime, dplyr, httr, janitor, logger, lubridate, methods, purrr, rlist, stringi, tibble, tidyr |
Suggests: | here, testthat (≥ 3.0.0) |
Config/testthat/edition: | 3 |
Config/testthat/start-first: | api-key, workspace |
NeedsCompilation: | no |
Packaged: | 2024-06-03 05:18:38 UTC; wookie |
Author: | Andrew B. Collier [aut, cre] |
Maintainer: | Andrew B. Collier <andrew.b.collier@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2024-06-03 05:30:02 UTC |
Get client
Description
Get client
Usage
client(client_id, concise = TRUE)
Arguments
client_id |
Client ID |
concise |
Generate concise output |
Value
A data frame with one record per client
Examples
## Not run:
client("63a5493591ed63165538976d")
## End(Not run)
Parameters for client functions
Description
Parameters for client functions
Arguments
client_id |
Client ID |
concise |
Generate concise output |
Add a new client to workspace
Description
Add a new client to workspace
Usage
client_create(name, concise = TRUE)
Arguments
name |
Client name |
concise |
Generate concise output |
Value
A data frame with one row per record.
Examples
## Not run:
client_create("RStudio")
## End(Not run)
Delete a client from workspace
Description
A client must first be archived before it can be deleted.
Usage
client_delete(client_id, archive = FALSE)
Arguments
client_id |
Client ID |
archive |
Archive client before deleting. |
Value
A Boolean: TRUE
on success or FALSE
on failure.
Update a client
Description
Update a client
Usage
client_update(client_id, name = NULL, note = NULL, archived = NULL)
Arguments
client_id |
Client ID |
name |
Client name |
note |
Note about client |
archived |
Whether or not client is archived |
Value
A data frame with one record for the updated client.
Get clients
Description
Get clients
Usage
clients(concise = TRUE)
Arguments
concise |
Generate concise output |
Value
A data frame with one record per client.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
clients()
## End(Not run)
Remove a custom field from a project
Description
Remove a custom field from a project
Usage
custom_field_delete(project_id, custom_field_id)
Arguments
project_id |
Project ID |
custom_field_id |
Custom field ID |
Update a custom field on a project
Description
Update a custom field on a project
Usage
custom_field_update(
project_id,
custom_field_id,
default_value = NULL,
status = NULL
)
Arguments
project_id |
Project ID |
custom_field_id |
Custom field ID |
default_value |
A default value for the field |
status |
Status |
Get custom fields
Description
Custom fields are only listed for specific projects if the default values for those fields have been modified for those projects.
Usage
custom_fields(project_id = NULL)
Arguments
project_id |
Project ID |
Details
Custom fields are only available on the Pro and Enterprise plans.
Get API key
Description
Get API key
Usage
get_api_key()
Value
The API key.
Examples
## Not run:
CLOCKIFY_API_KEY <- Sys.getenv("CLOCKIFY_API_KEY")
set_api_key(CLOCKIFY_API_KEY)
get_api_key()
## End(Not run)
Title
Description
Title
Usage
paginate(path, query = NULL, pages = NULL, page_size = 50)
Arguments
path |
The path of the endpoint. |
query |
The query parameters. |
pages |
Maximum number of pages to retrieve. |
page_size |
Number of results requested per page. |
Value
Paginated response from API.
Get project
Description
Get project
Usage
project(project_id, concise = TRUE)
Arguments
project_id |
Project ID |
concise |
Generate concise output |
Value
A data frame with one record per project
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
project("612b16c0bc325f120a1e5099")
## End(Not run)
Update project
Description
Adjust the project characteristics.
Usage
project_update(project_id, name = NULL, client_id = NULL, archived = NULL)
project_update_template(project_id, is_template = TRUE)
Arguments
project_id |
Project ID |
name |
Project name |
client_id |
Client ID |
archived |
Whether or not project is archived |
is_template |
Whether or not project is a template |
Details
These functions enable the following functionality:
change the project name
change the client ID associated with the project
toggle whether project is archived and
toggle whether project is a template (paid plan only).
Update project time & budget estimates
Description
Update project time & budget estimates
Only available on a paid plan.
Usage
project_update_estimate_time(
project_id,
estimate = NULL,
manual = TRUE,
active = TRUE,
monthly = FALSE
)
project_update_estimate_budget(
project_id,
estimate = NULL,
manual = TRUE,
active = TRUE,
monthly = FALSE
)
Arguments
project_id |
Project ID |
estimate |
Updated estimate |
manual |
Is the estimate for the whole project ( |
active |
Activate this estimate. Only one of either time or budget estimate may be active. |
monthly |
Should estimate be reset monthly? |
Examples
## Not run:
project_update_estimate_time("612b16c0bc325f120a1e5099", "PT1H0M0S", TRUE, TRUE)
## End(Not run)
## Not run:
project_update_estimate_budget("612b16c0bc325f120a1e5099", 1000, TRUE, TRUE)
## End(Not run)
Create project
Description
Create project
Usage
project_create(name, client_id = NULL)
Arguments
name |
Project name |
client_id |
Client ID |
Delete project
Description
An active project cannot be deleted. Archive the project first.
Usage
project_delete(project_id)
Arguments
project_id |
Project ID |
Update user billable rate on project
Description
Update user billable rate on project
Usage
project_update_billable_rate(project_id, user_id, rate, since = NULL)
Arguments
project_id |
Project ID |
user_id |
User ID |
rate |
Rate |
since |
New rate will be applied to all time entries after this time |
Update user cost rate on project
Description
Only available on a paid plan.
Usage
project_update_cost_rate(project_id, user_id, rate, since = NULL)
Arguments
project_id |
Project ID |
user_id |
User ID |
rate |
Rate |
since |
New rate will be applied to all time entries after this time |
Update project memberships
Description
Update project memberships
Usage
project_update_memberships(project_id, user_id)
Arguments
project_id |
Project ID |
user_id |
One or more user IDs |
Get projects
Description
Get projects
Usage
projects(concise = TRUE)
Arguments
concise |
Generate concise output |
Value
A data frame with one record per project
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
projects()
## End(Not run)
Reports Parameters
Description
These are parameters which occur commonly across functions for reports.
Arguments
start |
Start time |
end |
End time |
Detailed report
Description
Detailed report
Usage
reports_detailed(start, end, extra_args = list())
Arguments
start |
Start time |
end |
End time |
extra_args |
Extra arguments to be passed to the
API.
Example: |
Value
A data frame with detailed time entries for the specified time period.
Examples
## Not run:
report <- reports_detailed("2022-08-01", "2022-09-01")
## End(Not run)
Summary report
Description
Summary report
Usage
reports_summary(start, end, extra_args = list())
Arguments
start |
Start time |
end |
End time |
extra_args |
Extra arguments to be passed to the
API.
Example: |
Value
A data frame with summarised time entries for the specified time period.
Examples
## Not run:
report <- reports_summary("2022-08-01", "2022-09-01")
# Summary per user.
report
# Summary per client/project.
report %>%
select(-duration, -amount, -amounts) %>%
unnest(projects)
# Summary per time entry.
report %>%
select(-duration, -amount, -amounts) %>%
unnest(projects) %>%
select(-duration, -amount) %>%
unnest(entries)
## End(Not run)
Weekly report
Description
Weekly report
Usage
reports_weekly(start, end, extra_args = list())
Arguments
start |
Start time |
end |
End time |
extra_args |
Extra arguments to be passed to the
API.
Example: |
Value
A data frame with a weekly summary of time entries for the specified time period.
Examples
## Not run:
report <- reports_weekly("2022-08-01", "2022-08-08")
report %>%
select(-duration, -amount) %>%
unnest(projects)
## End(Not run)
Set API key
Description
Set API key
Usage
set_api_key(api_key)
Arguments
api_key |
A Clockify API key |
Value
The API key.
Examples
## Not run:
CLOCKIFY_API_KEY <- Sys.getenv("CLOCKIFY_API_KEY")
set_api_key(CLOCKIFY_API_KEY)
## End(Not run)
Shared Reports Parameters
Description
These are parameters which occur commonly across functions for shared reports.
Arguments
shared_report_id |
Identifier for a specific shared report |
name |
Name of the report |
start |
Start time |
end |
End time |
is_public |
Is this a public report? |
fixed_date |
Are the dates fixed? |
Get a specific shared report
Description
Get a specific shared report
Usage
shared_report(shared_report_id)
Arguments
shared_report_id |
Identifier for a specific shared report |
Examples
## Not run:
# Get all shared reports.
shared_reports()
# Get specific shared report by shared report ID.
shared_report("6307f29f1bbd1d34e56b9eb7")
## End(Not run)
Create a shared report
Description
Create a shared report
Usage
shared_report_create(name, start, end, is_public = TRUE, fixed_date = FALSE)
Arguments
name |
Name of the report |
start |
Start time |
end |
End time |
is_public |
Is this a public report? |
fixed_date |
Are the dates fixed? |
Examples
## Not run:
shared_report_create("Sample Report", "2022-03-01", "2022-04-01")
## End(Not run)
Delete a shared report
Description
Delete a shared report
Usage
shared_report_delete(shared_report_id)
Arguments
shared_report_id |
Identifier for a specific shared report |
Examples
## Not run:
shared_report_delete("6307f29f1bbd1d34e56b9eb7", name = "Test Report")
## End(Not run)
Update a shared report
Description
Update a shared report
Usage
shared_report_update(
shared_report_id,
name = NULL,
is_public = NULL,
fixed_date = NULL
)
Arguments
shared_report_id |
Identifier for a specific shared report |
name |
Report name |
is_public |
Is this a public report? |
fixed_date |
Are the dates fixed? |
Examples
## Not run:
shared_report_update("6307f29f1bbd1d34e56b9eb7", name = "Test Report")
## End(Not run)
Get all shared reports
Description
Get all shared reports
Usage
shared_reports()
Get tag
Description
Get tag
Usage
tag(tag_id)
Arguments
tag_id |
Tag ID |
Value
A data frame with one record per tag
Examples
## Not run:
tag("5f2d9bc659badb2a849c027e")
## End(Not run)
Create tag
Description
Create tag
Usage
tag_create(name)
Arguments
name |
Tag name |
Examples
## Not run:
tag_create("Size: S")
tag_create("Size: M")
tag_create("Size: L")
tag_create("Size: XL")
## End(Not run)
Delete tag
Description
Delete tag
Usage
tag_delete(tag_id)
Arguments
tag_id |
Tag ID |
Examples
## Not run:
tag_delete("5f2d9bc659badb2a849c027e")
## End(Not run)
Update tag
Description
Update tag
Usage
tag_update(tag_id, name = NULL, archived = NULL)
Arguments
tag_id |
Tag ID |
name |
Tag name |
archived |
Whether or not item is archived |
Examples
## Not run:
tag_update("5f2d9bc659badb2a849c027e", "Size: Large")
tag_update("5f2d9bc659badb2a849c027e", archived = TRUE)
tag_update("5f2d9bc659badb2a849c027e", "Size: L", FALSE)
## End(Not run)
Get tags
Description
Get tags
Usage
tags()
Value
A data frame.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
tags()
## End(Not run)
Get task
Description
Get task
Usage
task(project_id, task_id)
Arguments
project_id |
Project ID |
task_id |
Task ID |
Value
A data frame.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
workspace("61343c45ab05e02be2c8c1fd")
tasks("61343c9ba15c1d53ad33369f")
## End(Not run)
Create a task
Description
Create a task
Usage
task_create(project_id, name)
Arguments
project_id |
Project ID |
name |
Task name |
Examples
## Not run:
task_create("630ce53290cfd8789366fd49", "tests")
task_create("630ce53290cfd8789366fd49", "docs")
## End(Not run)
Delete task
Description
Delete task
Usage
task_delete(project_id, task_id)
Arguments
project_id |
Project ID |
task_id |
Task ID |
Examples
## Not run:
task_delete("630ce53290cfd8789366fd49", "630ce57e25e863294e5c6cf2")
## End(Not run)
Update a task
Description
Update a task
Usage
task_update(
project_id,
task_id,
name,
billable = NULL,
status = NULL,
assignee_id = NULL
)
Arguments
project_id |
Project ID |
task_id |
Task ID |
name |
Task name |
billable |
Is the task billable? |
status |
Is the task ACTIVE or DONE? |
assignee_id |
Assignee ID |
Examples
## Not run:
task_update("630ce53290cfd8789366fd49", "630ce57e25e863294e5c6cf2", "Tests")
task_create("630ce53290cfd8789366fd49", "630ce80a7f07da44c14ca9a2", "Docs", FALSE)
## End(Not run)
Update task billable rate
Description
This feature is only available on the Standard, Pro and Enterprise plans.
Usage
task_update_billable_rate(project_id, task_id, rate, since = NULL)
Arguments
project_id |
Project ID |
task_id |
Task ID |
rate |
Rate |
since |
New rate will be applied to all time entries after this time |
Update task cost rate
Description
This feature is only available on the Pro and Enterprise plans.
Usage
task_update_cost_rate(project_id, task_id, rate, since = NULL)
Arguments
project_id |
Project ID |
task_id |
Task ID |
rate |
Rate |
since |
New rate will be applied to all time entries after this time |
Get tasks
Description
Get tasks
Usage
tasks(project_id)
Arguments
project_id |
Project ID |
Value
A data frame.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
workspace("61343c45ab05e02be2c8c1fd")
tasks("61343c9ba15c1d53ad33369f")
## End(Not run)
Time Entry Parameters
Description
These are parameters which occur commonly across functions for time entries.
Arguments
time_entry_id |
Time entry ID |
project_id |
Project ID |
start |
Start time |
end |
End time |
description |
Description |
Get time entries
Description
You send time according to your account's timezone (from Profile Settings) and get response with time in UTC.
Usage
time_entries(
user_id = NULL,
start = NULL,
end = NULL,
description = NULL,
project_id = NULL,
task = NULL,
tags = NULL,
finished = TRUE,
concise = TRUE,
...
)
Arguments
user_id |
User ID. If not specified then use authenticated user. |
start |
If provided, only time entries that started after the specified datetime will be returned. |
end |
If provided, only time entries that started before the specified datetime will be returned. |
description |
If provided, time entries will be filtered by description. |
project_id |
If provided, time entries will be filtered by project. |
task |
If provided, time entries will be filtered by task. |
tags |
If provided, time entries will be filtered by tags. You can provide one or more tags. |
finished |
Whether to include only finished time intervals (intervals with both start and end time). |
concise |
Generate concise output |
... |
Further arguments passed to |
Value
A data frame with one record per time entry.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
USER_ID <- "612b15a4f4c3bf0462192676"
# Specify number of results per page (default: 50).
time_entries(USER_ID, page_size = 200)
# Specify number of pages.
time_entries(USER_ID, pages = 3)
## End(Not run)
Get a specific time entry on workspace
Description
Get a specific time entry on workspace
Usage
time_entry(time_entry_id, concise = TRUE)
Arguments
time_entry_id |
Time entry ID |
concise |
Generate concise output |
Value
A data frame with one record per time entry.
Examples
## Not run:
time_entry("61343d27ab05e02be2c8c266")
## End(Not run)
Create a time entry
Description
Creating time entries for other users is a paid feature.
Usage
time_entry_create(
user_id = NULL,
project_id = NULL,
start,
end = NULL,
description = NULL,
task_id = NULL
)
Arguments
user_id |
User ID |
project_id |
Project ID |
start |
Start time |
end |
End time |
description |
Description |
task_id |
Task ID |
Value
A time entry ID.
Examples
## Not run:
# Create a time entry for the authenticated user.
time_entry_create(
project_id = "600e73263e207962449a2c13",
start = "2021-01-02 08:00:00",
end = "2021-01-02 10:00:00",
description = "Doing stuff"
)
# Create a time entry for another user (paid feature).
time_entry_create(
"5df56293df753263139e60c5",
"600e73263e207962449a2c13",
"2021-01-02 10:00:00",
"2021-01-02 12:00:00",
"Doing other stuff"
)
## End(Not run)
Delete a time entry
Description
Delete a time entry
Usage
time_entry_delete(time_entry_id = NULL)
Arguments
time_entry_id |
Time entry ID |
Value
A Boolean: TRUE
on success or FALSE
on failure.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
time_entry_delete("612c7bd2a34530476ab25c67")
## End(Not run)
Mark time entries as invoiced
Description
The time_entry_invoiced()
function will only work on a paid plan.
Usage
time_entry_invoiced(time_entry_id, invoiced = TRUE)
Arguments
time_entry_id |
Time entry ID |
invoiced |
Has this time entry been invoiced? |
Replace a time entry
Description
This does not update the time entry. It uses the same time entry ID but sets all details from scratch.
Usage
time_entry_set(
time_entry_id,
project_id = NULL,
start,
end = NULL,
description = NULL
)
Arguments
time_entry_id |
Time entry ID |
project_id |
Project ID |
start |
Start time |
end |
End time |
description |
Description |
Stop currently running timer
Description
Stop currently running timer
Usage
time_entry_stop(user_id = NULL, end = NULL)
Arguments
user_id |
User ID. If not specified then use authenticated user. |
end |
End time |
Examples
## Not run:
# Start timer running.
time_entry_create(
user_id = "5df56293df753263139e60c5",
project_id = "600e73263e207962449a2c13",
start = "2022-09-02 14:00:00",
description = "Doing other stuff"
)
# Stop timer.
time_entry_stop(
user_id = "5df56293df753263139e60c5",
end = "2022-09-02 15:00:00"
)
## End(Not run)
Get information for authenticated user
Description
Get information for authenticated user
Usage
user(concise = TRUE)
Arguments
concise |
Generate concise output |
Value
A data frame with details of user profile.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
user()
## End(Not run)
Update user roles
Description
Update user roles
Usage
user_update_role(user_id, role, entity_id)
Arguments
user_id |
User ID |
role |
One of |
entity_id |
Depending on |
Create a user
Description
Create a user
Usage
user_create(email, send_email = TRUE)
Arguments
email |
Email address for user |
send_email |
Whether to send email to user |
Delete user
Description
Delete user
Usage
user_delete(user_id)
Arguments
user_id |
User ID |
Delete user roles
Description
Delete user roles
Usage
user_delete_role(user_id, role, entity_id)
Arguments
user_id |
User ID |
role |
One of |
entity_id |
Depending on |
Create a user group
Description
Create a user group
Usage
user_group_create(name)
Arguments
name |
Name of user group |
Delete a user group
Description
Delete a user group
Usage
user_group_delete(group_id)
Arguments
group_id |
User group ID |
Update a user group
Description
Update a user group
Usage
user_group_update(group_id, name)
Arguments
group_id |
User group ID |
name |
Name of user group |
Add a user to a user group
Description
Add a user to a user group
Usage
user_group_user_add(group_id, user_id)
Arguments
group_id |
User group ID |
user_id |
User ID |
Remove a user from a user group
Description
Remove a user from a user group
Usage
user_group_user_remove(group_id, user_id)
Arguments
group_id |
User group ID |
user_id |
User ID |
Get user groups
Description
Get user groups
Usage
user_groups()
Value
A data frame with one record per user group.
Examples
## Not run:
user_groups()
## End(Not run)
Update cost rate
Description
For this to work you need to enable expenses (under the General tab in Workspace Settings). It's only available on the PRO plan.
Usage
user_update_cost_rate(user_id, rate, since = NULL)
Arguments
user_id |
User ID |
rate |
Rate |
since |
New rate will be applied to all time entries after this time |
Update hourly rate
Description
Update hourly rate
Usage
user_update_hourly_rate(user_id, rate, since = NULL)
Arguments
user_id |
User ID |
rate |
Rate |
since |
New rate will be applied to all time entries after this time |
Update status
Description
Update status
Usage
user_update_status(user_id, active)
Arguments
user_id |
User ID |
active |
A Boolean indicating whether or not user is active. Can also specify either |
Get list of users in active workspace
Description
Get list of users in active workspace
Usage
users(active = NULL, concise = TRUE)
Arguments
active |
Only include active users |
concise |
Generate concise output |
Value
A data frame with one record per user.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
# Show only active users.
users()
# Show all users.
users(active = FALSE)
# Show active & default workspace for each user.
users(concise = FALSE)
## End(Not run)
Get or set active workspace ID
Description
Get or set active workspace ID
Usage
workspace(workspace_id = NULL)
Arguments
workspace_id |
A workspace ID |
Value
The ID of the active workspace.
Examples
## Not run:
# Select default workspace for authenticated user.
workspace()
# Select a specific workspace.
workspace("612b15a5f4c3bf0462192677")
## End(Not run)
Get a list of workspaces
Description
Get a list of workspaces
Usage
workspaces()
Value
A data frame with one record per workspace.
Examples
## Not run:
set_api_key(Sys.getenv("CLOCKIFY_API_KEY"))
workspaces()
## End(Not run)