# 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

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.