Manifold · Schema

Manifold OAuth2 Authentication API Schemas

JSON Schema definitions for the Manifold OAuth2 Authentication API request and response payloads.

NFTCreator ToolsSmart ContractsBlockchainWeb3EthereumERC721ERC1155RoyaltiesMarketplaceMintingOpenSeaBaseOptimism
View JSON Schema on GitHub

JSON Schema

manifold-oauth2-authentication.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://manifold.xyz/schemas/oauth2-authentication",
  "title": "Manifold OAuth2 Authentication API Schemas",
  "description": "JSON Schema definitions for the Manifold OAuth2 Authentication API request and response payloads.",
  "$defs": {
    "VerifyRequest": {
      "$id": "#/VerifyRequest",
      "title": "VerifyRequest",
      "description": "Request body for POST /verify (Signature Grant). Provides the session token obtained from the Manifold frontend client.",
      "type": "object",
      "required": ["token"],
      "properties": {
        "token": {
          "type": "string",
          "description": "The session token retrieved from the Manifold Ethereum Provider or the `m-authenticated` event on the frontend."
        }
      },
      "additionalProperties": false
    },
    "VerifyResponse": {
      "$id": "#/VerifyResponse",
      "title": "VerifyResponse",
      "description": "Successful response from POST /verify containing the authenticated wallet address.",
      "type": "object",
      "properties": {
        "unwrappedJWT": {
          "type": "object",
          "description": "The decoded JWT payload.",
          "properties": {
            "address": {
              "type": "string",
              "description": "The Ethereum wallet address of the authenticated user.",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "examples": ["0xAbCd1234567890AbCd1234567890AbCd12345678"]
            }
          },
          "required": ["address"]
        }
      },
      "required": ["unwrappedJWT"]
    },
    "TokenRequest": {
      "$id": "#/TokenRequest",
      "title": "TokenRequest",
      "description": "Request body for POST /token (Authorization Code Grant). Exchanges a one-time code for a long-lived access token.",
      "type": "object",
      "required": ["clientId", "code", "clientSecret", "signature"],
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The client ID for the Developer App, obtained from the Manifold Developer Portal."
        },
        "code": {
          "type": "string",
          "description": "The one-time authorization code received after the user completes the OAuth2 authorization flow."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client secret for the Developer App, obtained from the Manifold Developer Portal."
        },
        "signature": {
          "type": "string",
          "description": "A cryptographic signature used to authenticate the token exchange request."
        }
      },
      "additionalProperties": false
    },
    "TokenResponse": {
      "$id": "#/TokenResponse",
      "title": "TokenResponse",
      "description": "Successful response from POST /token containing a 30-day access token.",
      "type": "object",
      "properties": {
        "access_token": {
          "type": "string",
          "description": "A 30-day access token for server-side access to private Manifold user data."
        },
        "expires_in": {
          "type": "integer",
          "description": "Token lifetime in seconds. Typically 2592000 (30 days).",
          "example": 2592000
        }
      },
      "required": ["access_token", "expires_in"]
    },
    "ErrorResponse": {
      "$id": "#/ErrorResponse",
      "title": "ErrorResponse",
      "description": "Error response returned when authentication or validation fails.",
      "type": "object",
      "properties": {
        "error": {
          "type": "string",
          "description": "Machine-readable error code."
        },
        "error_description": {
          "type": "string",
          "description": "Human-readable description of the error."
        }
      }
    }
  }
}