@startuml


:iExecCloudUser:
:DappUser:
:AppProvider:
:Sw:
:DatasetProvider:
:Ww:


cloud {
  [MyDapp]
  [IexecAPI]
}
component [MyDapp]
component [IexecAPI]
[IexecAPI] <|-right-  [MyDapp]



DappUser -down-> [MyDapp]: use


cloud {
  [TaskRequest]
}

component [TaskRequest]

MyDapp <-down-> [TaskRequest]: owner

iExecCloudUser -down-> [TaskRequest]: owner

cloud {
  [App]
}
component [App]
component [AppRepository]


cloud {
  [Dataset]
}
component [Dataset]
component [DatasetRepository]


cloud {
  [Ss]
}

component [Ss]
component [Sp]
component [Sr]

component [Wp]

cloud {
  [iExecHub]
}

cloud {
  [RLC Token]
}
component [iExecHub]
component [RLC Token]


[iExecHub] <-right-> [RLC Token]


AppProvider -up-> [App]: owner
AppProvider -down-> AppRepository: expose

DatasetProvider -up-> [Dataset]: owner
DatasetProvider -down-> DatasetRepository: expose

Sw -up-> [Ss]: owner


Sw -down-> [Sp]: control
Sw -down-> [Sr]: control and expose
Sr <-left-> [Sp]


[Dataset] <-up-> [iExecHub]
[App] <-up-> [iExecHub]

[iExecHub] <-down-> [Ss]
[iExecHub] <-up-> [TaskRequest]

[Sp] <-up-> [Ss]
[Wp] <-up-> [Ss]

[Ww] -right-> [Wp]: control

[Wp] <-right-> [Sp]


[Wp] <-up-> [AppRepository]

[Wp] <-up-> [DatasetRepository]



@enduml
