R3 Delivery Service - Add support of R3 data IDs
Background:
Historically in R2 there was a difference between OSDU and SLB record formats. SLB used attribute id
as an identifier of a Record, where OSDU used data.ResourceID
as an identifier of the record. Format of these IDs is different.
Because data.ResourceID
is not native
for Storage service and for SLB, to get information about the record, we had to do full scan of records using Search service:
org.opengroup.osdu.delivery.service.SearchServiceImpl:
protected void setQueryKind(QueryRequest query) {
// Query across all Kinds
query.setKind("*:*:*:*.*.*");
...
private String generateSrnQueryString(List<String> ids) {
String QUERY_SEARCH_ATTRIBUTE = "data.ResourceID";
This implementation was not very optimal from performance standpoint.
In R3, OSDU community merged data.ResourceID
and id
and start using only id
as identifier of the record:
R3 File record schema
This allows us to use Storage API: GET /records/{id}
to retrieve record information, instead of using Search API.
Technical details:
- To keep backward compatibility with R2 schema, we will implement a new endpoint
/getDeliveryInstructions
:
RQ:
{
"ids": [
"string"
]
}
RS:
{
"processed": {},
"unprocessed": [
"string"
]
}
- Storage service API should be used to get information about records
- Mark
GetFileSignedUrl
as deprecated