Request
curl https://sandbox.api.lendeasy.ai /v1/servicing/admin/workflow-definitions/vocabulary \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: $TENANT" await fetch(`https://sandbox.api.lendeasy.ai /v1/servicing/admin/workflow-definitions/vocabulary` , {
method: "GET" ,
headers: { Authorization: `Bearer ${token}` , "LendEasy-Tenant" : tenant },
});requests.get(
f"https://sandbox.api.lendeasy.ai /v1/servicing/admin/workflow-definitions/vocabulary" ,
headers={"Authorization" : f"Bearer {token}" , "LendEasy-Tenant" : tenant},
)200 400 401 403 404
{
"predicate": {
"sources": [
{
"source": "fact",
"fields": [
"daysOverdue",
"loanStatus",
"overdueAmount",
"promiseToPayState"
]
},
{
"source": "task",
"fields": [],
"note": "field is <TASK_TYPE>.status or <TASK_TYPE>.outcome; types and their closed outcome catalogs are in taskTypes"
},
{
"source": "caseEffect",
"fields": [],
"freeKey": true
}
],
"operators": [
"CONTAINS",
"EQ",
"EXISTS",
"GT",
"GTE",
"IN",
"LT",
"LTE",
"NE",
"NOT_CONTAINS",
"NOT_EXISTS",
"NOT_IN"
],
"namedConditions": [
"CASE_CLOSURE_GUARDRAILS_SATISFIED",
"PTP_GUARDRAIL_POLICY_SATISFIED"
]
},
"taskTypes": [
{
"code": "COLLECTIONS_OUTREACH",
"displayName": "Collections outreach",
"defaultQueueCode": "COLLECTIONS",
"outcomeCatalogEnforced": true ,
"outcomes": [
{
"code": "CUSTOMER_REACHED",
"displayName": "Customer reached"
},
{
"code": "NO_ANSWER",
"displayName": "No answer"
}
]
}
],
"queues": [
{
"code": "COLLECTIONS",
"displayName": "Collections"
}
],
"effects": {
"types": [
{
"code": "CANCEL_AUTOPAY",
"restricted": true ,
"note": "The executor builds a PAYMENT_RETURN context; declare this only on the payment-return path (DEC-2026-08-25-01d)"
},
{
"code": "RELEASE_PROTECTIVE_STATE"
}
],
"targets": [
"CASE_CUSTOMER",
"SIGNAL_LOAN"
],
"failurePolicies": [
"RETRY_THEN_REVIEW"
]
},
"waitStatuses": [
"WAITING_ON_BORROWER",
"WAITING_ON_LMS"
],
"priorities": [
"LOW",
"NORMAL",
"HIGH",
"CRITICAL"
],
"approvalRoles": [
"SPECIALIST",
"SUPERVISOR"
],
"gatesAdvisory": "Evidence and approval gates stay out of ACTIVE definitions until the runtime supplies those snapshot sources (DEC-2026-08-14-01); activation warns when a definition declares them.",
"caseTypes": [
{
"code": "COLLECTIONS",
"displayName": "Collections"
}
]
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "400",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "validation.msg.validation.errors.exist",
"errors": []
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "401",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "error.msg.not.authenticated",
"errors": []
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "403",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "error.msg.not.authorized",
"errors": []
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "404",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "error.msg.resource.not.found",
"errors": []
}