...
Object Changes
Access Requirement: shortDescription description → name
UI only or do we need a migration plan? We would need to
Update Synapse Web Client
Update Synapse React Client
Update all portals and SWC to use new versions of React Client
Likely cannot enforce uniqueness, but maybe we could warn when a new AR name collides with an existing one in the UI.
Enforce non-null/non-empty? Null/empty names could take on the requirement ID as a name.
...
Endpoint | Parameters/Object | Returns | Notes/Questions | Stories | |||
---|---|---|---|---|---|---|---|
??? | Need a way to identify the caller as a reviewer so we can determine if we should show the navbar item in the web client. This could be
| As a reviewer, I need an intuitive way to access the ACT/Reviewer dashboard so I can review pending requests, troubleshoot user access, and perform other data access tasks. | |||||
POST /accessRequirement/search | AccessRequirementSearchRequest | AccessRequirementSearchResponse | For all services, when to allow array filters? No auth required; ARs are public info Special behavior if the reviewerID is the ACT? Is this good enough for search? | As an ACT member, I want to be able to query for existing access requirements so I can inspect or modify them without having to navigate to a specific entity controlled by the AR. As an ACT member, I want to be able to find an AR ID using the AR name so that I can filter other queries by AR without knowing the AR ID. | |||
POST /dataAccessSubmission/search | DataAccessSubmissionSearchRequest | DataAccessSubmissionSearchResponse | Auth required ACT member will see all submissions. If the caller is not ACT, they will only see submissions on ARs for which they have the “REVIEW_SUBMISSIONS” permission. What to do about https://docs.synapse.org/rest/GET/dataAccessSubmission/openSubmissions.html ? Deprecate? | See https://sagebionetworks.jira.com/wiki/spaces/~557058fa14d697877047ec802a3e459a04898e/pages/edit-v2/2617442828?draftShareId=316dfb35-cc6b-4dc2-9e97-c6a4bf025f02 – need to refine This will support both the “Submissions” tab for all reviewers and the “Access History” tab for ACT | |||
POST /accessApproval/historysearch | AccessApprovalHistoryRequestAccessApprovalSearchRequest | AccessApprovalHistoryResponse | Is POST /accessApproval/group enough? Only difference is no history and sort, but sort could probably be added to that service.AccessApprovalSearchResponse | Status by submitter - (submitter, AR ID) is primary key | As an ACT user, I want to see the entire history of all Access Approvals so I can understand why a user may have gained or lost access on an access requirement. | GET/POST /accessRequirement/{id}/bundle | We could also just do a service to get the related projects for an AR, since a service already exists for fetching the ACL |
Objects
AccessRequirementSearchResultItem
...
Objects
AccessRequirementSearchRequest
Code Block | ||
---|---|---|
| ||
{ "title":"Access Requirement Search Result ItemRequest", "description":"Access Requirement and related objectsDescribes the parameters for searching Access Requirements", "properties": { "accessRequirementIdnameContains":{ "type": "string", }, "description":"A substring used to "filter Access Requirements by name": { }, "type": "string" "relatedProjectId":{ } "reviewerIdstype":{"string", // array of principal ids }, "relatedProjectIds":{"description":"A synID used to filter Access Requirements to retrieve only those that have been applied within a particular project." }, "typereviewerId":{ "array", "itemstype":"number", { "description":"A principal ID "type": "string" // synIds }used to filter Access Requirements to retrieve only those with the user/ or team on the ACL." }, "modifiedOnnextPageToken": { // ..."type": "string", "description": "A token used to get the next page of a particular search query." } } } |
AccessRequirementSearchRequestAccessRequirementSearchResult
Code Block | ||
---|---|---|
| ||
{ "title$id":"Access "org.sagebionetworks.repo.model.AccessRequirementSearchResult" "title":"Access Requirement Search Result RequestItem", "description":"DescribesResult theitem parametersof foran searchingAccess AccessRequirement Requirementssearch", "properties": { "nameContainsaccessRequirementId":{ "type": "string", }, "descriptionname":"A substring{ used to filter Access Requirements by name" "type": "string" }, "relatedProjectIdreviewerIds":{ "type": "stringarray", "description": "APrincipal IDs synIDof usedthe toreviewers filterof Accessthe RequirementsAR." to retrieve only those that have been applied within a particular project."items": { }, "reviewerIdtype":{ "number" "type":"number",} }, "description":"A principal ID used to filter"relatedProjectIds":{ Access Requirements to retrieve only those with the user/ or team on the ACL." "type": "array", }, "nextPageTokenitems": { "type": "string", "description": "A token used to get the next page of a particular search query.} }, "modifiedOn": { "type": "string", "format":"date-time" } } } |
AccessRequirementSearchResponse
Code Block | ||
---|---|---|
| ||
{ "title":"Access Requirement Search Response", "description":"Describes the response object for an Access Requirement search", "properties": { "results":{ "type":"array", "items": { "$ref": "org.sagebionetworks.repo.model.AccessRequirementBundleAccessRequirementSearchResult" } "description":"The results of an access requirement search" }, } } |
DataAccessSubmissionSearchRequest
Code Block | ||
---|---|---|
| ||
{ "titlenextPageToken":"Access Requirement{ Search Request", "description":"Describes the parameters for searching Data Access Submissions"type": "string", "properties": { "accessRequirementIddescription": {"A token used to get the next page of a particular search "type":"string", query." } } } |
DataAccessSubmissionSearchRequest
Code Block | ||
---|---|---|
| ||
{ "descriptiontitle":"Filter submissions by their Access Requirement Search IDRequest", "description":"Describes the parameters for },searching Data Access Submissions", "accessorIdproperties": { "accessRequirementId": { "type":"string", "description":"A principal ID used to filter "Filter submissions by accessorstheir onAccess theRequirement submission.ID" }, "reviewerIdaccessorId": { "type":"numberstring", "description":"A principal ID used to filter Accesssubmissions Requirementsby toaccessors retrieveon onlythe thosesubmission." with the specified user or team on the ACL."}, },"reviewerFilter": { // "sort": {TODO: check this field with stakeholders "type": "enumerationstring", "valuesenum": ["CREATED_ON_ASC", "CREATED_ON_DESC"], "default": "CREATEDACT_ON_DESCONLY", }, "DELEGATED_ONLY" "nextPageToken": { ], "typerequired": "string",false }, "descriptionreviewerId": { "A token used to get the next page of a particular search query." "type":"number", } } } |
DataAccessSubmissionSearchResponse
Code Block | ||
---|---|---|
| ||
{ "title":"Access Requirement Search Response", "description":"Describes the parameters for searching Access Requirements","description":"A principal ID used to filter Access Requirements to retrieve only those with the specified user or team on the ACL." "properties": { }, "resultssort": { "type": "arrayobject", "itemsproperties": { "field": { "$ref": "org.sagebionetworks.repo.model.dataaccess.Submission" "type": "string", }, "descriptionconst": "CREATED_ON"Submissions matching the search parameters" }, "nextPageTokendirection": { "type$ref": "string",org.sagebionetworks.repo.model.SortDirection" } "description": "A token used to get the next page of} a particular search query." }, } } } |
AccessApprovalHistoryRequest
Code Block | ||
---|---|---|
| ||
"nextPageToken": { "title":"Access Approval History Request", "descriptiontype": "Describesstring", the parameters for searching through the history of Access Approvals for a particular accessor", "properties"description": {"A token used to get the next page of "accessorId": { a particular search query." } "type":"number", } } |
DataAccessSubmissionSearchResult
Code Block | ||
---|---|---|
| ||
{ "$id": "org.sagebionetworks.repo.model.dataaccess.DataAccessSubmissionSearchResult" "descriptiontitle": "TheData principalAccess IDSubmission ofSearch theResult accessor.Item", "description": "", "requiredproperties": { true },"submissionId": { "accessRequirementId": { "type": "numberstring", }, "description": "The access requirement for which access approvals should be shown.", "accessRequirementId":{ "requiredtype": false"string" }, "sortaccessRequirementName": { "type": "enumerationstring", }, "values": ["MODIFIED_ON_ASC", "MODIFIED_ON_DESC", "EXPIRED_ON_ASC", "EXPIRED_ON_DESC"], "reviewerIds":{ "type": "array" }, "defaultsubmitterId": "MODIFIED_ON_DESC { "description": "The principal ID of the person who created the submission." "type": "number" }, "accessorIds": { "type": "array", "description": "The principal IDs of the users who are accessors on the submission", "items": { "type": "number" } }, "state": { "$ref": "org.sagebionetworks.repo.model.dataaccess.SubmissionState" }, "createdOn": { "type": "string", "format":"date-time" } } } |
DataAccessSubmissionSearchResponse
Code Block | ||
---|---|---|
| ||
{
"title":"Access Requirement Search Response",
"description":"Describes the parameters for searching Access Requirements",
"properties": {
"results": {
"type":"array",
"items": {
"$ref": "org.sagebionetworks.repo.model.dataaccess.DataAccessSubmissionSearchResult"
},
"description":"Submissions matching the search parameters"
},
"nextPageToken": {
"type": "string",
"description": "A token used to get the next page of a particular search query."
}
}
} |
AccessApprovalSearchRequest
Code Block | ||
---|---|---|
| ||
{
"title":"Access Approval History Request",
"description":"Describes the parameters for searching through the history of Access Approvals for a particular accessor",
"properties": {
"accessorId": {
"type":"number",
"description": "The principal ID of the accessor.",
"required": true
},
"accessRequirementId": {
"type": "number",
"description": "The access requirement for which access approvals should be shown.",
"required": false
},
"sort": {
"type": "enumeration",
"values": ["MODIFIED_ON_ASC", "MODIFIED_ON_DESC", "EXPIRED_ON_ASC", "EXPIRED_ON_DESC"],
"default": "MODIFIED_ON_DESC"
},
"nextPageToken": {
"type": "string",
"description": "A token used to get the next page of a particular search query."
}
}
} |
AccessApprovalSearchResult
Code Block | ||
---|---|---|
| ||
{ "$id": "org.sagebionetworks.repo.model.AccessApprovalSearchResult" "title":"Access Approval Search Result Item", "description": "The result item in an Access Approval search", "properties": { "id": { "description": "The ID of the Access Approval", "type": "string" }, "requirementId":{ "type": "string" }, "requirementName": { "type": "string" }, "reviewerIds":{ "type": "array" }, "submitterId": { "description": "The principal ID of the person who created the submission." "type": "number" }, "state": { "$ref": "org.sagebionetworks.repo.model.ApprovalState" }, "modifiedOn": { "type": "string", "format":"date-time" }, "nextPageTokenexpiredOn": { "type": "string", "format": "date-time", "description": "AThe tokendate usedthis toobject getwill the next page of a particular search query." be expired.", "title": "Expired On", "transient": true } } } |
AccessApprovalHistoryResponseAccessApprovalSearchResponse
Code Block | ||
---|---|---|
| ||
{ "title":"Access Approval HistorySearch Response", "description":"The results of an Access Approval History Request", "properties": { "results": { "type":"array", "items": { "$ref": "org.sagebionetworks.repo.model.AccessApprovalAccessApprovalSearchResult" }, "description":"The matching historyAccess ofApproval Accessinformation Approvalscorresponding matchingto the search parameters" }, "nextPageToken": { "type": "string", "description": "A token used to get the next page of a particular search query." } } } |
Deprecations
...