Project management
Project Service¶
The main entity managed by the Project Service is a Project - a logical grouping of Datasets. One Dataset always belongs to exactly one Project, User , which creates the Project is assigned as an owner of the Project. Project owners can add other users (of the same Tenant) to the Project with a specific Role (Owner, Contributor, Reader).
Any request for data occurs in the context of a Project. The user's role in the Project and the type of Operation the user is trying to perform (create, read, update, delete, ...) are factors that are evaluated when the request is either denied or allowed to proceed.
More information about roles and privileges .
The service web API provides end points to manage Project entities, user roles on a Project, Relevant dataset end points are also provided through the Project end points.
All project related methods returning Project structure as output share common ProjectOutput definition
A Project has an UpdatedAt
property which indicates the time a Project was touched (by e.g., adding a member or changing the project name).
Basic Project structure¶
{
"name": "Project 1",
"description": "Project 1 description",
"accessLevel": "Shared",
"members": [
{
"userId": "862281a7-2e66-4c76-af8d-29c82c723b4b",
"role": "Owner"
}
],
"id": "6b4c70c4-ef2f-4b39-acb0-1e4b24313e8e",
"createdAt": "2019-01-09T08:02:22.1070465",
"createdBy": "862281a7-2e66-4c76-af8d-29c82c723b4b",
"updatedAt": "2019-01-09T08:02:22.1070465",
"updatedBy": "862281a7-2e66-4c76-af8d-29c82c723b4b"
}
Categorization members (optional)¶
"Properties": {
"Variable": "Value"
},
"Metadata": // any additional information
{
"key1": "value1",
}
Usage scenarios¶
Getting list of projects¶
GET/api/project/list
Returns all projects for the customer (ArrayOf(ProjectOutput)
). There is no projection or filtering applied. The result will contain full project information including the list of members.
Create Project¶
POST/api/project
Body¶
{
"Name": "Project 2",
"AccessLevel": "Confidential",
"Description": "Test Project 2",
"Metadata": {},
"Settings": {},
"ProjectMembers": []
}
Update Project¶
PUT/api/project
When updating a Project clients must include RowVersion property. This helps to resolve potential conflicts when multiple users are trying to update one Project at the same time. This feature was introduced with web api version 2.
Limitations and desired enhancements¶
- There is no fixed "schema" for the
Metadata
andSettings
properties of a Project so clients must develop their own conventions and write code that can handle situations when the conventions are broken by other clients.