# V2 Product Spec - Out of date For the latest spec, go here: https://www.notion.so/trinsic/Okapi-Product-Spec-d412c9f2da9a43c2a239b042a26c269b In this doc, we'll introduce the products, the product concepts, and the technical concepts for our next platform Communication Tools: - Here is a high level view in [video form (5 min)](https://www.loom.com/share/b22f2e53712646b5bd3a10dcc1ac7fcc) - Here is the [MVP powerpoint](https://streetcredid0-my.sharepoint.com/:p:/g/personal/michael_trinsic_id/EYE97fp-X_VHglFchscCVJYBbg6MikZ-fWMgA-eoY1Fnlg?e=DfvDT4) ### Credential Templates ## SDK A Trinsic SDK available in most major programming languages and frameworks. The SDK will be a hybrid of remote and local function calls to do all the operations around key management, credential management, and authentication. ## Robust Architecture API versioning, end to end test coverage, and container orchestration will be built into the our core backend service from day one. # Product Concepts ```plantuml @startuml package IssuerService { class Credential { + Issuer + CredentialTemplateId + AttributeValues + State + issuanceDate + expirationDate } } package VerifierService { class Presentation { + VerifierId + PresentationTemplateId + VerifiedData + State } } package HolderService { class Individual { + Id + Name + ContactMethod + Wallet } } class Wallet { + Id + List<Roles> + List<Credentials> + List<Presentations> + List<Contacts> } package "Provider Service" { class Registry { + Id + List<Organization> + CRUDL() } class Organization { + Id + Name + List<Members> + Wallet + List<CredentialTemplate> + List<PresentationTemplate> + CRUDL() } class CredentialTemplate { + Id: string + Name: string + Attributes: List<Attributes> + CRUDL() } class *PresentationTemplate { + Id: string + Name: string + Attributes: List<Attributes> + CRUDL() } class Attribute { +Id: string +Name: string +Type: enum +CRUDL() } } @enduml ``` ## Template A named list of attributes used to describe what is included in a credential. ## Credential A verifiable credential that includes a list of attributes and values, sent from a specific issuer ## Wallet A secure place to store credentials. We will host cloud wallets that are authorized by keys generated in the SDK. All walelts can store, present, and verify credentials ### Capabilities #### Issuer Can issue credentials. If an organization is given the Issuer capability, they will have some additional settings in an *issuer configuration*, which specify how a credential should be issued ## Organization Includes things only a company will need. ## Individual Includes things an individual would need. # Solution Components A *very* rough draft of the pieces of the SDK + backend ![](https://i.imgur.com/NmyfGnd.png) Lucid Chart Diagram: https://lucid.app/lucidchart/ec088f19-28f0-438f-b103-ee6de3f72e0a/edit?shared=true ## Provider Service Everything a provider needs ### Open Questions - Where will we host a list of trusted organizations? ## Wallet Service Everything a wallet can do ### Open Questions - What happens when a wallet is created? ## Issuer Service Everything a wallet with an issuer capability can do Lot's of technical decisions to still make [Tomislav's description of tech components](https://www.notion.so/trinsic/Platform-V2-Tech-Stack-59f1e387994847cd8f56f359355b9790) [Some Open Questions](https://www.notion.so/trinsic/Implementation-Plan-03816bef94124a34b44744222548a7f6) # Timeline ## End Goal # Pricing We'll start our pricing with the early adopter program.