14 apis reference
Overview
This document provides a comprehensive reference for the platform's REST API endpoints. All endpoints return JSON and use standard HTTP status codes.
Base URL
Production: https://api.msvprotocol.com/v1
Staging: https://api-staging.msvprotocol.com/v1Authentication
Most endpoints require authentication via JWT token:
Authorization: Bearer <token>Wallet signature verification is used for on-chain actions.
Projects API
Create Project
POST /projects
Auth: Required (Issuer role)
Request Body:
Response: 201 Created
List Projects
GET /projects
Query Parameters:
type- Filter by project typegeography- Filter by geographyvintageYear- Filter by vintage yearstatus- Filter by statuspage- Page number (default: 1)limit- Items per page (default: 20)
Response: 200 OK
Get Project Details
GET /projects/:id
Response: 200 OK
Upload Project Document
POST /projects/:id/documents
Auth: Required (Issuer role, project owner)
Request: Multipart form data
file- Document filedocType- Document type (KYC, OWNERSHIP, VERIFIER_REPORT, etc.)
Response: 201 Created
Submit for PoAI
POST /projects/:id/poai/submit
Auth: Required (Issuer role, project owner)
Response: 200 OK
Get PoAI Status
GET /projects/:id/poai/status
Response: 200 OK
PoAI API
List PoAI Cases
GET /poai/cases
Auth: Required (Reviewer role)
Query Parameters:
state- Filter by state (SUBMITTED, IN_REVIEW, APPROVED, etc.)assignedTo- Filter by assigned reviewerpage- Page numberlimit- Items per page
Response: 200 OK
Get PoAI Case Details
GET /poai/cases/:id
Auth: Required (Reviewer role)
Response: 200 OK
Add/Update PoAI Check
POST /poai/cases/:id/checks
Auth: Required (Reviewer role)
Request Body:
Response: 201 Created
Approve PoAI Case
POST /poai/cases/:id/approve
Auth: Required (Reviewer role)
Response: 200 OK
Retail API
Get Holdings
GET /me/holdings
Auth: Required (Retail user)
Response: 200 OK
Purchase Credits
POST /purchase
Auth: Required (Retail user)
Request Body:
Response: 200 OK
Retire Credits
POST /retire
Auth: Required (Retail user)
Request Body:
Response: 200 OK
Get Certificates
GET /certificates
Auth: Required (Retail user)
Response: 200 OK
Enterprise API
Create Organization
POST /org
Auth: Required
Request Body:
Response: 201 Created
Add Team Member
POST /org/users
Auth: Required (Org Admin)
Request Body:
Response: 201 Created
Submit Emissions Data
POST /org/emissions
Auth: Required (Org Admin/Finance)
Request Body:
Response: 201 Created
Create Retirement Schedule
POST /org/retirement-schedule
Auth: Required (Org Admin/Finance)
Request Body:
Response: 201 Created
Generate Report
POST /org/reports
Auth: Required (Org Admin/Finance/Auditor)
Request Body:
Response: 202 Accepted
Get Report: GET /org/reports/:id
Response: 200 OK
Indexer API
Get Indexer Status
GET /indexer/status
Response: 200 OK
Sync Events
POST /indexer/sync/:blockNumber
Auth: Required (Admin)
Response: 200 OK
Error Responses
All endpoints may return standard error responses:
400 Bad Request:
401 Unauthorized:
403 Forbidden:
404 Not Found:
500 Internal Server Error:
Rate Limiting
API requests are rate-limited:
Default: 100 requests per minute per user
Headers:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset
Last updated