[[appendix_role_json]] === Appendix C: Roles Extension for Projects (Proposed) WARNING: The following is a proposal, and has no plans for implementation. The roles extension is a proposed mechanism for associating projects with access rules and responsibilities. Role properties are recommendations for how a `p4 protect` table could be organized. Values in role properties are structured to contain columns of the protections table, except for host configuration. Note that a "role service" should be developed to handle actually implementing the roles. No service is currently defined, since it would require super user access to updating the protections table. The workflow would likely require a user to "propose" a project change, to be reviewed and validated by a super user. The extension ID for roles in projects is currently `roles`. In some cases you may need a MIME-style content type. The content type for the JSON described below is `application/vnd.perforce.project.roles.v1+json`. This content type may be used as a revision attributes, to assist in describing the data stored at a particular revision. ==== Role properties The role properties document has two top level properties, each referencing a role property grouping. [cols="2*", options="header"] |=== | Property | Description | `contentType` | `application/vnd.perforce.project.roles.v1+json` | `metadata` | A role property group indicating access to project metadata files. | `files` | A role property group indicating access to project files. |=== ===== Role Property Group Each role property grouping maps an access level to an array of users or groups. Each access level could be a permission level in link:http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_protect.html[p4 protect table]. We recommend only using `read` or `write`. [cols="2*", options="header"] |=== | Property | Description | permission level, e.g., `read`, or `write` | An array of Role Principal objects |=== ===== Role Principal Each role principal can either be a `user` or a `group` with a particular ID. [cols="2*", options="header"] |=== | Property | Description | `type` | Either `user` or `group` | `id` | Either the User ID or Group ID. |===
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 15098 | tjuricek |
Revised project services to GET-only forms. With Helix Sync revising to integrate purely with Helix Cloud, this is the only thing we can reasonably define. |
||
#1 | 15090 | tjuricek |
Update _proposed_ API for project services. This is *very likely* to change, and will not be implemented until reviewed. |