---
# System prepended metadata

title: API UML

---

# API UML


```plantuml
class Attribute {
  +Id: string
  +Name: string
  +Mapping: string
  +CRUDL()
}

class Query {
  +content: string
}

class CredentialTemplate {
  + Id: string
  + Name: string
  + Attributes: List<Attributes>
  + URI
}

class PresentationTemplate {
  + Id: string
  + Name: string
  + Attributes: List<Attributes>
  + Queries: List<Queries>
  + URI
}

class Organization {
  + Id
  + Name
  + List<Members>
  + Wallet
}

abstract class Wallet {
  + Id
  + List<Roles>
  + List<Credentials>
  + List<Presentations>
  + List<Contacts>
}

class Individual {
  + Id
  + Name
  + ContactMethod
  + Wallet
}

class Credential {
  + Issuer
  + CredentialTemplateId
  + AttributeValues
  + State
}

class VerifiableCredential {
  + @context: array<uri>
  + id: uri
  + type: array<string>
  + credentialSubject:  array<CredentialSubject>
  + issuer: URI | object w/ id prop
  + issuanceDate: datetime
  + proof: Proof
  + expirationDate: datetime
  + status: enum {revoked| }
}

class Proof {
  + type: enum
  + created: datetime
  + proofPurpose: enum
  + verificationMethod: URI
  + jws 
}




class CredentialSubject {
  + id: uri
  + claims<key, value>
}

class Presentation {
  + VerifierId
  + PresentationTemplateId
  + VerifiedData
  + State
}

Organization --> Wallet
Individual --> Wallet

CredentialTemplate --> Attribute
PresentationTemplate --> Attribute
PresentationTemplate --> Query


```