Skip to main content
GET/api/public/v1/extensions

extensions.list

Extensions in this workspace's library with their state (approved, update_pending, unreviewed, rejected, disabled), the version profiles load, a version waiting for review with the permissions it adds, and where each one is assigned.

Capability: profile.readMCP tool: extensions_list
View as Markdown

Parameters

This operation takes no input.

Examples

curl "https://browlix.com/api/public/v1/extensions" \
  -H "Authorization: Bearer $BROWLIX_API_KEY"

Response

200 with { data, correlation_id }.

FieldTypeAlways presentDescription
dataarray<object>Yes
data[].idstring (uuid)Yes
data[].namestringYes
data[].source"store" | "upload"Yes
data[].store_idstringNo
data[].chrome_idstringYesThe extension ID every machine loads it under
data[].key_generatedbooleanYesBrowlix created the key of an uploaded extension without one, so its ID stays the same everywhere
data[].state"approved" | "update_pending" | "unreviewed" | "rejected" | "disabled"Yes
data[].revisionintegerYes(min -9007199254740991, max 9007199254740991)
data[].active_versionobjectNoThe version profiles load
data[].active_version.idstring (uuid)Yes
data[].active_version.versionstringYes
data[].active_version.namestringYes
data[].active_version.manifest_versionintegerYes(min -9007199254740991, max 9007199254740991)
data[].active_version.sha256stringYesSHA-256 of the stored file; machines check it before loading
data[].active_version.size_bytesintegerYes(min -9007199254740991, max 9007199254740991)
data[].active_version.format"crx3" | "zip"Yes
data[].active_version.signature"verified" | "unsigned"Yesverified: every CRX3 proof checked by the server; unsigned: a plain ZIP
data[].active_version.store_signedbooleanYesAlso signed by the Chrome Web Store
data[].active_version.permissionsarray<string>Yes
data[].active_version.host_permissionsarray<string>YesSites it can read and change (host permissions and content-script matches)
data[].active_version.optional_permissionsarray<string>Yes
data[].active_version.licensestringNoLicence found in the package (SPDX id, or custom); absent when the package has no licence file
data[].active_version.same_version_changedbooleanYesA different file under a version number already in the library
data[].active_version.state"unreviewed" | "approved" | "rejected"Yes
data[].active_version.added_permissionsarray<string>NoPermissions beyond the version profiles load now (what an approval must acknowledge)
data[].active_version.removed_permissionsarray<string>No
data[].active_version.created_atstring (date-time)Yes
data[].active_version.reviewed_atstring (date-time)No
data[].pending_versionobjectNoThe newest version waiting for review
data[].pending_version.idstring (uuid)Yes
data[].pending_version.versionstringYes
data[].pending_version.namestringYes
data[].pending_version.manifest_versionintegerYes(min -9007199254740991, max 9007199254740991)
data[].pending_version.sha256stringYesSHA-256 of the stored file; machines check it before loading
data[].pending_version.size_bytesintegerYes(min -9007199254740991, max 9007199254740991)
data[].pending_version.format"crx3" | "zip"Yes
data[].pending_version.signature"verified" | "unsigned"Yesverified: every CRX3 proof checked by the server; unsigned: a plain ZIP
data[].pending_version.store_signedbooleanYesAlso signed by the Chrome Web Store
data[].pending_version.permissionsarray<string>Yes
data[].pending_version.host_permissionsarray<string>YesSites it can read and change (host permissions and content-script matches)
data[].pending_version.optional_permissionsarray<string>Yes
data[].pending_version.licensestringNoLicence found in the package (SPDX id, or custom); absent when the package has no licence file
data[].pending_version.same_version_changedbooleanYesA different file under a version number already in the library
data[].pending_version.state"unreviewed" | "approved" | "rejected"Yes
data[].pending_version.added_permissionsarray<string>NoPermissions beyond the version profiles load now (what an approval must acknowledge)
data[].pending_version.removed_permissionsarray<string>No
data[].pending_version.created_atstring (date-time)Yes
data[].pending_version.reviewed_atstring (date-time)No
data[].versions_countintegerYes(min -9007199254740991, max 9007199254740991)
data[].assignmentsarray<object>Yes
data[].assignments[].idstring (uuid)Yes
data[].assignments[].target_kind"workspace" | "group" | "profile"Yes
data[].assignments[].group_idstring (uuid)No
data[].assignments[].profile_idstring (uuid)No
data[].assignments[].target_namestringNo
data[].assignments[].hiddenbooleanNoThe group or profile is outside your group scope: it is not named
data[].assignments[].requiredbooleanYes
data[].profiles_reachedintegerYesActive profiles at least one assignment reaches (min -9007199254740991, max 9007199254740991)
data[].created_atstring (date-time)Yes
data[].updated_atstring (date-time)Yes
correlation_idstring (uuid)Yes
can_managebooleanNo
can_approvebooleanNo

New fields can appear at any time; ignore the ones you do not know.

Errors

CodeHTTPRetryable
UNAUTHENTICATED401No
FORBIDDEN403No
RATE_LIMITED429Yes
DEPENDENCY_UNAVAILABLE503Yes
UNKNOWN500No

Every error code and when to retry

All operations