/compliance/compliance/documentation/healthAuthorization: Bearer <access_token>
DirectSupplyPartner — Full admin accessCustomer — Limited read accessResident — Restricted accessDsPartnerOrCorporateAdmin — Role managementRoute Prefix: /compliance/v1/articles
| Method | Path | Auth | Description |
|---|---|---|---|
| PUT | /articles |
Authorize + BU access | Submit article (create workflow) |
| GET | /articles/{articleId} |
Authorize + BU access | Get article by ID |
| GET | /articles |
Non-Resident | Search articles (paginated) |
| POST | /articles/{articleId}/commands/evaluateRules |
DSP only | Evaluate rules for article |
| POST | /articles/{articleId}/commands/evaluateTemplate |
DSP only | Evaluate step template |
| POST | /articles/{articleId}/commands/finishStep |
Authorize | Finish approval step |
| POST | /articles/{articleId}/commands/retire |
DSP only | Retire article |
| POST | /articles/{articleId}/commands/notify |
DSP only | Send notification |
/articlesSubmit an article to initiate an approval workflow.
Request Body:
{
"objectTypeId": 1,
"client": { "domain": "TELS", "type": "Customers:ChainID", "identifier": "100" },
"location": { "domain": "TELS", "type": "Customers:FacilityId", "identifier": "200" },
"requester": { "domain": "TELS", "type": "Customers:PersonId", "identifier": "300" },
"attributeDictionary": { "PriorityId": 1, "CustomerSell": 5000.00 },
"externalReferences": [
{ "domain": "TELS", "type": "workitems:authorizationnumber", "identifier": "12345" }
]
}
Response (200 OK): GenericActionResponse with article ID
Processing:
1. Validates business unit access
2. Creates article with JSONB attributes
3. Evaluates rules to find matching step template
4. Creates approval steps from template
5. Publishes IArticleCreatedV1 event
/articlesSearch articles with filtering and pagination.
Query Parameters:
- references (string, optional) — External reference filter
- client (string, optional) — Client composite identifier
- location (string, optional) — Location composite identifier
- requester (string, optional) — Requester composite identifier
- articleStatusId (int, optional) — Status filter
- objectTypeId (int, optional) — Object type filter
- stepPendingApprovalRole (int, optional) — Pending step role filter
- pageKey (string, optional) — Pagination cursor
Response (200 OK): ArticleSearchResponse
/articles/{articleId}/commands/finishStepComplete an approval step (authorize, deny, etc.).
Request Body:
{
"stepId": 5,
"stepStatusId": 2,
"note": "Approved per policy",
"verbalAdminId": null,
"verbalAdminName": null
}
Route Prefix: /compliance/v1/roles
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /roles |
AdminOrMatch | Search roles (paginated) |
| GET | /roles/{roleId} |
DsPartnerOrCorpAdmin | Get role by ID |
| POST | /roles |
DsPartnerOrCorpAdmin | Create role |
| PATCH | /roles/{roleId} |
DsPartnerOrCorpAdmin | Update role |
| DELETE | /roles/{roleId} |
DsPartnerOrCorpAdmin | Delete role |
| POST | /roles/{roleId}/commands/addAssignment |
ValidateCanModify | Add person to role |
| POST | /roles/{roleId}/commands/removeAssignment |
ValidateCanModify | Remove person from role |
| POST | /roles/{roleId}/queries/persons |
BU access | Get role persons at location |
| POST | /roles/{roleId}/queries/locationCoverage |
BU access | Get location coverage |
Route Prefix: /compliance/v1/rules
| Method | Path | Auth | Description |
|---|---|---|---|
| PUT | /rules |
DSP only | Create rule |
| DELETE | /rules/{ruleId} |
DSP only | Delete rule |
| GET | /rules |
DSP only | Search rules (paginated) |
| POST | /rules/commands/estimateSteps |
BU access | Estimate steps for attributes |
/rules/commands/estimateStepsPreview what approval steps would be created for given attributes without submitting an article.
Request Body:
{
"objectTypeId": 1,
"client": { "domain": "TELS", "type": "Customers:ChainID", "identifier": "100" },
"attributeDictionary": { "PriorityId": 1, "CustomerSell": 5000.00 }
}
Response (200 OK): EstimatedStep[]
Route Prefix: /compliance/v1/clients
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /clients |
DSP only | Get all clients |
| GET | /clients/{location} |
DSP or Customer | Get client object types for location |
Route Prefix: /compliance/v1/notifications
| Method | Path | Auth | Description |
|---|---|---|---|
| POST | /notifications/commands/setPersonConfiguration |
Self or Admin | Set notification preferences |
| GET | /notifications |
DSP or Self | Get notification configurations |
Route Prefix: /compliance/v1
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /attributeTypes |
DSP only | Get attribute types (Int, String, Decimal) |
| GET | /objectTypes |
DSP only | Get object types |
| GET | /evaluationTypes |
DSP only | Get evaluation types (equals, gt, lt) |
| GET | /objectTypes/{id}/actions |
Non-Resident | Get actions for object type |
Route Prefix: /compliance/v1/diagnostic
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /ping |
None | Health check |
| GET | /pingJwt |
Authorize | JWT health check |
| GET | /flushCache |
DSP only | Flush in-memory cache |
| GET | /unhandledException |
DSP only | Error test |
| GET | /cleanClient |
DSP + Feature flag | Clean client data |
| GET | /trappedEmails |
DSP + Feature flag | View trapped emails |
| GET | /startTrappingEmails |
DSP + Feature flag | Start email trapping |
| GET | /stopTrappingEmails |
DSP + Feature flag | Stop email trapping |
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request — validation error |
| 401 | Unauthorized — invalid or missing JWT |
| 403 | Forbidden — insufficient persona or access |
| 404 | Not Found |
/commands/evaluateRules, /commands/finishStep, etc.).estimateSteps endpoint lets UI show expected workflow before article submission.