Skip to content

Commit 8632a04

Browse files
committed
Improve Acrolinx score
1 parent 2c6c861 commit 8632a04

1 file changed

Lines changed: 28 additions & 28 deletions

File tree

docs/extend/develop/public-project.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Develop extensions for public projects
33
titleSuffix: Azure DevOps Services
4-
description: Learn how to develop Azure DevOps Services extensions that support non-member and public users in public projects.
4+
description: Learn how to develop Azure DevOps Services extensions that support nonmember and public users in public projects.
55
ms.subservice: azure-devops-ecosystem
66
ms.assetid: 3fa22433-150b-428c-8e10-3ffb4d832c20
77
ms.topic: how-to
@@ -17,31 +17,31 @@ ms.date: 04/03/2026
1717

1818
[!INCLUDE [version-eq-azure-devops](../../includes/version-eq-azure-devops.md)]
1919

20-
Azure DevOps Services supports both private and public projects. Private projects restrict access to authenticated users with explicit permissions. Public projects allow non-member users to view project contents in a read-only state.
20+
Azure DevOps Services supports both private and public projects. Private projects restrict access to authenticated users with explicit permissions. Public projects allow nonmember users to view project contents in a read-only state.
2121

22-
A non-member user can be either:
22+
A nonmember user can be either:
2323
- **Anonymous**: Not authenticated to Azure DevOps Services
2424
- **Public**: Authenticated to Azure DevOps Services but not a member of the organization
2525

26-
Non-member users see the same views as authenticated users, but Azure DevOps hides or disables non-public functionality such as settings, actions, and build queue operations.
26+
Nonmember users see the same views as authenticated users, but Azure DevOps hides or disables nonpublic functionality such as settings, actions, and build queue operations.
2727

2828
[!INCLUDE [allow-public-project-policy](../../organizations/projects/includes/allow-public-project-policy.md)]
2929

30-
## Extension visibility for non-members
30+
## Extension visibility for nonmembers
3131

32-
As an extension developer, you can make all or part of your extension available to non-member users. These users can only use your extension from within public projects. If you choose not to make your extension available to non-member users, you need no changes and the decision has no impact on members who use your extension within public projects.
32+
As an extension developer, you can make all or part of your extension available to nonmember users. These users can only use your extension from within public projects. If you choose not to make your extension available to nonmember users, you need no changes and the decision has no effect on members who use your extension within public projects.
3333

34-
Use this checklist to help decide if you should make your extension available to non-member users:
34+
Use this checklist to help decide if you should make your extension available to nonmember users:
3535

3636
> [!div class="checklist"]
3737
> * Your extension presents data that is relevant to non-member users
3838
> * Your extension contributes capabilities at the project level
3939
> * Your extension contributes to product areas that non-member users can access
40-
> * Your extension doesn't extend or rely on features that non-member users cannot access, such as the Extension Data Service or certain Azure DevOps Services REST APIs. For more information, see the [Limitations](#limitations) section.
40+
> * Your extension doesn't extend or rely on features that non-member users can't access, such as the Extension Data Service or certain Azure DevOps Services REST APIs. For more information, see the [Limitations](#limitations) section.
4141
4242
## Configure contribution visibility
4343

44-
By default, Azure DevOps shows contributions only to organization members. To give non-member users visibility to a contribution, set the `restrictedTo` attribute on that contribution. The value is a string array that lists which user types should see the contribution. The possible values include:
44+
By default, Azure DevOps shows contributions only to organization members. To give nonmember users visibility to a contribution, set the `restrictedTo` attribute on that contribution. The value is a string array that lists which user types should see the contribution. The possible values include:
4545

4646
* `member`: An authenticated user who is a member of the organization
4747
* `public`: An authenticated user who is **not** a member of the organization
@@ -123,24 +123,24 @@ You can also set the default visibility for all contributions in your extension
123123

124124
<a name="limitations"></a>
125125

126-
## Non-member limitations
126+
## Nonmember limitations
127127

128128
If you want to make some or all aspects of your contribution available to public users, consider the following limitations.
129129

130130
### VSS SDK method restrictions
131131

132-
The core SDK script, VSS.SDK.js, enables web extensions to communicate with the parent frame to perform operations like initializing communication and getting current user context information. The following VSS SDK methods do not support non-member users:
132+
The core SDK script, VSS.SDK.js, enables web extensions to communicate with the parent frame to perform operations like initializing communication and getting current user context information. The following VSS SDK methods don't support nonmember users:
133133

134134
* `VSS.getAccessToken()`
135135
* `VSS.getAppToken()`
136136

137137
### Extension data service limitations
138138

139-
Because the [extension data service](./data-storage.md) manages data that isn't scoped or secured to a project, non-member users cannot read or write any type of extension data.
139+
Because the [extension data service](./data-storage.md) manages data that isn't scoped or secured to a project, nonmember users can't read or write any type of extension data.
140140

141141
#### Handle data access errors
142142

143-
When the data service cannot access data due to permission limitations by the calling user, the promise returned from the call to `getValue` gets rejected. The error passed to the reject function has a name property, which helps you understand why the call failed to read or write data.
143+
When the data service can't access data due to permission limitations by the calling user, the promise returned from the call to `getValue` gets rejected. The error passed to the reject function has a name property, which helps you understand why the call failed to read or write data.
144144

145145
```javascript
146146
VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) {
@@ -156,9 +156,9 @@ VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) {
156156

157157
### REST API access
158158

159-
Azure DevOps Services provides a limited set of REST APIs to non-member users. These APIs include most organization-level and project-level APIs for features that non-member users can generally access. Consider this information when you decide whether to make your extension available to non-member users.
159+
Azure DevOps Services provides a limited set of REST APIs to nonmember users. These APIs include most organization-level and project-level APIs for features that nonmember users can generally access. Consider this information when you decide whether to make your extension available to nonmember users.
160160

161-
We recommend that you use version 5.0 and later APIs, as Azure DevOps makes certain APIs available to non-member users only starting with version 5.0.
161+
Use version 5.0 and later APIs, as Azure DevOps makes certain APIs available to nonmember users only starting with version 5.0.
162162

163163
#### Identity references
164164

@@ -170,7 +170,7 @@ Use permissions to decide whether to surface or enable a capability in your exte
170170

171171
#### Check build queue permissions
172172

173-
This example shows how to use the Security REST client to check whether the user has permissions to queue builds in the current project. By default, non-member users don't have this permission.
173+
This example shows how to use the Security REST client to check whether the user has permissions to queue builds in the current project. By default, nonmember users don't have this permission.
174174

175175
```javascript
176176
VSS.require(["VSS/Service", "VSS/security/RestClient"], function(VSS_Service, Security_RestClient) {
@@ -196,7 +196,7 @@ VSS.require(["VSS/Service", "VSS/security/RestClient"], function(VSS_Service, Se
196196

197197
## Dashboard widget requirements
198198

199-
Just like other types of contributions, the `restrictedTo` contribution property controls the visibility of dashboard widget contributions. For example, to make a widget visible to both non-member and member users:
199+
Just like other types of contributions, the `restrictedTo` contribution property controls the visibility of dashboard widget contributions. For example, to make a widget visible to both nonmember and member users:
200200

201201
```json
202202
{
@@ -222,9 +222,9 @@ Just like other types of contributions, the `restrictedTo` contribution property
222222

223223
### Configure widget settings
224224

225-
When you control widget visibility to non-member users, the dashboard framework also provides an optional, open-form storage mechanism for widget settings. Two mechanisms indicate whether widget settings are available for non-member users in public projects.
225+
When you control widget visibility to nonmember users, the dashboard framework also provides an optional, open-form storage mechanism for widget settings. Two mechanisms indicate whether widget settings are available for nonmember users in public projects.
226226

227-
A widget with configurable settings that is visible to non-member users **must** follow one of the following patterns. Not following these patterns blocks the widget from appearing to these users.
227+
A widget with configurable settings that's visible to nonmember users **must** follow one of the following patterns. Not following these patterns blocks the widget from appearing to these users.
228228

229229
### Project-specific settings (extension level)
230230

@@ -243,7 +243,7 @@ Set the widget contribution's `canStoreCrossProjectSettings` property to `false`
243243

244244
### Project-specific settings (instance level)
245245

246-
Individual widget instances can also indicate that their settings are project-specific and available to non-member users. When saving the settings, the widget should set `hasCrossProjectSettings` to `false` in the stringified JSON string:
246+
Individual widget instances can also indicate that their settings are project-specific and available to nonmember users. When you save the settings, the widget should set `hasCrossProjectSettings` to `false` in the stringified JSON string:
247247

248248
```json
249249
{
@@ -259,27 +259,27 @@ If your extension contributes a build or release task, you need no changes to us
259259

260260
## Work item tracking considerations
261261

262-
Extensions don't work for non-member users in the context of a public project without changes. This includes the work item form, other work item experiences, and interaction with work item tracking REST APIs.
262+
Extensions don't work for nonmember users in the context of a public project without changes, including the work item form, other work item experiences, and interaction with work item tracking REST APIs.
263263

264264
### Work item form limitations
265265

266-
Azure DevOps fails all work item updates or deletes for non-member users.
266+
Azure DevOps rejects all work item updates or deletes for nonmember users.
267267

268268
### Identity handling
269269

270-
In Azure DevOps Services REST API version 5.0 and later, the service returns identities as `IdentityRef` objects instead of strings. As described previously, Azure DevOps doesn't return certain fields, like `uniqueName`, in these objects if a non-member user makes the API call.
270+
In Azure DevOps Services REST API version 5.0 and later, the service returns identities as `IdentityRef` objects instead of strings. As described previously, Azure DevOps doesn't return certain fields, like `uniqueName`, in these objects if a nonmember user makes the API call.
271271

272272
### API scope restrictions
273273

274-
Extensions can invoke only project-scoped REST APIs when the current user isn't an organization member. Azure DevOps rejects any REST API calls not scoped to a project.
274+
Extensions can invoke only project-scoped REST APIs when the current user isn't an organization member. Azure DevOps rejects any REST API calls that aren't scoped to a project.
275275

276276
### Query limitations
277277

278-
Non-member users face the following limitations related to work item queries:
278+
Nonmember users face the following limitations related to work item queries:
279279

280-
* Non-member users can run known queries by ID or path only
281-
* Queries must be scoped to the current project. Azure DevOps excludes any work items that don't belong to the current project
282-
* Non-member users cannot create new queries or execute WIQL queries
280+
* Nonmember users can run known queries by ID or path only.
281+
* Queries must be scoped to the current project. Azure DevOps excludes any work items that don't belong to the current project.
282+
* Nonmember users can't create new queries or execute WIQL queries.
283283

284284
## Related content
285285

0 commit comments

Comments
 (0)