Workbrew API
Version: v0
Your User API key will be copied in all the examples here, so you can test any example right away. Only you can see this value. You can find your User API key in your user settings.
Prefix the API key with Bearer and pass that value as the Authorization header.
This is your Workbrew User API key.
Example cURL command:
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY_HERE" \
-H "X-Workbrew-API-Version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.json"
curl -X GET \
-H "Authorization: Bearer " \
-H "X-Workbrew-API-Version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.json"
The Swagger definition file is available here.
GET
/workspaces/${workspace_name}/analytics.json
Returns a list of Analytics
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/analytics.json"
Responses
200 Analytics Found[
{
"device": "TC6R2DHVHG",
"command": "brew install curl",
"last_run": "2024-01-01T12:34:56Z",
"count": 2
}
]
GET
/workspaces/${workspace_name}/analytics.csv
Returns a list of Analytics
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/analytics.csv"
Responses
200 Analytics Founddevice,command,last_run,count TC6R2DHVHG,brew install curl,2024-01-01T12:34:56Z,2 TC6R2DHVHG,brew install wget,2024-02-03T08:22:33Z,1 TC6R2DHVHG,brew info curl,2024-04-15T14:45:22Z,1
GET
/workspaces/${workspace_name}/brew_commands/${brew_command_label}/runs.json
Returns a list of Brew Command Runs
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
brew_command_label
|
Brew Command Label | path | string | |
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands/${BREW_COMMAND_LABEL}/runs.json"
Responses
200 Brew Command Runs Found[
{
"command": "brew outdated",
"label": "outdated",
"device": "TC6R2DHVHG",
"created_at": "2023-11-01T12:34:56.000Z",
"updated_at": "2023-11-01T21:43:12.000Z",
"success": true,
"output": "curl\ngit",
"started_at": "2023-11-01T12:34:56.000Z",
"finished_at": "2023-11-01T21:43:12.000Z"
}
]
GET
/workspaces/${workspace_name}/brew_commands/${brew_command_label}/runs.csv
Returns a list of Brew Command Runs
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
brew_command_label
|
Brew Command Label | path | string | |
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands/${BREW_COMMAND_LABEL}/runs.csv"
Responses
200 Brew Command Runs Foundcommand,label,device,created_at,updated_at,success,output,started_at,finished_at brew outdated,outdated,TC6R2DHVHG,2025-07-03 12:50:45 UTC,2025-07-03 12:50:45 UTC,true,c-ares\nlibuv,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC brew outdated,outdated,1234567890,2025-07-03 12:50:45 UTC,2025-07-03 12:50:45 UTC,false,python-argcomplete,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC
GET
/workspaces/${workspace_name}/brewfiles/${label}/runs.json
Returns a list of Brewfile Runs
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
label
|
Brewfile Label | path | string | |
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}/runs.json"
Responses
200 Brewfile Runs Found[
{
"label": "bundle-file",
"device": "TC6R2DHVHG",
"created_at": "2023-11-01T12:34:56.000Z",
"updated_at": "2023-11-01T21:43:12.000Z",
"success": true,
"output": "Using git\n`brew bundle` complete! 1 Brewfile dependency now installed.",
"started_at": "2023-11-01T12:34:56.000Z",
"finished_at": "2023-11-01T21:43:12.000Z"
}
]
GET
/workspaces/${workspace_name}/brewfiles/${label}/runs.csv
Returns a list of Brewfile Runs
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
label
|
Brewfile Label | path | string | |
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}/runs.csv"
Responses
200 Brewfile Runs Foundlabel,device,created_at,updated_at,success,output,started_at,finished_at bundle-file,TC6R2DHVHG,2025-07-03 12:50:45 UTC,2025-07-03 12:50:45 UTC,false,"",Not Started,Not Finished
GET
/workspaces/${workspace_name}/brew_commands.json
Returns a list of Brew Commands
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands.json"
Responses
200 Brew Commands Found[
{
"command": "brew outdated",
"label": "outdated",
"last_updated_by_user": "mikemcquaid",
"started_at": "2023-11-01T12:34:56.000Z",
"finished_at": "2023-11-01T21:43:12.000Z",
"devices": [
"TC6R2DHVHG"
],
"run_count": 2
}
]
POST
/workspaces/${workspace_name}/brew_commands.json
Creates a new Brew Command
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Request Body
| Name | Format | Example | Required |
|---|---|---|---|
arguments
|
install wget | ||
device_ids
|
Uuid | c206cdc6-f01c-5859-899d-7fd0a546e888,f7b3bb3c-6b3e-5e3a-bcb5-66c49e1c5fcb | |
run_after_datetime
|
Date Time | 2025-01-10T10:09 | |
recurrence
|
Once, Daily, Weekly, Monthly | once |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X POST \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"arguments":"install wget"}' \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands.json"
Responses
201 Brew Command created{
"message": "Brew Command was successfully created."
}
{
"message": "An error occurred when trying to create Brew Command",
"errors": [
"Please upgrade your plan to get access to Brew Commands."
]
}
{
"message": "An error occurred when trying to create Brew Command",
"errors": [
"Arguments cannot include `&&`"
]
}
GET
/workspaces/${workspace_name}/brew_commands.csv
Returns a list of Brew Commands
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands.csv"
Responses
200 Brew Commands Foundcommand,label,last_updated_by_user,started_at,finished_at,devices,run_count brew outdated,outdated,mikemcquaid,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC,"",2 brew list --versions --formula,list-versions-formula,onboarded,2023-11-01 12:34:56 UTC,Not Finished,TC6R2DHVHG,1 brew list --versions --cask,list-versions-cask,onboarding,Not Started,Not Finished,"",1 brew --version,version,mikemcquaid,Not Started,Not Finished,"",0 brew install git,install-git,mikemcquaid,Not Started,Not Finished,"",0 brew install zx,install-zx,mikemcquaid,Not Started,Not Finished,"",0 brew install node,install-node,mikemcquaid,Not Started,Not Finished,"",0 brew install deno,install-deno,mikemcquaid,Not Started,Not Finished,"",0 brew install ruby,install-ruby,mikemcquaid,Not Started,Not Finished,"",0 brew install javascript,install-javascript,mikemcquaid,Not Started,Not Finished,"",0 brew install rust,install-rust,mikemcquaid,Not Started,Not Finished,"",0 brew install golang,install-golang,mikemcquaid,Not Started,Not Finished,"",0 brew install c++,install-c++,mikemcquaid,Not Started,Not Finished,"",0 brew install nonexistent,install-nonexistent,mikemcquaid,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC,"",1 brew install hello,install-hello,mikemcquaid,Not Started,Not Finished,"",0 brew upgrade curl,upgrade-curl,mikemcquaid,2024-11-01 12:34:56 UTC,2024-11-01 21:43:12 UTC,"",1 brew upgrade ack,upgrade-ack,mikemcquaid,2024-11-01 12:34:56 UTC,2024-11-01 21:43:12 UTC,"",1
GET
/workspaces/${workspace_name}/brew_configurations.json
Returns a list of Brew Configurations
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_configurations.json"
Responses
200 Brew Configurations Found[
{
"key": "HOMEBREW_DEVELOPER",
"value": "1",
"last_updated_by_user": "mikemcquaid",
"device_group": "All Devices"
}
]
GET
/workspaces/${workspace_name}/brew_configurations.csv
Returns a list of Brew Configurations
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_configurations.csv"
Responses
200 Brew Configurations Foundkey,value,last_updated_by_user,device_group HOMEBREW_DEVELOPER,1,mikemcquaid,All Devices HOMEBREW_API_AUTO_UPDATE_SECS,1,mikemcquaid,All Devices HOMEBREW_FORBIDDEN_FORMULAE,util-linux ruby,mikemcquaid,All Devices HOMEBREW_FORBIDDEN_CASKS,1password-cli,mikemcquaid,All Devices
GET
/workspaces/${workspace_name}/brew_taps.json
Returns a list of Taps
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_taps.json"
Responses
200 Taps Found[
{
"tap": "Homebrew/homebrew-core",
"devices": [
"TC6R2DHVHG",
"1234567890"
],
"formulae_installed": 10,
"casks_installed": 0,
"available_packages": "16 Formulae"
}
]
GET
/workspaces/${workspace_name}/brew_taps.csv
Returns a list of Taps
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_taps.csv"
Responses
200 Taps Foundtap,devices,formulae_installed,casks_installed,available_packages Homebrew/homebrew-core,"TC6R2DHVHG, 1234567890",10,0,7388 Formulae Homebrew/homebrew-cask,TC6R2DHVHG,0,2,4901 Casks and 2411 Cask fonts apple/apple,TC6R2DHVHG,1,0,>=1 Packages workbrew/private,TC6R2DHVHG,0,1,>=1 Packages
GET
/workspaces/${workspace_name}/casks.json
Returns a list of Casks
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/casks.json"
Responses
200 Casks Found[
{
"name": "logi-options+",
"devices": [
"TC6R2DHVHG",
"1234567890"
],
"outdated": true,
"deprecated": "",
"homebrew_cask_version": "8.11.0_1"
}
]
GET
/workspaces/${workspace_name}/casks.csv
Returns a list of Casks
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/casks.csv"
Responses
200 Brew Packages Foundname,devices,outdated,deprecated,homebrew_cask_version 1password,"[""TC6R2DHVHG""]",true,"",8.10.75 1password-cli,"[""TC6R2DHVHG""]",true,"",2.31.0 logi-options+,"[""TC6R2DHVHG""]",true,"",1.89.705126 workbrew/private/workbrew,"[""TC6R2DHVHG""]",false,"",0.0.5
GET
/workspaces/${workspace_name}/brewfiles.json
Returns a list of Brewfiles
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles.json"
Responses
200 Brewfiles with parameterized slugs[
{
"last_updated_by_user": "onboarded",
"started_at": "Not Started",
"finished_at": "Not Finished",
"devices": [],
"run_count": 1
}
]
{
"message": "Brewfiles API is not available on your current plan.",
"errors": [
"Brewfiles cannot be created or updated on a Workbrew Free subscription."
]
}
POST
/workspaces/${workspace_name}/brewfiles.json
Creates a new Brewfile
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Request Body
| Name | Format | Example | Required |
|---|---|---|---|
label
|
my-brewfile | ||
content
|
brew "wget" | ||
device_serial_numbers
|
TC6R2DHVHG,1234567890 | ||
device_group_id
|
ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X POST \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"label":"my-brewfile","content":"brew \"wget\""}' \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles.json"
Responses
201 Brewfile created (for a device group){
"message": "Brewfile was successfully created."
}
{
"message": "Brewfiles API is not available on your current plan.",
"errors": [
"Brewfiles cannot be created or updated on a Workbrew Free subscription."
]
}
{
"message": "An error occurred when trying to create Brewfile",
"errors": [
"Please upgrade your plan to get access to Brew Commands."
]
}
GET
/workspaces/${workspace_name}/brewfiles.csv
Returns a list of Brewfiles
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles.csv"
Responses
200 Brewfiles Foundlast_updated_by_user,started_at,finished_at,devices,run_count bundle-file,onboarded,Not Started,Not Finished,TC6R2DHVHG,1
DELETE
/workspaces/${workspace_name}/brewfiles/${label}.json
Deletes a Brewfile
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
label
|
path | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X DELETE \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}.json"
Responses
200 Brewfile deleted{
"message": "Brewfile was successfully destroyed."
}
{
"message": "Brewfiles API is not available on your current plan.",
"errors": [
"Brewfiles cannot be created or updated on a Workbrew Free subscription."
]
}
PUT
/workspaces/${workspace_name}/brewfiles/${label}.json
Updates a Brewfile
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
label
|
path | string |
Request Body
| Name | Format | Example | Required |
|---|---|---|---|
content
|
brew "wget" brew "htop" | ||
device_serial_numbers
|
1234567890 | ||
device_group_id
|
ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X PUT \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"content":"brew \"wget\"\nbrew \"htop\""}' \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}.json"
Responses
200 Brewfile updated{
"message": "Brewfile was successfully updated."
}
{
"message": "An error occurred when trying to update Brewfile",
"errors": [
"Brewfile has an invalid line: tap \"foo/bar/baz\""
]
}
{
"message": "Brewfiles API is not available on your current plan.",
"errors": [
"Brewfiles cannot be created or updated on a Workbrew Free subscription."
]
}
GET
/workspaces/${workspace_name}/device_groups.json
Returns a list of Device Groups
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/device_groups.json"
Responses
200 Device Groups Found[
{
"id": "ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc",
"name": "Admin",
"devices": [
"TC6R2DHVHG"
]
}
]
GET
/workspaces/${workspace_name}/device_groups.csv
Returns a list of Device Groups
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/device_groups.csv"
Responses
200 Device Groups Foundid,name,devices ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc,Admin, 377d8aa2-64cd-56a6-8351-6163bcf7dca1,OSX 14,TC6R2DHVHG
GET
/workspaces/${workspace_name}/devices.json
Returns a list of devices
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.json"
Responses
200 devices found[
{
"serial_number": "TC6R2DHVHG",
"groups": [
"OSX 14"
],
"mdm_user_or_device_name": "Mike's MacBook Pro",
"last_seen_at": "2023-08-25T00:00:00.000Z",
"command_last_run_at": "2024-01-01T00:00:00.000Z",
"device_type": "MacBook Pro",
"os_version": "macOS 14.0 (23A344)",
"homebrew_prefix": "/opt/homebrew",
"homebrew_version": "4.1.15-24-g5e78ba3",
"workbrew_version": "0.2.1",
"formulae_count": 9,
"casks_count": 3
}
]
GET
/workspaces/${workspace_name}/devices.csv
Returns a list of devices
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.csv"
Responses
200 devices foundserial_number,groups,mdm_user_or_device_name,last_seen_at," \
"command_last_run_at,device_type,os_version,homebrew_prefix,homebrew_version,workbrew_version," \
"formulae_count,casks_count
TC6R2DHVHG,"[""OSX 14""]",Mike's MacBook Pro,2023-08-25 00:00:00 UTC,2024-01-01 00:00:00 UTC,MacBook Pro," \
"macOS 14.0 (23A344),/opt/homebrew,4.1.15-24-g5e78ba3,0.2.1,9,3
1234567890,[],Never,Never,Mac mini,macOS 13,/usr/local,4.0.0,0.1.6-1-geb5f975,3,0
AB3456DG90,[],Never,Never,Unknown,Unknown,Unknown,Unknown,Unknown,0,0
d6297bb0816f4832af4067203686df26,[],Never,Never,MX33-BS1-V1,Ubuntu 5.15.0-124.134-generic 5.15.163,"\
"/home/linuxbrew/.linuxbrew,Unknown,0.9.12,0,0
GET
/workspaces/${workspace_name}/events.json
Returns a list of audit log events
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
filter
|
Filter by actor type: user, system, or all | query |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/events.json"
Responses
200 update events include changes[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"event_type": "device.created",
"occurred_at": "2024-03-01T10:00:00Z",
"actor_id": null,
"actor_type": "User",
"target_id": null,
"target_type": "Device",
"target_identifier": "TC6R2DHVHG"
}
]
GET
/workspaces/${workspace_name}/events.csv
Returns audit log events as CSV
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
filter
|
Filter by actor type: user, system, or all | query | string | |
download
|
Set to 1 to force download as attachment | query | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/events.csv"
Responses
200 CSV with download parameterid,event_type,occurred_at,actor_id,actor_type,target_id,target_type,target_identifier 123e4567-e89b-12d3-a456-426614174000,device.created,2024-03-01T10:00:00Z,,,123e4567-e89b-12d3-a456-426614174001,Device,TC6R2DHVHG
GET
/workspaces/${workspace_name}/formulae.json
Returns a list of Formulae
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/formulae.json"
Responses
200 Brew Formulae Found[
{
"name": "curl",
"devices": [
"TC6R2DHVHG",
"1234567890"
],
"outdated": true,
"installed_on_request": false,
"installed_as_dependency": true,
"vulnerabilities": [
"CVE-2024-2466",
"THIS-IS-AN-INVALID-CVE-001"
],
"deprecated": "",
"license": [
"curl"
],
"homebrew_core_version": "8.11.0_1"
}
]
GET
/workspaces/${workspace_name}/formulae.csv
Returns a list of Formulae
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/formulae.csv"
Responses
200 Formulae Foundname,devices,outdated,installed_on_request,installed_as_dependency,"\
"vulnerabilities,deprecated,license,homebrew_core_version
curl,"TC6R2DHVHG, 1234567890",true,false,true,"CVE-2024-11053, CVE-2024-6197, CVE-2024-7264, CVE-2024-8096, "\
"CVE-2024-9681, THIS-IS-AN-INVALID-CVE-001","",curl,8.11.1
actionlint,TC6R2DHVHG,true,false,false,"","",MIT,1.7.7
ack,TC6R2DHVHG,true,false,false,SOME-INVALID-CVE-001,"",Artistic-2.0,3.8.1
cweb,1234567890,true,false,false,"","",LicenseRef-Homebrew-cannot-represent,4.12.1
renovate,TC6R2DHVHG,true,false,false,GHSA-rqgv-292v-5qgr,"",AGPL-3.0-only,39.125.0
wget,TC6R2DHVHG,true,true,false,"CVE-2024-10524, SOME-INVALID-CVE-002","",GPL-3.0-or-later,1.25.0
zstd,1234567890,true,false,false,"","","(BSD-3-Clause OR GPL-2.0-only), BSD-2-Clause, MIT",1.5.6
apple/apple/game-porting-toolkit,TC6R2DHVHG,false,false,false,"","",,
rdup,TC6R2DHVHG,false,false,false,"",Disabled,GPL-3.0-or-later,1.1.15_2
flac,TC6R2DHVHG,false,false,false,"","","BSD-3-Clause, GPL-2.0-or-later, ISC, LGPL-2.0-or-later, " \
"LGPL-2.1-or-later, LicenseRef-Homebrew-public-domain, (GPL-2.0-or-later OR LGPL-2.1-or-later)",1.4.3
rbenv-communal-gems,TC6R2DHVHG,false,false,false,"",Deprecated,MIT,1.0.1_1
GET
/workspaces/${workspace_name}/licenses.json
Returns a list of Licenses
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/licenses.json"
Responses
200 Licenses Found[
{
"name": "GPL-3.0-or-later",
"device_count": 2,
"formula_count": 2
}
]
GET
/workspaces/${workspace_name}/licenses.csv
Returns a list of Licenses
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/licenses.csv"
Responses
200 Licenses Foundname,device_count,formula_count GPL-3.0-or-later,2,2 MIT,2,2 LicenseRef-Homebrew-cannot-represent,1,1 BSD-3-Clause AND GPL-2.0-or-later AND ISC AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Homebrew-public-domain AND (GPL-2.0-or-later OR LGPL-2.1-or-later),1,1 (BSD-3-Clause OR GPL-2.0-only) AND BSD-2-Clause AND MIT,1,1 curl,1,1 Artistic-2.0,1,1 AGPL-3.0-only,1,1 Unknown,1,0
GET
/workspaces/${workspace_name}/package_requests.json
Returns a list of Package Requests
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests.json"
Responses
200 Package Requests Found[
{
"id": "string",
"package_name": "zoom",
"package_type": "cask",
"tap": "homebrew/cask",
"status": "pending",
"device": "TC6R2DHVHG",
"scope_type": "Device",
"scope_id": null,
"decided_by": "mikemcquaid",
"decision_reason": "Not approved for use in this workspace",
"decided_at": null,
"created_at": "string",
"updated_at": "string"
}
]
GET
/workspaces/${workspace_name}/package_requests.csv
Returns a list of Package Requests
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests.csv"
Responses
200 Package Requests Foundstring
GET
/workspaces/${workspace_name}/package_requests/${id}.json
Returns a Package Request
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
id
|
Package Request ID | path | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests/${ID}.json"
Responses
200 Package Request Found{
"package_request": {
"id": "string",
"package_name": "docker",
"package_type": "cask",
"tap": "homebrew/cask",
"status": "pending",
"device": {
"id": "string",
"serial_number": "string"
},
"decision_reason": null,
"decided_at": null,
"created_at": "string",
"updated_at": "string"
}
}
PATCH
/workspaces/${workspace_name}/package_requests/${id}.json
Updates a Package Request
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
id
|
Package Request ID | path | string |
Request Body
| Name | Format | Example | Required |
|---|---|---|---|
package_request
|
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X PATCH \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"package_request":{"decision":"approved"}}' \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests/${ID}.json"
Responses
200 Package Request Denied{
"package_request": {
"id": "string",
"package_name": "slack",
"package_type": "cask",
"tap": "homebrew/cask",
"status": "denied",
"device": {
"id": "string",
"serial_number": "string"
},
"decision_reason": null,
"decided_at": null,
"created_at": "string",
"updated_at": "string"
}
}
{
"error": "Invalid decision. Must be 'approved' or 'denied'"
}
GET
/workspaces/${workspace_name}/vulnerabilities.json
Returns a list of Vulnerabilities
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerabilities.json"
Responses
200 Vulnerabilities Found[
{
"vulnerabilities": [
{
"clean_id": "CVE-2024-2466",
"cvss_score": 6.5
},
{
"clean_id": "THIS-IS-AN-INVALID-CVE-001",
"cvss_score": 8.0
}
],
"formula": "curl",
"outdated_devices": [
"TC6R2DHVHG",
"1234567890"
],
"supported": false,
"homebrew_core_version": "8.11.0_1"
}
]
{
"message": "An error occurred when trying to view vulnerabilities",
"errors": [
"Vulnerabilities cannot be viewed in detail or mitigated on a Workbrew Free subscription."
]
}
GET
/workspaces/${workspace_name}/vulnerabilities.csv
Returns a list of Vulnerabilities
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerabilities.csv"
Responses
200 Vulnerabilities Foundvulnerabilities,formula,outdated_devices,supported,homebrew_core_version "CVE-2024-11053, CVE-2024-6197, CVE-2024-7264, CVE-2024-8096, CVE-2024-9681, THIS-IS-AN-INVALID-CVE-001 (8.0)",curl,"TC6R2DHVHG, 1234567890",false,8.11.1 "CVE-2024-10524, SOME-INVALID-CVE-002",wget,TC6R2DHVHG,false,1.25.0 SOME-INVALID-CVE-001,ack,TC6R2DHVHG,false,3.8.1 GHSA-rqgv-292v-5qgr (5.4),renovate,TC6R2DHVHG,false,39.125.0
GET
/workspaces/${workspace_name}/vulnerability_changes.json
Returns a list of vulnerability change events
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
status
|
Filter by status: detected or fixed | query | ||
query
|
Search query for formula name, version, vulnerability ID, or device | query | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerability_changes.json"
Responses
200 includes all vulnerability data fields[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"event_type": "vulnerability.detected",
"occurred_at": "2024-10-01T09:15:00Z",
"status": "detected",
"formula_name": "curl",
"formula_version": "8.7.0",
"vulnerability_id": "CVE-2024-2466"
}
]
GET
/workspaces/${workspace_name}/vulnerability_changes.csv
Returns vulnerability change events as CSV
Parameters
| Name | Description | Parameter Location | Type | Required |
|---|---|---|---|---|
workspace_name
|
Workspace slug | path | string | |
authorization
|
Bearer Authentication via User API key | header | string | |
X-Workbrew-API-Version
|
Workbrew API Version | header | string | |
status
|
Filter by status: detected or fixed | query | string | |
query
|
Search query | query | string | |
download
|
Set to 1 to force download as attachment | query | string |
Example cURL command
This is your Workbrew User API key.
Info
Your User API key is copied in all the examples here, so you can test any example right away. Only you can see this value.
curl -X GET \
-H "Authorization: Bearer " \
-H "X-workbrew-api-version: v0" \
-H "Accept: application/json" \
"https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerability_changes.csv"
Responses
200 CSV with status filterid,event_type,occurred_at,status,device_id,device_serial_number,formula_name,formula_version,vulnerability_id,cvss_severity,cvss_score 123e4567-e89b-12d3-a456-426614174000,vulnerability.detected,2024-10-01T09:15:00Z,detected,device-uuid,TC6R2DHVHG,curl,8.7.0,CVE-2024-2466,Medium,6.5