Event Data Description
transport.messageReceived Message This event is triggered when a Message is received during synchonization.
transport.messageSent Message This event is triggered whenever a Message is sent.
transport.relationshipChanged Relationship This event is triggered when a Relationship has changed. This can be due to one of the following cases:
• you create a Relationship
• you accept, reject or revoke a Relationship Change
• a Relationship Change is received during synchronization

Type definitions

Message

interface Message {
    id: string;
    content: unknown;
    createdBy: string;
    createdByDevice: string;
    recipients: Recipient[];
    relationshipIds: string[];
    createdAt: string;
    attachments: string[];
}

interface Recipient {
    address: string;
    receivedAt?: string;
    receivedByDevice?: string;
}

Relationship

interface Relationship {
    id: string;
    template: RelationshipTemplate;
    status: RelationshipStatus;
    peer: string;
    peerIdentity: Identity;
    changes: RelationshipChange[];
    lastMessageSentAt?: string;
    lastMessageReceivedAt?: string;
}

interface RelationshipTemplate {
    id: string;
    isOwn: boolean;
    createdBy: string;
    createdByDevice: string;
    createdAt: string;
    content: unknown;
    expiresAt?: string;
    maxNumberOfRelationships?: number;
}

enum RelationshipStatus {
    Pending = "Pending",
    Active = "Active",
    Rejected = "Rejected",
    Revoked = "Revoked",
    Terminating = "Terminating",
    Terminated = "Terminated"
}

interface Identity {
    address: string;
    publicKey: string;
    realm: string;
}

interface RelationshipChange {
    id: string;
    request: RelationshipChangeRequest;
    status: RelationshipChangeStatus;
    type: RelationshipChangeType;
    response?: RelationshipChangeResponse;
}

interface RelationshipChangeRequest {
    createdBy: string;
    createdByDevice: string;
    createdAt: string;
    content?: unknown;
}

enum RelationshipChangeStatus {
    Pending = "Pending",
    Rejected = "Rejected",
    Revoked = "Revoked",
    Accepted = "Accepted"
}

enum RelationshipChangeType {
    Creation = "Creation",
    Termination = "Termination",
    TerminationCancellation = "TerminationCancellation"
}

interface RelationshipChangeResponse {
    createdBy: string;
    createdByDevice: string;
    createdAt: string;
    content?: unknown;
}

Updated: