@startuml

autonumber
header: Regulated Area extension
title: Validating Contact where consumer is not a member

box "Consumer Peer"
  participant "Manager" as managerConsumerPeer
end box
box "Provider Peer"
  participant "Manager" as managerProviderPeer
end box
box "Membership Administrator A"
    participant "Manager" as managerMembershipAdministratorA
end box

group Provider Peer membership registration
managerProviderPeer -> managerProviderPeer: Create Contract with a  __PeerRegistrationGrant__
managerProviderPeer -> managerProviderPeer: Add accept signature
managerProviderPeer -> managerMembershipAdministratorA: Submit Contract
managerMembershipAdministratorA -> managerMembershipAdministratorA: Add accept signature
managerMembershipAdministratorA ->  managerProviderPeer: Accept Contract
end group

group Connecting to a Service
managerConsumerPeer -> managerProviderPeer: Submit Contract with a  __ServiceConnectionGrant__\nwith `membership_administrator_peer_id`\nand `regulated_area`
managerProviderPeer -> managerProviderPeer: verify  the value of `regulated_area`\nis the same as the Regulated Area of the Service
managerProviderPeer -> managerMembershipAdministratorA: get members for `regulated_area`
managerMembershipAdministratorA --> managerProviderPeer: members list
managerProviderPeer -> managerProviderPeer: "Consumer Peer" is NOT a member, add Reject Signature
managerProviderPeer -> managerConsumerPeer: Submit Contract with signature
end group

skinparam sequenceBoxBorderColor #transparent
skinparam boxPadding 50
hide footbox
@enduml
