@startuml ../images/01_seq.png title Get Object Retrieve the object "A" end title actor "Client" as client << Application >> participant "Coordinating\nNode" as CN << Node >> participant "Node" as MN << Node >> client -> CN: resolve(A) activate client activate CN CN -> client: object locations deactivate CN client -> client: choose location client -> MN: get(A) activate MN MN -> MN: log event MN -> client: bytes deactivate MN deactivate client 'participant "Client" as app_client << Application >> 'participant "Read API" as n_crud << Node >> 'participant "Authorization API" as n_authorize << Node >> 'participant "Object Store" as n_ostore << Node >> 'app_client -> n_crud: get(session, PID) 'n_crud -> n_authorize: isAuthorized(session, PID, READ) 'n_crud <- n_authorize: True, False, Err.NotFound 'alt NotFound ' app_client <- n_crud: Err.NotFound 'else False ' app_client <- n_crud: Err.NotAuthorized 'else True ' n_crud -> n_ostore: read(PID) ' n_crud <- n_ostore: bytes ' n_crud --> n_crud: log(PID, READ) ' app_client <- n_crud: bytes 'end @enduml