To use context parameters in a descriptor the corresponding scopes should be provided. If the required scopes are not specified the context parameters won’t be replaced.
Please refer to the table to see required scopes for each context parameter:
| Context parameter | Required scope | Example |
|---|---|---|
user | account |
|
target_user | account |
|
workspace | account |
|
principal | account |
|
repository | repository |
|
branch | repository |
|
commit | repository |
|
file | repository |
|
directory | repository |
|
pullrequest | pullrequest |
|
snippet | snippet |
|
issue | issue |
|
Certain conditions will also require an additional scope according to the table bellow:
| Condition key | Required scope |
|---|---|
has_account_permission | account |
has_permission | repository |
has_workspace_permission | account |
has_issue_permission | repository |
meets_access_requirements | account |
property_exists | repository |
has_file | repository |
scm | repository |
user_has_premium | account |
has_addon | account |
flag_is_active | account |
has_feature | account |
In this example, we used context parameters repository.uuid and pullrequest.id.
According to the table, we need to provide repository and pullrequest scopes
to populate context data in the url.
1 2{ "key": "example-app", "name": "Example App", "description": "An example app for Bitbucket", "baseUrl": "https://www.example.com", "modules": { "webItems": [ { "url": "/selectTarget?repository={repository.uuid}&pr={pullrequest.id}", "location": "org.bitbucket.pullrequest.summary.actions", "key": "webItem-example", "name": { "value": "WebItem example" } } ] }, "scopes": ["repository", "pullrequest"] }
NOTE: In this example you can also provide pullrequest scope only as it implies repository.
In the url below, we reference several context objects in one context parameter - repository, app and user.
app doesn't require a scope, so we need to add just repository and account scopes to the descriptor.
1 2{ "key": "example-app", "name": "Example App", "description": "An example app for Bitbucket", "baseUrl": "https://www.example.com", "modules": { "webItems": [ { "url": "/url?enabled=repository.properties.get(attribute=app.key).enabled.get(attribute=user.uuid)", "location": "org.bitbucket.pullrequest.summary.actions", "key": "webItem-example", "name": { "value": "WebItem example" } } ] }, "scopes": ["repository", "account"] }
Context parameters used in a condition also requires a scope.
In this example, we used repository.owner.uuid as a condition target and user.uuid as a condition value.
So we should add repository and account scopes to the descriptor.
1 2{ "key": "example-app", "name": "Example App", "description": "An example app for Bitbucket", "baseUrl": "https://www.example.com", "modules": { "webItems": [ { "conditions": [ { "condition": "equals", "target": "repository.owner.uuid", "params": { "value": { "eval": "user.uuid" } } } ] } ] }, "scopes": ["repository", "account"] }
In this example, we access a repository context data and use has_account_permission condition so
required scopes are repository and account
1 2{ "key": "example-app", "name": "Example App", "description": "An example app for Bitbucket", "baseUrl": "https://www.example.com", "modules": { "webItems": [ { "url": "/url?is_admin={repository.owner.has_account_permission(permission=\"admin\")}", "location": "org.bitbucket.pullrequest.summary.actions", "key": "webItem-example", "name": { "value": "WebItem example" } } ] }, "scopes": ["repository", "account"] }
In this example we use multiple conditions:
equals condition requires repository and account scopes to access context data.user_has_premium condition requires account scope.has_addon condition requires account scope to evaluate condition and repository scope to substitute targetAs a result, repository and account scopes should be provided in the scope section.
1 2{ "key": "example-app", "name": "Example App", "description": "An example app for Bitbucket", "baseUrl": "https://www.example.com", "modules": { "webItems": [ { "conditions": [ { "condition": "equals", "target": "repository.owner.uuid", "params": { "value": { "eval": "user.uuid" } } }, { "condition": "user_has_premium" }, { "condition": "has_addon", "target": "repository.owner", "params": { "key": "my-addon" }, "invert": true } ] } ] }, "scopes": ["repository", "account"] }
Rate this page: