@startuml
actor "User" order 10
participant "GMS" as AAS order 30
participant "Client" order 20
participant "HQ\nData\nAccess\nService" as SDAS order 40
participant "Query Service\n(TAP)" as DIS order 50
participant "Group\nMembership\nService" as GMS order 55
database "CAOM\nDatabase" as DIB order 60
database "TMT Archive" as store order 70
group authenticate
User -> Client : provide login\ninformation
Client -> AAS : login request
AAS -> Client: return token
end
group search
Client -> SDAS : submit request using search criteria\nwith token
SDAS -> DIS : submit request using\nsearch criteria and token
DIS -> DIB : form SQL request\nand query DB
DIS -> SDAS: return URIs \nof matching file(s)
SDAS -> Client : return list of matching file(s)
end
User <-> Client : Choose file(s) from\nlist (if necessary)
group retrieve
Client -> SDAS : request file(s) using location URI\nof selected file(s) and token
alt proprietary period for file expired
SDAS <-> store : retrieve file(s)
SDAS -> SDAS: package files (if necessary)
SDAS -> Client : return file/package
else propietary period for file has not expired
SDAS -> GMS: get groups\nuser is member of
SDAS -> DIS: get list of groups with access
DIS -> DIB: form SQL request and query DB
DIB -> DIS: return list of groups
alt user is member of a group with access
SDAS <-> store : retrieve file(s)
SDAS -> SDAS: package files (if necessary)
SDAS -> Client : return file/package
else user is not member of a group with access
SDAS -> Client : Access Denied error
end
end
end
@enduml