Skip to content

Cases

Create cases, read their data, move them through their workflow and delete them.

List the activity log of a case

GET /api/1/case_activity_log

Accepts the standard list parameters.

Example

curl -X GET \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/case_activity_log

Response 200

  • meta (object)
    • pagination (object)
  • results (array)
    • _created (string, date-time, required, nullable)
    • activity (string, required, nullable)
    • case_id (integer, required)
    • content (string, required)
    • id (integer, required)
    • instance (integer, nullable)
    • message (string, required)
    • needed_document (integer, nullable)
    • user (string, required)
    • user_readable_id (string, required)

List cases

GET /api/1/cases

Returns the cases the API key's tenant can see, newest first. Paginated.

Example

curl -X GET \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases

Response 200

One page of cases. Each entry carries the case list columns, not the full case.

  • data (array)
    • calculated_name (string, nullable)
    • color (string)
    • created (string, date-time)
    • given_name (string, nullable)
    • id (integer)
    • is_created (boolean)
    • is_dirty (boolean)
    • is_editable (boolean)
    • last_modified (string, date-time)
    • last_transition_at (string, date-time)
    • name (string)
    • outcome_instance_id (integer, nullable)
    • preferred_language (string, nullable)
    • state_id (integer, nullable)
    • state_key (string, nullable)
    • status (string)
    • use_given_name (boolean)
    • user_readable_id (string)
  • meta (object)
    • pagination (object)
{
  "data": [
    {
      "id": 4711,
      "name": "Onboarding Jane Doe",
      "state_key": "in_review",
      "user_readable_id": "#4711"
    },
    {
      "id": 4712,
      "name": "Onboarding Acme AG",
      "state_key": "draft",
      "user_readable_id": "#4712"
    }
  ],
  "meta": {
    "pagination": {
      "count": 24,
      "page": 1,
      "pages": 3
    }
  }
}

Create a case

POST /api/1/cases

Starts a new case for a process. The rule engine runs before the response is returned, so the response already contains the questions the case asks.

Request body

  • assignee_email (string, email)
  • name (string)
  • outcome_instance_id (integer)
  • owner_email (string, email)
  • predefined_objects (object)
  • preferred_language_key (string)
  • process_id (integer)
  • process_key (string)
  • transition_with_transition_key (string)

Send at least one of process_id, process_key.

{
  "name": "Onboarding Jane Doe",
  "owner_email": "advisor@example.com",
  "process_key": "onboarding"
}

Example

curl -X POST \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Onboarding Jane Doe", "owner_email": "advisor@example.com", "process_key": "onboarding"}' \
  https://your-tenant.atfinity.app/api/1/cases

Response 201

The case. The listed properties are the stable ones. The payload also carries the fields the Atfinity frontend needs, which are not part of this contract and can change.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

List the activity log of a case

GET /api/1/cases/{case_pk}/activity_log

Accepts the standard list parameters.

Example

curl -X GET \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases/<case_pk>/activity_log

Response 200

  • meta (object)
    • pagination (object)
  • results (array)
    • _created (string, date-time, required, nullable)
    • activity (string, required, nullable)
    • case_id (integer, required)
    • content (string, required)
    • id (integer, required)
    • instance (integer, nullable)
    • message (string, required)
    • needed_document (integer, nullable)
    • user (string, required)
    • user_readable_id (string, required)

Comment on a case

POST /api/1/cases/{case_pk}/comments

text is the comment body and is required. Set is_issue to raise it as an issue rather than a plain comment, assigned_user to make it a task for that user, and reply_to to answer an existing comment.

Request body

  • assigned_user (integer)
  • deadline (string, date-time)
  • is_issue (boolean)
  • referenced_value (integer)
  • reply_to (integer)
  • text (string, required)
  • title (string)
{
  "text": "The passport scan is unreadable.",
  "title": "Missing proof"
}

Example

curl -X POST \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "The passport scan is unreadable.", "title": "Missing proof"}' \
  https://your-tenant.atfinity.app/api/1/cases/<case_pk>/comments

Response 201

The case. The listed properties are the stable ones. The payload also carries the fields the Atfinity frontend needs, which are not part of this contract and can change.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Delete a case

DELETE /api/1/cases/{id}

  • format (string, one of json, text)

Example

curl -X DELETE \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases/<id>

Response 204

The case, its files and its unused instances are deleted.

Get a case

GET /api/1/cases/{id}

The full case: instances, information values, documents, buttons and workflow state.

  • format (string, one of json, text)

Example

curl -X GET \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases/<id>

Response 200

The case. The listed properties are the stable ones. The payload also carries the fields the Atfinity frontend needs, which are not part of this contract and can change.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Sent as text/plain.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Update a case

PATCH /api/1/cases/{id}

Writes field values, the owner, the assignee, the name, the language and the tags. Send only the keys you want to change. field addresses one value, fields a list of them, and a value is addressed either by case_field_key, or by information_key together with instance_id. Add structure_occurrence_index and structure_occurrence_information_key for a value inside a structure. The rule engine runs afterwards, so the response reflects the recalculated case.

given_name only applies when the case's process allows given names.

  • format (string, one of json, text)

Request body

  • assignee_email (string, email)
  • assignee_id (integer)
  • field (object)
    • case_field_key (string)
    • information_key (string)
    • instance_id (integer)
    • needed_document_id (integer)
    • remove_file_id (integer)
    • structure_occurrence_index (integer)
    • structure_occurrence_information_key (string)
    • value (object)
  • fields (array)
    • case_field_key (string)
    • information_key (string)
    • instance_id (integer)
    • needed_document_id (integer)
    • remove_file_id (integer)
    • structure_occurrence_index (integer)
    • structure_occurrence_information_key (string)
    • value (object)
  • given_name (string)
  • owner_email (string, email)
  • owner_id (integer)
  • preferred_language (string)
  • remove_file (integer)
  • tags (array)
    • id (integer)
    • key (string)
  • use_given_name (boolean)
{
  "fields": [
    {
      "information_key": "date_of_birth",
      "instance_id": 5001,
      "value": "1985-04-12"
    },
    {
      "case_field_key": "Person.first_name",
      "value": "Jane"
    }
  ]
}

Example

curl -X PATCH \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fields": [{"information_key": "date_of_birth", "instance_id": 5001, "value": "1985-04-12"}, {"case_field_key": "Person.first_name", "value": "Jane"}]}' \
  https://your-tenant.atfinity.app/api/1/cases/<id>

Response 200

The case. The listed properties are the stable ones. The payload also carries the fields the Atfinity frontend needs, which are not part of this contract and can change.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Sent as text/plain.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

List the other cases of this case's outcome instance

GET /api/1/cases/{id}/case_history

The cases that share the outcome instance of this case, newest first, which is the client's history rather than revisions of this case.

  • format (string, one of json, text)

Example

curl -X GET \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases/<id>/case_history

Response 200

One page of the cases sharing the outcome instance.

  • data (array)
    • calculated_name (string, nullable)
    • color (string)
    • created (string, date-time)
    • given_name (string, nullable)
    • id (integer)
    • is_created (boolean)
    • is_dirty (boolean)
    • is_editable (boolean)
    • last_modified (string, date-time)
    • last_transition_at (string, date-time)
    • name (string)
    • outcome_instance_id (integer, nullable)
    • preferred_language (string, nullable)
    • state_id (integer, nullable)
    • state_key (string, nullable)
    • status (string)
    • use_given_name (boolean)
    • user_readable_id (string)
  • meta (object)
    • pagination (object)

Sent as text/plain.

  • data (array)
    • calculated_name (string, nullable)
    • color (string)
    • created (string, date-time)
    • given_name (string, nullable)
    • id (integer)
    • is_created (boolean)
    • is_dirty (boolean)
    • is_editable (boolean)
    • last_modified (string, date-time)
    • last_transition_at (string, date-time)
    • name (string)
    • outcome_instance_id (integer, nullable)
    • preferred_language (string, nullable)
    • state_id (integer, nullable)
    • state_key (string, nullable)
    • status (string)
    • use_given_name (boolean)
    • user_readable_id (string)
  • meta (object)
    • pagination (object)

Copy a case

POST /api/1/cases/{id}/copy

  • format (string, one of json, text)

Example

curl -X POST \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases/<id>/copy

Response 200

The case. The listed properties are the stable ones. The payload also carries the fields the Atfinity frontend needs, which are not part of this contract and can change.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Sent as text/plain.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Check for background tasks still running on a case

GET /api/1/cases/{id}/has_ongoing_tasks

Useful after a transition that freezes documents: poll this until it returns false before downloading them.

  • format (string, one of json, text)

Example

curl -X GET \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  https://your-tenant.atfinity.app/api/1/cases/<id>/has_ongoing_tasks

Response 200

Whether background work on the case, for example freezing documents, is still running.

  • has_ongoing_tasks (boolean)
{
  "has_ongoing_tasks": true
}

Sent as text/plain.

  • has_ongoing_tasks (boolean)

Set the tags of a case

POST /api/1/cases/{id}/set_tags

  • format (string, one of json, text)

Request body

  • tags (array, required)
    • id (integer)
    • key (string)
{
  "tags": [
    {
      "id": 12,
      "key": "high_risk"
    },
    {
      "id": 15,
      "key": "eu"
    }
  ]
}

Example

curl -X POST \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tags": [{"id": 12, "key": "high_risk"}, {"id": 15, "key": "eu"}]}' \
  https://your-tenant.atfinity.app/api/1/cases/<id>/set_tags

Response 204

The tags of the case are now exactly the ones given.

Transition a case

POST /api/1/cases/{id}/transition

Moves the case along one workflow transition. Pass either transition_id or transition_key. The transition's condition is validated first, so a case that is not ready stays where it is.

  • format (string, one of json, text)

Request body

  • transition_id (integer)
  • transition_key (string)

Send at least one of transition_id, transition_key.

{
  "transition_key": "submit_for_review"
}

Example

curl -X POST \
  -H "Authorization: Api-Key $ATFINITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"transition_key": "submit_for_review"}' \
  https://your-tenant.atfinity.app/api/1/cases/<id>/transition

Response 200

The case. The listed properties are the stable ones. The payload also carries the fields the Atfinity frontend needs, which are not part of this contract and can change.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.

Sent as text/plain.

  • calculated_name (string, nullable)
  • color (string)
  • created (string, date-time)
  • given_name (string, nullable)
  • id (integer)
  • is_created (boolean)
  • is_dirty (boolean)
  • is_editable (boolean)
  • last_modified (string, date-time)
  • last_transition_at (string, date-time)
  • name (string)
  • outcome_instance_id (integer, nullable)
  • preferred_language (string, nullable)
  • state_id (integer, nullable)
  • state_key (string, nullable)
  • status (string)
  • use_given_name (boolean)
  • user_readable_id (string)

Further fields are present but are not part of this contract.