Terminate Relationships
In order for two Identities to communicate with each other and exchange data, they must establish a Relationship between them. If an active Relationship to another Identity is no longer wanted, it can be terminated.
Terminating an active Relationship initially blocks regular communication for both Identities, but does not yet delete any Relationship data. The only possible communication between them is to request the reactivation of the terminated Relationship, which can be done by both Identities. Accepting the reactivation request returns the Relationship to an active status.
An already terminated Relationship can be decomposed to delete the Relationship and all data transmitted during the Relationship from the Connector or the App, respectively. It is then no longer possible to reactivate the Relationship. Getting to an active Relationship again means starting from scratch.
Terminate an active Relationship
Terminate an active Relationship with the use case Terminate Relationship with the relationshipId
as input. The status
of the Relationship is changed to "Terminated"
. You receive a transport.relationshipChanged
event, and the peer as well if they use a Connector. Then no Messages can be sent from either side, this includes Requests, Notifications and sharing Attributes. The peer cannot prevent the termination.
Reactivate a terminated Relationship
At any time, you or your peer can request the reactivation of the terminated Relationship with the use case Request Relationship reactivation.
If your peer requests the reactivation, you will receive a transport.relationshipReactivationRequested
event in addition to a transport.relationshipChanged
event, which the peer also receives if they use a Connector.
If you then wish to return the Relationship to an active status, you accept the reactivation with the use case Accept Relationship reactivation.
If you want to keep the Relationship terminated, you reject the reactivation with the use case Reject Relationship reactivation.
If you have requested the reactivation and changed your mind, you revoke it with the use case Revoke Relationship reactivation.
Each use case has the relationshipId
as input. Only accepting the reactivation changes the status
of the Relationship, namely from "Terminated"
to "Active"
. Requesting, rejecting or revoking the reactivation don’t change its status
. However, they still are recorded as an AuditLogEntry in the auditLog
of the Relationship. Regardless of whether the reactivation is accepted, rejected or revoked, you receive a transport.relationshipReactivationCompleted
event in addition to a transport.relationshipChanged
event and the peer as well if they use a Connector.
Decompose a Relationship
Decomposing a Relationship deletes from your Connector
- the Relationship
- the peer’s RelationshipTemplates
- the Relationship’s RelationshipTemplate if it was single use (its
maxNumberOfAllocations
is 1) or owned by the peer - for a new Relationship you will have to exchange a RelationshipTemplate again - shared Attributes, Notifications, Requests (in each case both sent and received)
- sent and received Messages with one exception: If you have sent a Message to multiple recipients, the Message is not deleted but the peer’s address is replaced with a pseudonym. The pseudonym is the same for every peer.
- furthermore, Tokens and AttributeListeners.
The use case is Decompose Relationship, which takes the relationshipId
as input. For the peer, the Relationship is not deleted, but its status
now is "DeletionProposed"
.
If the peer uses a Connector, they receive a transport.relationshipChanged
event. You receive a transport.relationshipDecomposedBySelf
event. The peer is expected to follow suit once the shared data is no longer needed. Only after both Identities involved in the Relationship have decomposed it, the Relationship itself and data transmitted during it are deleted from the Backbone. To get to an active Relationship again after one involved Identity has decomposed, the other Identity must decompose as well. After that, the two have to start from scratch to establish a Relationship, as reactivation of the former Relationship is no longer possible.