Data Exchange

API Docs (Compliance)

Available API endpoints and their usage for Compliance CRM Module

Contacts

List Contacts

Find Contact

Create Contact

Update Contact

Delete Contact

Contact Resource Structure

The contact resource includes the following fields:

FieldTypeDescription
idintegerInternal database ID
statusstringSanctions check status (green, yellow, red, gray, black)
contact_uidstringUnique identifier for the contact
genderstringGender (male or female)
full_namestringFull name (auto-generated from first_name + last_name)
first_namestringFirst name
last_namestringLast name
emailstringEmail address
phonestringPhone number
streetstringStreet address
postal_codestringPostal/ZIP code
citystringCity
country_or_regionstringCountry or region
commentstringAdditional comments
notesarrayArray of notes
is_watchlistbooleanWhether contact is on watchlist
is_archivedbooleanWhether contact is archived
sanctions_check_resultobjectDetailed sanctions check results
sanctions_checkstringSanctions check status
user_namestringName of user who created the contact
user_idintegerID of user who created the contact
updated_bystringName of user who last updated the contact
matchesarraySanctions matches array
last_sanction_checked_atdatetimeTimestamp of last sanctions check
masterdata_updated_atdatetimeTimestamp of last masterdata update

Filtering

The Contacts API supports filtering through query parameters:

Available Filters

  1. Search Filter (search)
    • Searches across: contact_uid, full_name, city, country_or_region
    • Uses LIKE queries with wildcards
  2. Timestamp Filter (timestamp)
    • Filters contacts where updated_at >= timestamp
    • Accepts ISO 8601 format timestamps
  3. Watchlist Filter (is_watchlist)
    • Filters by watchlist status
    • Accepts boolean values
  4. Archived Filter (is_archived)
    • Filters by archived status
    • Defaults to false if not provided
    • Only returns archived contacts if explicitly set to true

Filter Examples

# Search for contacts containing "john"
GET https://app.cu-ta.de/api/:prefix/v1/contacts?search=john

# Get contacts updated after a specific date
GET https://app.cu-ta.de/api/:prefix/v1/contacts?timestamp=2024-01-01T00:00:00Z

# Get watchlist contacts
GET https://app.cu-ta.de/api/:prefix/v1/contacts?is_watchlist=true

# Get archived contacts
GET https://app.cu-ta.de/api/:prefix/v1/contacts?is_archived=true

# Combine multiple filters
GET https://app.cu-ta.de/api/:prefix/v1/contacts?search=john&is_watchlist=false&per_page=50

Pagination

The list endpoint supports pagination with the following default behavior:

  • Default per page: 30 contacts
  • Customizable: Use per_page query parameter

Pagination response includes:

  • current_page: Current page number
  • per_page: Number of items per page
  • total: Total number of contacts
  • last_page: Last page number

History Tracking

Contacts automatically track history when created or updated:

  • Creation: History record created with category created and text Contact Created
  • Update: History record created with category updated and text Contact Updated
  • History Limit: Maximum of 100 history records per contact (oldest deleted when limit reached)

History includes:

  • User who performed the action
  • Timestamp
  • All contact properties at the time of the action
  • Category and description text

Error Responses

All endpoints return error responses in the following format:

400 Bad Request

{
  "message": "Contact already exists"
}

401 Unauthorized

{
  "message": "Unauthenticated."
}

403 Forbidden

{
  "message": "This action is unauthorized."
}

404 Not Found

{
  "message": "Contact not found"
}

422 Unprocessable Entity

Validation errors are returned in the following format:

{
  "message": "The given data was invalid.",
  "errors": {
    "contact.contact_uid": ["The contact.contact uid field is required."],
    "contact.gender": ["The selected contact.gender is invalid."]
  }
}

Important Notes

  1. Contact UID: The contact_uid field serves as the unique identifier for contacts and cannot be changed after creation
  2. Full Name: The full_name field is automatically generated from first_name and last_name and cannot be set directly
  3. Sanctions Check: Contacts may have sanctions check information, which is read-only via the API
  4. Archived Contacts: By default, archived contacts are excluded from list results unless explicitly requested with is_archived=true
  5. Authentication: All endpoints require a valid Bearer token and the api-user role