...
We can create a new Cost Allocation service in Synapse that can be used by members of a "Synapse Cost Allocation Team", a bootstrapped team with users that have the authority to manage these cost allocations.
The members Cost allocations are uniquely identified by their name and can be created by a member of the Cost Allocation Team can create new cost allocations with a descriptive name (e.g. ampad, nih-r01-12345) that matches how costs should be broken down in Synapse. When a new cost allocation being created, project sizes can be calculated by group to determine that cost allocation's total impact.After a cost allocation is created, a project can be assigned to itby assigning one to a project. Cost allocations can have many projects, but a project can be assigned to at most one cost allocation. When a project is assigned to a cost allocation, the underlying files associated with that project (that is, the file handles pointed to used by all versions of all file entities in a project) will be included in the total cost of that cost allocation.
All requests can only be made members of the Synapse Cost Allocation Team
Verb | URI | Request body | Response body | Notes | GET | /costAllocation | None | CostAllocationPage body: Array<CostAllocation> nextPageToken: String | Lists all existing CostAllocations|
---|---|---|---|---|---|---|---|---|---|
POST | /costAllocation/report/csv/async/start | CostAllocationReportRequest numberOfResults: Long allocated: Booleantype: Enum (COST_ALLOCATIONS, ALLOCATED_PROJECTS, UNALLOCATED_PROJECTS) | AsyncJobId | Initiates a job to create a CSV report for the sizes of cost allocations or unallocated projects in Synapse. The results will contain the top <numberOfResults> cost allocations/unallocated projects by descending size.If allocated is true, the report will include the largest cost allocations. If allocated is false, the report will include type describes the type of report will be generated. COST_ALLOCATIONS will generate a report of the largest cost allocations, ALLOCATED_PROJECTS will generate a report of the largest projects that are assigned to cost allocations, and UNALLOCATED_PROJECTS will generate a report of the largest projects that are not currently assigned to a cost allocation. This request can only be made by a member of the Synapse Cost Allocation Team allocations. See examples below. | |||||
GET | /costAllocation/report/csv/async/get/{token} | None | CostAllocationReportResult: resultsFileHandleId: String timestamp: Date | Get an object containing a file handle that points to a Cost Allocation Report CSV | |||||
POST | /entity/{entityId}/costAllocation | name: String | CostAllocation id: String name: String bucket: String projects: Array<String> eTag: String createdBy: Long createdOn: Date | Associates a project with a cost allocation. If the cost allocation doesn't exist, it creates a new one. If the project is currently associated with a different cost allocation, it will be replaced with a new one. Name is case-insensitive (will be coerced to lowercase) and can include alphanumeric, "-", ".", and "_". | |||||
GET | /entity/{entityId}/costAllocation | None | CostAllocation | Gets the cost allocation for a specific project. This request can only be made by a member of the Synapse Cost Allocation Team | |||||
DELETE | /entity/{entityId}/costAllocation | None | None | Removes the cost allocation tied to a project. The contents of the project that are in the cost allocation storage location will be moved to the default Synapse storage. After all of the contents have been moved, the project is removed from the cost allocation. |
Sample Reports
CostAllocation report (default, allocated=TRUE)Type: COST_ALLOCATION
Cost Allocation ID | Name | Size (B) | Proportion of Synapse Storage |
---|---|---|---|
18 |
amp-ad | 424483013985391 | 0.6534 |
1 |
grant123 | 53579813875383 | 0.0824 |
4 |
smith_projects |
31482472428417 | 0.0414 | ||
... | ... | ... | ... |
0 | unallocated | 89573285798719 | 0.2139 |
Unallocated projects report (allocated=FALSE)
Type: ALLOCATED_PROJECTS
Project ID | Name | Size (B) | Proportion of Synapse Storage |
---|---|---|---|
syn154314 | Project Onc-RNA | 124483013985391 | 0.1244 |
syn428582 | Super Cool Data | 74579813875383 | 0.0644 |
syn523913 | Smith Lab Repository 1 | 31482472428417 | 0.0311 |
... | ... | ... | ... |
0 | unallocated | 424483013985391 | 0.8538 |
Type: UNALLOCATED_PROJECTS
Project ID | Name | Size (B) | Proportion of Synapse Storage |
---|---|---|---|
syn123456 | Cool Project 123 | 14483013985391 | 0.12441829 |
syn999999 | Research Group Data | 75798138753838579813875383 | 0.06441041 |
syn583725 | Smith Lab Repository 2 | 31482472428415148247242841 | 0.03110612 |
... | ... | ... | ... |
0 | allocated | 424483013985391 | 0.85387538 |
Implementation Details
Note |
---|
This section is unrelated to the API. Feel free to ignore it if it is not within your scope of concern. |
...