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/v1

Authentication

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 type

  • geography - Filter by geography

  • vintageYear - Filter by vintage year

  • status - Filter by status

  • page - 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 file

  • docType - 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 reviewer

  • page - Page number

  • limit - 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