# ReAcc Marketplace
**ReAcc Account**
- Clients who have no I-REC account.
- *[Future release]* Clients who already have I-REC accounts.
## User Registration and onboarding clients
### Client without I-REC Account
```mermaid
sequenceDiagram
actor User as User (Seller/Buyer)
actor Admin as Admin
participant ReAcc as ReAcc Platform
participant IREC as I-REC
User->>+ReAcc: Submit ReAcc Registration
ReAcc-->>User: Confirm submit
ReAcc->>-Admin: Send notification
Admin->>+ReAcc: Review Documents
loop Need correction
Admin->>ReAcc: Request for correction
ReAcc->>User: Send request for correction notification
User->>ReAcc: Submit corrected documents
ReAcc-->>User: Confirm submit
ReAcc->>-Admin: Send notification
Admin->>ReAcc: Review Documents
end
Admin->>+ReAcc: Update registration and kyc status
alt approved
ReAcc->>+ReAcc: Create an account for a client
alt Organization does not exist
ReAcc->>ReAcc: Create an organization for a client
end
alt beneficiary does not exist
ReAcc->>+IREC: Create beneficiary
Note right of IREC: [POST] /api/irec/v1/beneficiaries/create
IREC-->>-ReAcc: return a new beneficiary detail
end
ReAcc->>User: Send approve notification
else rejected
ReAcc->>-User: Send reject notification
end
```
### *[Future release]* Client with I-REC Account
```mermaid
sequenceDiagram
actor User as User (Seller/Buyer)
actor Admin as Admin
participant ReAcc as ReAcc Platform
participant IREC as I-REC
User->>+ReAcc: Submit ReAcc Registration
ReAcc-->>User: Confirm submit
ReAcc->>-Admin: Send notification
Admin->>+ReAcc: Review Documents
loop Need correction
Admin->>ReAcc: Request for correction
ReAcc->>User: Send request for correction notification
User->>ReAcc: Submit corrected documents
ReAcc-->>User: Confirm submit
ReAcc->>-Admin: Send notification
Admin->>ReAcc: Review Documents
end
Admin->>+ReAcc: Update registration and kyc status
alt approved
ReAcc->>+ReAcc: Create an account for a client
alt Organization does not exist
ReAcc->>ReAcc: Create an organization for a client
end
ReAcc->>+IREC: Sync data
Note right of IREC: [GET] /api/irec/v1/account-management/{code}
IREC-->>-ReAcc: return account data
ReAcc->>User: Send approve notification
else rejected
ReAcc->>-User: Send reject notification
end
```
**Questions**:
*[Future release]* For clients with I-REC account.
- [ ] Can ReAcc sync client user data with I-REC?
- [ ] What information ReAcc can retrieve from the API for client I-REC account? [device information, beneficiary]
---
## Device Registration
```mermaid
sequenceDiagram
autonumber
actor Seller as User (Seller)
participant ReAcc as ReAcc Platform
participant IREC as I-REC
Seller->>+ReAcc: Submit ReAcc Device registration form and supporting documents
ReAcc->>ReAcc: Create generation device with status "draft"
ReAcc->>+IREC: Register Device
Note right of IREC: [POST] /api/irec/v1/device-management/create
IREC->>IREC: Create generation device with status "draft"
IREC-->>-ReAcc: Confirm & return device ID
ReAcc->>ReAcc: Store I-REC ID as part of the device
ReAcc->>+IREC: Submit device
Note right of IREC: [PUT] /api/irec/v1/device-management/{code}/submit
IREC-->>-ReAcc: Confirm submission
ReAcc->>ReAcc: Change I-REC status to submitted
ReAcc-->>Seller: Confirm Device Registration
alt is approved
IREC->>IREC: Approve device
ReAcc->>+IREC: Get device information
Note right of IREC: [GET] /api/irec/v1/device-management/{code}
IREC-->>-ReAcc: Return device info with "approved" status
ReAcc->>ReAcc: Change I-REC status
ReAcc->>Seller: Notify approve
else is rejected
IREC->>IREC: Reject device
ReAcc->>+IREC: Get device information
Note right of IREC: [GET] /api/irec/v1/device-management/{code}
IREC-->>-ReAcc: Return device info with "rejected" status
ReAcc->>ReAcc: Change I-REC status
ReAcc->>-Seller: Notify reject
end
```
**Questions**:
*[Future release]* For clients with I-REC account.
- [ ] Can ReAcc fetch device data from client's registrant account? - I-REC standard said "yes", pending confirm with Evident.
- [x] When we create a device via API, will the device be created in ReAcc registrant account? - I-REC standard said "yes"
---
## Issuance request
```mermaid
sequenceDiagram
actor Seller as User (Seller)
actor Admin as Admin
participant ReAcc as ReAcc
participant IREC as I-REC
Seller->>+ReAcc: Request issuance and upload evidence
ReAcc-->>-Seller: Request success
Admin->>+ReAcc: Review request issuance and upload evidence
ReAcc->>+IREC: Creates a new draft issue request and upload
Note right of IREC: [POST] /api/irec/v1/issue-management/create
IREC-->>-ReAcc: Returns the newly created issue object
ReAcc->>ReAcc: Store request I-REC ID
ReAcc->>+IREC: Submit request
Note right of IREC: [PUT] /api/irec/v1/issue-management/{code}/submit
IREC-->>-ReAcc: Confirm submission
ReAcc->>ReAcc: [On-chain] Create issuance request
ReAcc-->>-Admin: Confirm request
IREC->>IREC: IREC Review and update status
Note over IREC: [GET] /api/irec/issue-management/{code}
ReAcc->>+IREC: Check request status
IREC-->>-ReAcc: Status
ReAcc->>ReAcc: Update request status
ReAcc->>+IREC: Get account items
Note right of IREC: [GET] /api/irec/v1/account-management/{code}/items
IREC-->>-ReAcc: Return ID
ReAcc->>ReAcc: Parse item IDs & store correct ID
alt Status is approved
ReAcc->>ReAcc: [On-chain] Approve request <br>and Mint I-RECs to organization's <br>exchange deposit address
alt ** [Future release] In Case Seller has participant account **
ReAcc->>+IREC: Transfer certificates from ReAcc's participant account <br> to seller participant account
Note right of IREC: [POST] /api/irec/v1/transfer-management
IREC-->>-ReAcc: return status
end
else Status is rejected
ReAcc->>ReAcc: [On-chain] Revoke request and notify
end
ReAcc->>Admin: Send notification
ReAcc->>Seller: Send notification
```
**Questions**:
*[Future release]* For clients with I-REC account.
- [ ] Can we issue certificate to private sub account under ReAcc? (step 4.)
---
## Trade
**Questions**:
*[Future release]* For clients with I-REC account.
- [ ] What can other participants on I-REC standard do on ReAcc platform? e.g. Mirror all data from Evident to ReAcc, Send any requests/move certificates to Evident via ReAcc.
- [ ] Can ReAcc transfer the certificates from client's account to ReAcc account?
---
## Redemption
### Client without I-REC Account
```mermaid
sequenceDiagram
actor Buyer as User (Buyer)
actor Admin as Admin
participant ReAcc as ReAcc Platform
participant IREC as I-REC
participant RedemptionAcc as ReAcc's I-REC <br> Redemption Account
Admin->>+ReAcc: Request redemption of I-RECs
ReAcc->>ReAcc: Get beneficiary ID
ReAcc->>+IREC: Redeem I-RECs
Note over IREC: [POST] /api/redemption-management
alt success
IREC->>RedemptionAcc: Redeem I-RECs
IREC-->>ReAcc: Confirm redemption and return ID
ReAcc->>ReAcc: Store additional data e.g. cert_num ID's & URL
ReAcc->>ReAcc: [On-chain] Claim token
ReAcc-->>Admin: Confirm redemption <br> and display in claim report
ReAcc->>Buyer: Send notification
else rejected
IREC->>IREC: Reject retirement
IREC-->>-ReAcc: Return error message
ReAcc-->>-Admin: Return error message
end
```
### *[Future release]* Client with I-REC Account
TBD
**Questions**:
*[Future release]* For clients with I-REC account.
- [ ] What can other participants on I-REC standard do on ReAcc platform? e.g. Mirror all data from Evident to ReAcc, Send any requests/move certificates to Evident via ReAcc.
- [ ] Can ReAcc redeem certificates in client's account?