Skip to main content
POST
/
v0
/
agreements
/
validate-template
cURL
curl --request POST \
  --url https://test-api.shodai.network/v0/agreements/validate-template \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "metadata": {
    "templateId": "did:template:service-retainer-v0-1",
    "name": "Service Retainer"
  },
  "variables": {
    "serviceProviderRepresentative": {
      "type": "address",
      "subtype": "participant",
      "validation": {
        "required": true
      }
    },
    "clientRepresentative": {
      "type": "address",
      "subtype": "participant",
      "validation": {
        "required": true
      }
    },
    "retainerTitle": {
      "type": "string",
      "validation": {
        "required": true
      }
    }
  },
  "content": {
    "type": "md",
    "data": "# ${variables.retainerTitle}\n\nService agreement between provider and client."
  },
  "execution": {
    "initialize": {
      "initialState": "AWAITING_PAYMENT",
      "data": {}
    },
    "states": {
      "AWAITING_PAYMENT": {
        "description": "Waiting for initial payment proof."
      },
      "WORK_IN_PROGRESS": {
        "description": "Provider is performing the service."
      }
    },
    "inputs": {
      "submitInitialPaymentProof": {
        "issuer": {
          "type": "participant",
          "variable": "clientRepresentative"
        },
        "schema": {
          "paymentReference": {
            "type": "string",
            "validation": {
              "required": true
            }
          }
        }
      }
    },
    "transitions": [
      {
        "from": "AWAITING_PAYMENT",
        "to": "WORK_IN_PROGRESS",
        "conditions": [
          {
            "input": "submitInitialPaymentProof"
          }
        ]
      }
    ]
  }
}
'
{
  "templateId": "did:template:service-retainer-v0-1",
  "participantVariableKeys": [
    "serviceProviderRepresentative",
    "clientRepresentative"
  ],
  "inputIds": [
    "submitInitialPaymentProof"
  ],
  "stateIds": [
    "AWAITING_PAYMENT",
    "WORK_IN_PROGRESS"
  ],
  "warnings": []
}

Documentation Index

Fetch the complete documentation index at: https://docs.shodai.network/llms.txt

Use this file to discover all available pages before exploring further.

This endpoint checks authored agreement JSON only. It does not validate deployment values, participant wallet mappings, signer, or permit data. Generated API examples document request and response shape; complete deployable agreement JSON lives in /examples/simple and /examples/complex.

Authorizations

X-API-Key
string
header
default:YOUR_API_KEY
required

API key. Send this value in the X-API-Key request header.

Body

application/json

Authored agreement JSON to validate before deployment preflight.

Response

Agreement structure validation summary.

templateId
string | null
required

Agreement metadata templateId or id value, when present.

participantVariableKeys
string[]
required

Participant address variable keys found in the agreement JSON.

inputIds
string[]
required

Input IDs defined in the agreement JSON.

stateIds
string[]
required

State IDs defined in the agreement JSON.

warnings
string[]
required

Warnings to review before preparing deployment.