Skip to main content
Checklists let your compliance team track required documents and approval steps against any Corsa entity — alerts, cases, or clients. Define a reusable checklist template once, and Corsa automatically attaches a checklist to the relevant entities when triggered. Full API endpoint details are available in the API Reference (requires API credentials).

Checklist Templates

Templates define the standard items your team must complete for a given entity type. Each template belongs to a specific entityType and contains one or more items. Templates can be toggled active or inactive — inactive templates are not used for new checklists.

Create a Checklist Template

Endpoint: POST /v1/checklist-templates
POST /v1/checklist-templates
Content-Type: application/json

{
  "entityType": "ALERT",
  "name": "Sanctions Alert Review",
  "description": "Standard checklist for reviewing sanctions screening alerts.",
  "isActive": true,
  "items": [
    {
      "name": "Verify client identity documents",
      "note": "Confirm passport or national ID is valid and not expired.",
      "category": "PERSONAL_IDENTIFICATION"
    },
    {
      "name": "Review sanctions list match",
      "note": "Cross-reference match with OFAC and UN lists.",
      "category": "DECLARATIONS_COMPLIANCE"
    }
  ]
}
const template = await corsa.checklists.createChecklistTemplate({
  entityType: "ALERT",
  name: "Sanctions Alert Review",
  description: "Standard checklist for reviewing sanctions screening alerts.",
  isActive: true,
  items: [
    {
      name: "Verify client identity documents",
      note: "Confirm passport or national ID is valid and not expired.",
      category: "PERSONAL_IDENTIFICATION",
    },
    {
      name: "Review sanctions list match",
      note: "Cross-reference match with OFAC and UN lists.",
      category: "DECLARATIONS_COMPLIANCE",
    },
  ],
});
from corsa_sdk.api.checklists.create_checklist_template import _get_kwargs
from corsa_sdk.models.create_checklist_template_dto import CreateChecklistTemplateDto

resp = http.request(**_get_kwargs(
    body=CreateChecklistTemplateDto(
        entity_type="ALERT",
        name="Sanctions Alert Review",
        description="Standard checklist for reviewing sanctions screening alerts.",
        is_active=True,
    )
))
template = resp.json()

Request Fields

FieldRequiredDescription
entityTypeYesEntity type this template applies to: ALERT, CASE, INDIVIDUAL_CLIENT, or CORPORATE_CLIENT.
nameYesDisplay name for the template.
descriptionNoOptional description visible to analysts.
isActiveNoWhether the template is active. Defaults to true.
itemsNoInitial checklist items to include (see item fields below).

Checklist Item Fields

FieldRequiredDescription
nameYesName of the checklist item.
noteNoGuidance note shown to the analyst.
categoryNoClassification label: PERSONAL_IDENTIFICATION, FINANCIAL_INFORMATION, CORPORATE_INFORMATION, DECLARATIONS_COMPLIANCE, or OTHER.
statusOptionsNoCustom status options for this item.

List Checklist Templates

Endpoint: GET /v1/checklist-templates Returns all checklist templates for the platform. The platformId is available from the Corsa dashboard under Settings → General.
GET /v1/checklist-templates?platformId=<your-platform-id>
const templates = await corsa.checklists.getChecklistTemplatesByPlatform("<your-platform-id>");
from corsa_sdk.api.checklists.get_checklist_templates_by_platform import _get_kwargs

resp = http.request(**_get_kwargs(platform_id="<your-platform-id>"))
templates = resp.json()

Get a Checklist Template

Endpoint: GET /v1/checklist-templates/{id}
GET /v1/checklist-templates/tmpl_abc123
const template = await corsa.checklists.getChecklistTemplateById("tmpl_abc123");
from corsa_sdk.api.checklists.get_checklist_template_by_id import _get_kwargs

resp = http.request(**_get_kwargs(id="tmpl_abc123"))
template = resp.json()

Update a Checklist Template

Endpoint: PUT /v1/checklist-templates/{id} Update the template name, description, or active state. Updating a template does not affect checklists already created from it.
PUT /v1/checklist-templates/tmpl_abc123
Content-Type: application/json

{
  "name": "Sanctions Alert Review — Enhanced",
  "isActive": true
}
const updated = await corsa.checklists.updateChecklistTemplate("tmpl_abc123", {
  name: "Sanctions Alert Review — Enhanced",
  isActive: true,
});
from corsa_sdk.api.checklists.update_checklist_template import _get_kwargs
from corsa_sdk.models.update_checklist_template_dto import UpdateChecklistTemplateDto

resp = http.request(**_get_kwargs(
    id="tmpl_abc123",
    body=UpdateChecklistTemplateDto(
        name="Sanctions Alert Review — Enhanced",
        is_active=True,
    )
))

Delete a Checklist Template

Endpoint: DELETE /v1/checklist-templates/{id} Deletes the template. This does not affect checklists already created from it.
DELETE /v1/checklist-templates/tmpl_abc123
await corsa.checklists.deleteChecklistTemplate("tmpl_abc123");
from corsa_sdk.api.checklists.delete_checklist_template import _get_kwargs

http.request(**_get_kwargs(id="tmpl_abc123"))

Add an Item to a Template

Endpoint: POST /v1/checklist-templates/{id}/items Add a new item to an existing template.
POST /v1/checklist-templates/tmpl_abc123/items
Content-Type: application/json

{
  "name": "Confirm source of funds",
  "note": "Review bank statements or proof of income submitted by the client.",
  "category": "FINANCIAL_INFORMATION"
}
const item = await corsa.checklists.addItemToTemplate("tmpl_abc123", {
  name: "Confirm source of funds",
  note: "Review bank statements or proof of income submitted by the client.",
  category: "FINANCIAL_INFORMATION",
});
from corsa_sdk.api.checklists.add_item_to_template import _get_kwargs
from corsa_sdk.models.create_checklist_item_dto import CreateChecklistItemDto

resp = http.request(**_get_kwargs(
    id="tmpl_abc123",
    body=CreateChecklistItemDto(
        name="Confirm source of funds",
        note="Review bank statements or proof of income submitted by the client.",
        category="FINANCIAL_INFORMATION",
    )
))
item = resp.json()

Update a Template Item

Endpoint: PUT /v1/checklist-templates/items/{itemId}
PUT /v1/checklist-templates/items/item_xyz789
Content-Type: application/json

{
  "name": "Confirm source of funds — updated",
  "note": "Review bank statements, payslips, or audited accounts.",
  "category": "FINANCIAL_INFORMATION"
}
const updated = await corsa.checklists.updateTemplateItem("item_xyz789", {
  name: "Confirm source of funds — updated",
  note: "Review bank statements, payslips, or audited accounts.",
  category: "FINANCIAL_INFORMATION",
});
from corsa_sdk.api.checklists.update_template_item import _get_kwargs
from corsa_sdk.models.update_checklist_template_item_dto import UpdateChecklistTemplateItemDto

resp = http.request(**_get_kwargs(
    item_id="item_xyz789",
    body=UpdateChecklistTemplateItemDto(
        name="Confirm source of funds — updated",
        note="Review bank statements, payslips, or audited accounts.",
        category="FINANCIAL_INFORMATION",
    )
))

Delete a Template Item

Endpoint: DELETE /v1/checklist-templates/items/{itemId}
DELETE /v1/checklist-templates/items/item_xyz789
await corsa.checklists.deleteTemplateItem("item_xyz789");
from corsa_sdk.api.checklists.delete_template_item import _get_kwargs

http.request(**_get_kwargs(item_id="item_xyz789"))

Working with Checklists

Once a template is active, Corsa creates checklists for the matching entity type. You can retrieve and update checklist items through the following endpoints.

Get a Checklist for an Entity

Endpoint: GET /v1/checklists/entity Returns the active checklist for a given entity. Pass the entity ID and type as query parameters.
GET /v1/checklists/entity?entityId=alert-uuid-123
const checklist = await corsa.checklists.getEntityChecklist("alert-uuid-123");
from corsa_sdk.api.checklists.get_entity_checklist import _get_kwargs

resp = http.request(**_get_kwargs(entity_id="alert-uuid-123"))
checklist = resp.json()

Query Parameters

ParameterRequiredDescription
entityIdYesID of the entity to retrieve the checklist for.

Response

{
  "id": "checklist_abc123",
  "entityId": "alert-uuid-123",
  "entityType": "ALERT",
  "referenceId": "ALT-2024-001",
  "name": "Sanctions Alert Review",
  "description": "Standard checklist for reviewing sanctions screening alerts.",
  "status": "ACTIVE",
  "items": [
    {
      "id": "item_001",
      "name": "Verify client identity documents",
      "note": "Confirm passport or national ID is valid and not expired.",
      "category": "PERSONAL_IDENTIFICATION",
      "status": "PENDING",
      "documentUrl": null,
      "attachmentId": null,
      "expirationDate": null,
      "createdAt": "2024-01-20T11:00:00.000Z",
      "updatedAt": "2024-01-20T11:00:00.000Z"
    }
  ],
  "createdAt": "2024-01-20T11:00:00.000Z",
  "updatedAt": "2024-01-20T11:00:00.000Z"
}

Update a Checklist Item

Endpoint: PUT /v1/checklists/{checklistId}/items/{itemId} Mark an item as completed, attach a document, set an expiration date, or add custom fields.
PUT /v1/checklists/checklist_abc123/items/item_001
Content-Type: application/json

{
  "status": "APPROVED",
  "documentUrl": "https://storage.example.com/docs/passport-john-doe.pdf",
  "documentMimeType": "application/pdf",
  "documentSubmissionDate": "2024-01-21T09:00:00.000Z",
  "expirationDate": "2029-01-21T00:00:00.000Z",
  "note": "Passport verified — expires Jan 2029."
}
const updated = await corsa.checklists.updateChecklistItem(
  "checklist_abc123",
  "item_001",
  {
    status: "APPROVED",
    documentUrl: "https://storage.example.com/docs/passport-john-doe.pdf",
    documentMimeType: "application/pdf",
    documentSubmissionDate: "2024-01-21T09:00:00.000Z",
    expirationDate: "2029-01-21T00:00:00.000Z",
    note: "Passport verified — expires Jan 2029.",
  }
);
from corsa_sdk.api.checklists.update_checklist_item import _get_kwargs
from corsa_sdk.models.update_checklist_item_dto import UpdateChecklistItemDto

http.request(**_get_kwargs(
    checklist_id="checklist_abc123",
    item_id="item_001",
    body=UpdateChecklistItemDto(
        status="APPROVED",
        document_url="https://storage.example.com/docs/passport-john-doe.pdf",
        document_mime_type="application/pdf",
        document_submission_date="2024-01-21T09:00:00.000Z",
        expiration_date="2029-01-21T00:00:00.000Z",
        note="Passport verified — expires Jan 2029.",
    )
))

Request Fields

FieldRequiredDescription
statusNoItem status (e.g., PENDING, APPROVED, REJECTED). Available values depend on the template’s statusOptions.
documentUrlNoURL of the supporting document.
attachmentIdNoID of an attachment already uploaded to Corsa (see Managing Attachments).
documentMimeTypeNoMIME type of the document (e.g., application/pdf, image/jpeg).
documentSubmissionDateNoISO 8601 timestamp of when the document was submitted.
expirationDateNoISO 8601 timestamp of when the document expires.
noteNoAnalyst note for this item.
customFieldsNoKey-value custom fields.

What’s Next?

Managing Attachments

Upload and link documents to checklist items, alerts, and cases.

Managing Alerts & Cases

Bulk operations, status updates, and entity associations for alerts and cases.