## API Module The API-module contains interfaces and domain model value classes that provide the basic functionality to build an sdk-client. ### Service Architecture ```mermaid classDiagram class CryptoService{ + decryptString + decryptBytes + encryptString + encryptBytes } class CertificateValidator{ + validatePublicKey } class MetadataValidator{ + validateMetadataSchema + validateMetadataHashValues } class MetadataService{ + createMetadata } class OAuthService{ + authenticate } class Sender { + retrieveOAuthToken + validatePublicKey + encryptSubmissionData + encryptAttachment + MetadataService + createMetadata } class Subscriber { + retrieveOAuthToken + decryptSubmissionData + decryptAttachment + validateMetadataSchema + validateMetadataHashValues } class SenderClient{ ClientFactory } class SubscriberClient{ ClientFactory } SenderClient ..> ClientFactory : Uses SubscriberClient ..> ClientFactory : Uses ClientFactory ..> Sender : Creates ClientFactory ..> Subscriber : Creates Sender ..> CertificateValidator : Uses Sender ..> MetadataService : Uses Sender ..> OAuthService : Uses Sender ..> CryptoService : Uses Subscriber ..> OAuthService : Uses Subscriber ..> CryptoService : Uses Subscriber ..> MetadataValidator : Uses ```