Requirement definition groups
Create, read, update, and delete requirement definition groups, and add, list, and remove the definitions in them, with the Wingspan V3 API.
A requirement definition group is a named bundle of requirement definitions. In the API a definition is also called a template. Use a group to keep related definitions together, for example everything a California registered nurse must complete.
A group doesn't make Payees complete anything by itself. To require a definition of a Payee, attach it to an Engagement. See Requirements and eligibility.
Prerequisites
- An Account credential, with
X-Wingspan-Accountwhen you act on a child Account. Groups belong to the Account that creates them. - Scopes:
payments.requirement-definition:readandpayments.requirement-definition:write. - Requirement definition ids from
GET /v3/onboarding/requirement-definitions. See Requirement definitions.
Endpoints
| Method and path | Operation |
|---|---|
POST /v3/onboarding/requirement-definition-groups | createRequirementDefinitionGroup |
GET /v3/onboarding/requirement-definition-groups | listRequirementDefinitionGroups |
GET /v3/onboarding/requirement-definition-groups/{requirementDefinitionGroupId} | getRequirementDefinitionGroup |
PATCH the same path | updateRequirementDefinitionGroup |
DELETE the same path | deleteRequirementDefinitionGroup |
POST .../{requirementDefinitionGroupId}/requirements | addRequirementDefinitionGroupItem |
GET .../{requirementDefinitionGroupId}/requirements | listRequirementDefinitionGroupItems |
DELETE .../{requirementDefinitionGroupId}/requirements/{itemId} | removeRequirementDefinitionGroupItem |
Create a group
| Field | Required | Notes |
|---|---|---|
name | Yes | Display name. |
description | No | |
metadata | No | Key-value strings. |
curl -X POST https://api.wingspan.app/v3/onboarding/requirement-definition-groups \
-H "Authorization: Bearer $WINGSPAN_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "name": "California RN Onboarding", "description": "Licence, background check, W-9" }'// 201 Created (trimmed)
{
"id": "Gr4nTq7LwX2sYb9kMc3dZa",
"accountId": "Nw7kQ2pLx9RtVb3mHc5dZa",
"name": "California RN Onboarding",
"description": "Licence, background check, W-9",
"requirementCount": 0,
"metadata": {},
"events": { "createdAt": "2026-11-02T15:04:05.000Z", "updatedAt": "2026-11-02T15:04:05.000Z" }
}requirementCount is the number of definitions currently in the group.
Read, update, and delete
GETthe list returns your groups, newest first, withpage[size]andpage[token]. It has no filter parameters.PATCHchangesname,description, andmetadata. Fields you omit stay as they are. If you sendmetadata, it replaces the stored map, so send the whole map. An empty body is rejected.DELETEreturns204with no body.
Add and remove definitions
POST .../requirements adds a definition to the group:
| Field | Required | Notes |
|---|---|---|
requirementDefinitionId | Yes | The definition to add. |
isBlocking | No | Default true. Whether the membership blocks payments while incomplete. |
The 201 response is the item: id (the membership id, which you pass as itemId to remove it), requirementDefinitionGroupId, requirementDefinitionId, isBlocking, and events.createdAt.
GET .../requirements lists the items, newest first, with page[size] and page[token].
DELETE .../requirements/{itemId} removes the membership and returns 204. It doesn't delete the definition.
Errors
| Status | When |
|---|---|
400 | The request is malformed. |
404 | The group or item doesn't exist for your Account. |
422 | A field fails validation, for example a missing name, or a PATCH with no fields ("At least one mutable field must be provided"). |
Related pages
Updated 12 minutes ago