Altafid API Documentation
https://api.altafid.dev.altafid.netEnvironment: UAT
Tenant UUID:
T019A16FF372A70B5A9307B00CE85E4DA
Test Credentials
| Username | kaboom-poc@yopmail.com |
|---|---|
| Password | Password123! |
Global Headers (All Authenticated Requests)
| Header | Value | Description |
|---|---|---|
Authorization | Bearer {token} | Access token from login |
x-tenant-uuid | T019A16FF372A70B5A9307B00CE85E4DA | Tenant identifier |
x-user-email | kaboom-poc@yopmail.com | User email |
x-user-id | TS019C06688AA57248B9EA5325DBDFC48E | User staff UUID |
x-user-type | TENANT_STAFF | User type |
Authentication
POST/api/auth/login
Authenticate and obtain access tokens
Request Body
{
"username": "kaboom-poc@yopmail.com",
"password": "Password123!"
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/auth/login' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'content-type: application/json' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
--data-raw '{"username":"kaboom-poc@yopmail.com","password":"Password123!"}'
Response 200 OK
{
"status": "LOGIN_SUCCESS",
"token": "eyJhbGciOiJIUzI1NiJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiJ9...",
"username": "kaboom-poc@yopmail.com",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"tenantStaffUuid": "TS019C06688AA57248B9EA5325DBDFC48E",
"tenantCode": "CONPAT_UAT",
"userType": "TENANT_STAFF",
"staffType": "ADMIN",
"firstName": "kaboom",
"lastName": "poc",
"expiresIn": 3600000,
"refreshExpiresIn": 604800000
}
Response Fields
| Field | Type | Description |
|---|---|---|
token | string | Access token (expires in 1 hour) |
refreshToken | string | Refresh token (expires in 7 days) |
tenantUuid | string | Use in x-tenant-uuid header |
tenantStaffUuid | string | Use in x-user-id header |
username | string | Use in x-user-email header |
expiresIn | number | Milliseconds until expiration (3600000 = 1 hour) |
POST/api/auth/refresh
Refresh expired access token
Request Body
{
"refreshToken": "eyJhbGciOiJIUzI1NiJ9..."
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/auth/refresh' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'content-type: application/json' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
--data-raw '{"refreshToken":"YOUR_REFRESH_TOKEN"}'
Response 200 OK
{
"token": "eyJhbGciOiJIUzI1NiJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiJ9...",
"expiresIn": 3600000
}
Tasks
POST/api/tasks
Create a new task
Kaboom AI integration can use this API to create a new task
partnerId must equal tenantUuid = T019A16FF372A70B5A9307B00CE85E4DA
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
taskName | string | ✅ | Task title |
taskType | enum | ✅ | EMAIL, CALL, TODO |
queue | enum | ✅ | See enums reference below |
status | enum | ✅ | Queue-specific status (see matrix below) |
priority | enum | ✅ | HIGH, MEDIUM, LOW |
partnerId | string | ✅ | Must be tenantUuid (T019A16FF372A70B5A9307B00CE85E4DA) |
contactId | string | No | Contact UUID (from contacts API) |
assignedToId | string | ✅ | Staff UUID (from staff API) |
dueDate | string | ✅ | ISO 8601 format |
description | string | ✅ | HTML supported |
createdById | string | ✅ | Creator staff UUID |
createdByType | string | ✅ | ADVISOR_STAFF |
Request Example
{
"taskName": "TestEmail",
"taskType": "EMAIL",
"queue": "ACCOUNT_ONBOARDING",
"status": "PENDING_DOCUMENTS",
"priority": "HIGH",
"partnerId": "T019A16FF372A70B5A9307B00CE85E4DA",
"contactId": "C019A5EE30BE0703E97DF93284EDE4CFE",
"assignedToId": "TS019C06688AA57248B9EA5325DBDFC48E",
"dueDate": "2026-01-29T00:00:00.000Z",
"description": "Test
",
"createdById": "TS019C06688AA57248B9EA5325DBDFC48E",
"createdByType": "ADVISOR_STAFF"
}
cURL: Complete Task Creation Example
curl 'https://api.altafid.dev.altafid.net/api/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"taskName":"TestEmail","taskType":"EMAIL","queue":"ACCOUNT_ONBOARDING","status":"PENDING_DOCUMENTS","priority":"HIGH","partnerId":"T019A16FF372A70B5A9307B00CE85E4DA","contactId":"C019A5EE30BE0703E97DF93284EDE4CFE","assignedToId":"TS019C06688AA57248B9EA5325DBDFC48E","dueDate":"2026-01-29T00:00:00.000Z","description":"Test
","createdById":"TS019C06688AA57248B9EA5325DBDFC48E","createdByType":"ADVISOR_STAFF"}'
Response 200 OK
{
"id": 536,
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"taskNumber": "AO-3",
"taskName": "TestEmail",
"taskType": "EMAIL",
"queue": "ACCOUNT_ONBOARDING",
"status": "PENDING_DOCUMENTS",
"priority": "HIGH",
"partnerId": "T019A16FF372A70B5A9307B00CE85E4DA",
"partnerName": "CONPAT_UAT",
"contactId": "C019A5EE30BE0703E97DF93284EDE4CFE",
"contactName": "Alejandra Kabakian",
"assignedToId": "TS019C06688AA57248B9EA5325DBDFC48E",
"assignedToName": "kaboom poc",
"dueDate": "2026-01-29T00:00:00",
"description": "Test
",
"deleted": false,
"createdByType": "ADVISOR_STAFF",
"createdById": "TS019C06688AA57248B9EA5325DBDFC48E",
"createdByName": "kaboom poc",
"createdAt": "2026-01-28T21:32:56.430351",
"updatedAt": "2026-01-28T21:32:56.430353"
}
Enums Reference
Task Types
| Value | Description |
|---|---|
EMAIL | Email task |
CALL | Phone call task |
TODO | To-do item (displays as TO_DO in UI) |
Priority Levels
| Value | Description |
|---|---|
HIGH | High priority |
MEDIUM | Medium priority |
LOW | Low priority |
Queues & Allowed Statuses
| Queue | Allowed Statuses |
|---|---|
SALES |
OPEN, IN_PROGRESS, DONE |
CUSTOMER_SERVICE |
OPEN, IN_PROGRESS, DONE |
ACCOUNT_ONBOARDING |
OPEN, IN_PROGRESS, CLOSED, STAND_BY, PENDING_DOCUMENTS, SIGNATURE, BANK_APPROVAL, CASH_ASSETS_DEPOSIT, CLIENT_WEB_CREDENTIALS, ACCOUNT_REVIEW |
GENERAL |
OPEN, IN_PROGRESS, DONE |
INVESTMENT |
OPEN, IN_PROGRESS, DONE |
PROSPECTS_FLOW |
PROSPECT, PENDING_MEETING, PENDING_DOCUMENTS, PENDING_CONFIGURATION, PENDING_PRESENTATION, PENDING_REPORT, PENDING_CONFIRMATION, CLOSED_PROSPECT |
BUSINESS |
ACCOUNT_CREATION, PENDING_SIGNATURE, PENDING_TRANSFER, DONE |
Contacts
Use contacts API to get contactId for task creation and notes
GET/api/contacts/firm/TENANT/{tenantUuid}?searchTerm={term}
Search contacts by name or email
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
searchTerm | string | No | Search by first/last name or email |
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 20) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/contacts/firm/TENANT/T019A16FF372A70B5A9307B00CE85E4DA?page=0&size=20&searchTerm=Mark' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
{
"content": [
{
"displayName": "Mark Henry",
"contactUuid": "C019C03AFB97379B48C926FCE1552D05F",
"firstName": "Mark",
"middleName": null,
"paternalLastName": "Henry",
"maternalLastName": null,
"contactType": "ACTIVE",
"status": "ACTIVE",
"firmType": "TENANT",
"firmEntityUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"firmName": "CONPAT_UAT",
"preferredEmail": "mark@gmail.com",
"primaryEmail": "mark@gmail.com",
"preferredPhoneNumber": {
"country": "IN",
"phoneCountryCode": "+91",
"phoneNumber": "9844521687"
},
"contactMeans": "PHONE",
"preferredContactLanguage": "ENGLISH"
},
{
"displayName": "Stephen Mark Kerr .",
"contactUuid": "C019A5EE77B9F72F3847EA5CB38237A2A",
"firstName": "Stephen",
"middleName": "Mark",
"paternalLastName": "Kerr",
"maternalLastName": ".",
"contactType": "SUBSCRIBER",
"status": "ACTIVE",
"preferredEmail": "stephenkerr@nielsen.com",
"primaryEmail": "",
"preferredPhoneNumber": {
"country": "CL",
"phoneCountryCode": "+56",
"phoneNumber": "982195593"
}
}
],
"totalElements": 2,
"totalPages": 1
}
contactUuid as contactId when creating tasks or notes
GET/api/contacts/firm/TENANT/{tenantUuid}?page={page}&size={size}
List all tenant contacts with pagination
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 20) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/contacts/firm/TENANT/T019A16FF372A70B5A9307B00CE85E4DA?page=0&size=20' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
GET/api/contacts/{contactUuid}
Retrieve full details for a single contact by their UUID. The contact response does not include a householdUuid. To find which household(s) a contact belongs to, use the Household Members endpoint.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
contactUuid | string | The contact's UUID (e.g. C019BA4AEE01E71768B486A1E54172A19) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/contacts/C019BA4AEE01E71768B486A1E54172A19' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
{
"contactUuid": "C019BA4AEE01E71768B486A1E54172A19",
"displayName": "Isidora Test 1",
"firstName": "Isidora",
"middleName": null,
"paternalLastName": "Test",
"maternalLastName": "1",
"contactType": "ACTIVE",
"status": "ACTIVE",
"firmType": "TENANT",
"firmEntityUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"preferredEmail": "isidora@example.com",
"primaryEmail": "isidora@example.com",
"preferredPhoneNumber": {
"country": "CL",
"phoneCountryCode": "+56",
"phoneNumber": "912345678"
},
"contactMeans": "EMAIL",
"preferredContactLanguage": "SPANISH",
"dateOfBirth": "1990-01-15",
"gender": "FEMALE",
"identityType": "NATIONAL_ID",
"identityCountry": "CHL",
"identityId": "12345678-9",
"addresses": [],
"associatedOrganisations": null,
"compliance": null,
"contactAssociations": null
}
householdUuid field. The relationship is many-to-many, managed through Household Members. To find a contact's household(s), query the members endpoint and match by contactUuid. See the Households section for the full data model.
POST/api/contacts
Create a new contact
Kaboom AI integration can use this API to create a new lead/contact
firmId must equal tenantUuid = T019A16FF372A70B5A9307B00CE85E4DA
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
firstName | string | ✅ | First name |
middleName | string | No | Middle name |
paternalLastName | string | ✅ | Paternal last name |
maternalLastName | string | No | Maternal surname |
preferredEmail | string | ✅* | Email address (*required if no phone) |
phoneNumber | object | ✅* | Phone number object (*required if no email) |
contactMeans | enum | ✅ | EMAIL, PHONE |
contactType | enum | ✅ | SUBSCRIBER |
status | enum | ✅ | ACTIVE |
firmId | string | ✅ | Must be tenantUuid (T019A16FF372A70B5A9307B00CE85E4DA) |
firmType | string | ✅ | TENANT |
preferredContactLanguage | string | ✅ | ENGLISH |
contactManagerId | string | No | Staff UUID (from staff search API) |
contactManagerFirmType | string | No | TENANT |
stage | string | No | etapa1 or etapa2 or etapa3 |
contactManagerId from the staff search API to assign a contact manager.
Request Example
{
"firstName": "poc",
"paternalLastName": "last",
"contactType": "SUBSCRIBER",
"firmId": "T019A16FF372A70B5A9307B00CE85E4DA",
"firmType": "TENANT",
"preferredContactLanguage": "ENGLISH",
"status": "ACTIVE",
"middleName": "middle",
"maternalLastName": "maternal",
"preferredEmail": "poctestcontact@example.com",
"contactManagerId": "TS019A25A48E6177E8B989E9AECCA3F6DF",
"stage": "etapa2",
"contactMeans": "EMAIL",
"contactManagerFirmType": "TENANT"
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/contacts' \
-H 'accept: application/json, text/plain, */*' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"firstName":"poc","paternalLastName":"last","contactType":"SUBSCRIBER","firmId":"T019A16FF372A70B5A9307B00CE85E4DA","firmType":"TENANT","preferredContactLanguage":"ENGLISH","status":"ACTIVE","middleName":"middle","maternalLastName":"maternal","preferredEmail":"poctestcontact@example.com","contactManagerId":"TS019A25A48E6177E8B989E9AECCA3F6DF","stage":"etapa2","contactMeans":"EMAIL","contactManagerFirmType":"TENANT"}'
Response 201 Created
{
"contactUuid": "C019A5EE30BE0703E97DF93284EDE4CFE",
"firstName": "poc",
"middleName": "middle",
"paternalLastName": "last",
"maternalLastName": "maternal",
"displayName": "poc middle last maternal",
"preferredEmail": "poctestcontact@example.com",
"contactType": "SUBSCRIBER",
"status": "ACTIVE",
"firmType": "TENANT",
"firmEntityUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"preferredContactLanguage": "ENGLISH",
"contactMeans": "EMAIL",
"createdAt": "2026-01-29T04:30:00.000000",
"updatedAt": "2026-01-29T04:30:00.000000"
}
PUT/api/contacts/{contactId}
Update contact details including compliance information
Kaboom AI integration can use this API to update contact compliance details
Use configuration APIs to get allowed values for fields like contactSource, segmentName, and stageName
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contactId | string | ✅ | Contact UUID |
Request Body
Send the complete contact object with updated fields. All fields from create contact are supported, plus additional compliance fields:
Core Fields
| Field | Type | Required | Description |
|---|---|---|---|
contactUuid | string | ✅ | Must match contactId from path |
firstName | string | ✅ | First name |
paternalLastName | string | ✅ | Paternal last name (shown as "Last names" in UI) |
middleName | string | No | Middle name |
maternalLastName | string | No | Maternal surname |
displayName | string | No | Auto-generated from names |
preferredEmail | string | ✅* | Email address (*required if no phone) |
preferredPhoneNumber | object | ✅* | Phone object with phoneCountryCode and phoneNumber (*required if no email) |
contactType | enum | ✅ | SUBSCRIBER, ACTIVE |
status | enum | ✅ | ACTIVE |
firmEntityUuid | string | ✅ | Tenant UUID |
firmName | string | No | Tenant name (auto-populated) |
firmType | string | ✅ | TENANT |
preferredContactLanguage | string | ✅ | ENGLISH, SPANISH |
contactMeans | enum | ✅ | EMAIL, PHONE |
contactPreference | enum | No | CALL, EMAIL (Contact Preference in UI) |
Personal Information (Compliance Fields)
| Field | Type | Required | Description |
|---|---|---|---|
gender | enum | No | MALE, FEMALE, OTHER |
dateOfBirth | string | No | Format: YYYY-MM-DD (Date of Birth in UI) |
identityType | enum | No | NATIONAL_ID, PASSPORT (Identity ID dropdown) |
identityId | string | No | ID number (Identity ID field) |
identityCountry | string | No | 3-letter country code (Identity country in UI) |
countryOfCitizenship | string | No | 3-letter country code (Country of Citizenship) |
countryOfBirth | string | No | 3-letter country code (Country of Birth) |
maritalStatus | enum | No | SINGLE, MARRIED, DIVORCED, WIDOWED |
Sales Information Fields
| Field | Type | Required | Description |
|---|---|---|---|
contactSource | string | No | Contact Source dropdown - Use GET /contacts/sources API |
contactPreference | enum | No | Contact Preference - CALL, EMAIL |
segmentName | string | No | Segment dropdown - Use GET /contacts/segments API |
capturedByEntityUuid | string | No | Captured By dropdown - Staff UUID |
capturedByType | string | No | TENANT |
stageName | string | No | Stage dropdown - Use GET /contacts/stages API |
Financial Information Fields
| Field | Type | Required | Description |
|---|---|---|---|
liquidNetWorth | string | No | Liquid Net Worth (numeric string) |
totalNetWorth | string | No | Total Net Worth (numeric string) |
annualIncome | string | No | Annual Income (numeric string) |
Partnership/Management Fields
| Field | Type | Required | Description |
|---|---|---|---|
contactManagerEntityUuid | string | No | Contact manager staff UUID |
contactManagerType | string | No | TENANT |
Address Fields
| Field | Type | Required | Description |
|---|---|---|---|
addresses | array | No | Array of address objects (see structure below) |
Address Object Structure
| Field | Type | Required | Description |
|---|---|---|---|
addressUuid | string | No | Address UUID (for updates, omit for new addresses) |
country | string | ✅ | 3-letter country code (e.g., ALB, USA) |
city | string | ✅ | City name |
state | string | ✅ | State/Province name |
commune | string | No | Commune |
streetName | string | ✅ | Street name |
streetNumber | string | ✅ | Street number |
apartment | string | No | Apartment/Suite number |
zipCode | string | ✅ | Postal Code |
addressType | enum | No | HOME, OFFICE |
contactAddressType | enum | No | SALES |
isPrimary | boolean | No | true/false |
landmark | string | No | Landmark reference |
latitude | number | No | Geo coordinate |
longitude | number | No | Geo coordinate |
- At least one contact method (email OR phone) is required
- When adding addresses, Country, City, State, Street, Street Number, and Postal Code are mandatory
- Multiple addresses can be added to the addresses array
Request Example
{
"contactUuid": "C019A5EE30BE0703E97DF93284EDE4CFE",
"firstName": "Alejandra",
"paternalLastName": "Kabakian",
"contactType": "SUBSCRIBER",
"status": "ACTIVE",
"firmEntityUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"firmName": "CONPAT_UAT",
"firmType": "TENANT",
"preferredContactLanguage": "SPANISH",
"contactMeans": "EMAIL",
"contactPreference": "CALL",
"preferredEmail": "alekabakian@gmail.com",
"preferredPhoneNumber": {
"phoneCountryCode": "+56",
"phoneNumber": "963065816"
},
"gender": "FEMALE",
"dateOfBirth": "1978-07-18",
"identityType": "NATIONAL_ID",
"identityId": "23817081-8",
"identityCountry": "CHL",
"countryOfCitizenship": "ALB",
"countryOfBirth": "ALB",
"maritalStatus": "SINGLE",
"annualIncome": "45000",
"liquidNetWorth": "1233",
"totalNetWorth": "30000",
"contactSource": "conocido",
"segmentName": "ultraHighNetWorth",
"stageName": "etapa2",
"contactManagerEntityUuid": "TS019A25A48E6177E8B989E9AECCA3F6DF",
"contactManagerType": "TENANT",
"capturedByEntityUuid": "TS019A4A28181679D6B9C0622062BA56D8",
"capturedByType": "TENANT",
"addresses": [
{
"addressUuid": "CAD019C0FE044D87C2E9BE47D7BEE24C6AE",
"country": "ALB",
"city": "Kaboom City",
"state": "Kaboom State",
"commune": "Kaboom Commune",
"streetName": "Kaboom Street",
"streetNumber": "123",
"apartment": "123",
"zipCode": "5123445",
"addressType": "HOME",
"contactAddressType": "SALES",
"isPrimary": false,
"landmark": null,
"latitude": null,
"longitude": null
}
]
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/contacts/C019A5EE30BE0703E97DF93284EDE4CFE' \
-X 'PUT' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"contactUuid":"C019A5EE30BE0703E97DF93284EDE4CFE","firstName":"Alejandra","paternalLastName":"Kabakian","contactType":"SUBSCRIBER","status":"ACTIVE","firmEntityUuid":"T019A16FF372A70B5A9307B00CE85E4DA","firmType":"TENANT","preferredContactLanguage":"SPANISH","contactMeans":"EMAIL","preferredEmail":"alekabakian@gmail.com","gender":"FEMALE","dateOfBirth":"1978-07-18","identityType":"NATIONAL_ID","identityId":"23817081-8","identityCountry":"CHL","maritalStatus":"SINGLE","annualIncome":"45000","liquidNetWorth":"1233","totalNetWorth":"30000","segmentName":"ultraHighNetWorth","stageName":"etapa2"}'
Response 200 OK
Returns the updated contact object with the same structure as the create contact response.
POST/api/v2/contacts?includeCustomFields={bool}
List contacts with advanced filtering (V2 API)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
includeCustomFields | boolean | No | Include custom fields in response (default: false) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 20) |
Request Example
{
"page": 0,
"size": 20
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/v2/contacts?includeCustomFields=true' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"page":0,"size":20}'
Contact Configuration APIs
These APIs return tenant-specific allowed values for contact fields
GET/api/core/platformconfigs/v1/contacts/sources
Get allowed contact source values
cURL
curl 'https://api.altafid.dev.altafid.net/api/core/platformconfigs/v1/contacts/sources' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
[
{
"id": 1,
"code": "conocido",
"displayName": "Conocido",
"description": "Known contact source"
},
{
"id": 2,
"code": "referral",
"displayName": "Referral",
"description": "Referred by existing client"
}
]
GET/api/core/platformconfigs/v1/contacts/segments
Get allowed contact segment values
cURL
curl 'https://api.altafid.dev.altafid.net/api/core/platformconfigs/v1/contacts/segments' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
[
{
"id": 1,
"code": "ultraHighNetWorth",
"displayName": "Ultra High Net Worth",
"description": "UHNW segment",
"minNetWorth": 30000000,
"maxNetWorth": null
},
{
"id": 2,
"code": "highNetWorth",
"displayName": "High Net Worth",
"description": "HNW segment",
"minNetWorth": 1000000,
"maxNetWorth": 30000000
}
]
GET/api/core/platformconfigs/v1/contacts/stages
Get allowed contact stage values
cURL
curl 'https://api.altafid.dev.altafid.net/api/core/platformconfigs/v1/contacts/stages' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
[
{
"id": 1,
"code": "etapa1",
"displayName": "Etapa 1",
"description": "Stage 1 - Initial Contact",
"order": 1
},
{
"id": 2,
"code": "etapa2",
"displayName": "Etapa 2",
"description": "Stage 2 - Qualification",
"order": 2
},
{
"id": 3,
"code": "etapa3",
"displayName": "Etapa 3",
"description": "Stage 3 - Proposal",
"order": 3
}
]
Notes
Notes can be linked to contacts or households and can include attachments
Kaboom AI integration can use this API to create notes for contacts
Notes can be created without attachments, or attachments can be added using the upload workflow
POST/api/v1/notes/contacts/{contactId}
Create a new note for a contact (with or without attachments)
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contactId | string | ✅ | Contact UUID (from contacts API) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
textContent | string | ✅ | Note title/header |
description | string | ✅ | Note content (HTML supported) |
noteCreatedFor | string | ✅ | Must match contactId from path |
attachmentUrls | array | ✅ | Array of S3 URLs (empty array if no attachments) |
associations | array | ✅ | Array of associated contacts/households |
Association Object Structure
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | CONTACT or HOUSEHOLD |
contactUuid | string | * | Required if type is CONTACT |
householdUuid | string | * | Required if type is HOUSEHOLD |
name | string | ✅ | Display name |
Request Example (Without Attachments)
{
"textContent": "Call Summary",
"description": "This is a summary from the call with the client
",
"noteCreatedFor": "C019C03B89AD675C4A8661CBDC8BBD986",
"attachmentUrls": [],
"associations": [
{
"type": "CONTACT",
"contactUuid": "C019C06D3FF2076BC986600EC8CA01F23",
"householdUuid": null,
"name": "John Doe"
},
{
"type": "HOUSEHOLD",
"contactUuid": null,
"householdUuid": "H019C09315DE575DFA44E591AD677E971",
"name": "Doe Family Household"
}
]
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/v1/notes/contacts/C019C03B89AD675C4A8661CBDC8BBD986' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"textContent":"Call Summary","description":"This is a summary from the call
","noteCreatedFor":"C019C03B89AD675C4A8661CBDC8BBD986","attachmentUrls":[],"associations":[{"type":"CONTACT","contactUuid":"C019C06D3FF2076BC986600EC8CA01F23","householdUuid":null,"name":"John Doe"}]}'
Response 201 Created
{
"noteUuid": "N019C0EFAE59F71A39170C901FF0BD7E0",
"textContent": "Call Summary",
"description": "This is a summary from the call
",
"noteCreatedFor": "C019C03B89AD675C4A8661CBDC8BBD986",
"attachmentUrls": [],
"associations": [...],
"createdAt": "2026-01-30T12:58:31.000000",
"updatedAt": "2026-01-30T12:58:31.000000"
}
noteUuid from the response to update the note later with attachments
PUT/api/v1/notes/{noteId}
Update an existing note (including adding attachments)
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
noteId | string | ✅ | Note UUID from create response |
Request Body
Same structure as create note. Update any fields including attachmentUrls array.
Request Example (With Attachments)
{
"textContent": "Call Summary",
"description": "Updated summary with attachment
",
"associations": [...],
"attachmentUrls": [
"https://altafid-notes-dev.s3.amazonaws.com/notes/T019A16FF372A70B5A9307B00CE85E4DA/temp/C019C03B89AD675C4A8661CBDC8BBD986/NAT019C0EFBD7D07519B722B9A414E39C96.png?X-Amz-Algorithm=..."
]
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/v1/notes/N019C0EFAE59F71A39170C901FF0BD7E0' \
-X 'PUT' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"textContent":"Call Summary","description":"Updated summary
","associations":[...],"attachmentUrls":["https://..."]}'
Note Attachment Upload Workflow
To add attachments to a note, follow this 3-step process:
1. Initialize upload to get S3 presigned URLs
2. Upload files directly to S3 using the presigned URLs
3. Confirm upload to finalize attachments
4. Update note with confirmed attachment URLs
POST/api/v1/notes/contacts/{contactId}/attachments/init
Step 1: Initialize attachment upload and get S3 presigned URLs
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contactId | string | ✅ | Contact UUID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
files | array | ✅ | Array of file metadata objects |
File Object Structure
| Field | Type | Required | Description |
|---|---|---|---|
fileName | string | ✅ | Original file name |
extension | string | ✅ | File extension (png, pdf, jpg, etc.) |
fileSize | integer | ✅ | File size in bytes |
Request Example
{
"files": [
{
"fileName": "call-transcript.pdf",
"extension": "pdf",
"fileSize": 43433
}
]
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/v1/notes/contacts/C019C03B89AD675C4A8661CBDC8BBD986/attachments/init' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"files":[{"fileName":"call-transcript.pdf","extension":"pdf","fileSize":43433}]}'
Response 200 OK
{
"uploadUrls": [
{
"fileName": "call-transcript.pdf",
"uploadUrl": "https://altafid-notes-dev.s3.amazonaws.com/notes/T019A16FF372A70B5A9307B00CE85E4DA/temp/C019C03B89AD675C4A8661CBDC8BBD986/NAT019C0EFBD7D07519B722B9A414E39C96.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260130T125831Z&...",
"fileUrl": "https://altafid-notes-dev.s3.amazonaws.com/notes/T019A16FF372A70B5A9307B00CE85E4DA/temp/C019C03B89AD675C4A8661CBDC8BBD986/NAT019C0EFBD7D07519B722B9A414E39C96.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260130T125831Z&X-Amz-Expires=604800&..."
}
]
}
- Use
uploadUrl for Step 2 (uploading file to S3)- Use
fileUrl for Step 3 (confirming upload)
PUTS3 Presigned URL
Step 2: Upload the file directly to S3 using the presigned URL from Step 1
Headers
| Header | Value | Description |
|---|---|---|
Content-Type | File MIME type | e.g., image/png, application/pdf |
Content-Length | File size | Size in bytes |
cURL
curl 'https://altafid-notes-dev.s3.amazonaws.com/notes/T019A16FF372A70B5A9307B00CE85E4DA/temp/C019C03B89AD675C4A8661CBDC8BBD986/NAT019C0EFBD7D07519B722B9A414E39C96.pdf?X-Amz-Algorithm=...' \
-X 'PUT' \
-H 'Content-Type: application/pdf' \
-H 'Content-Length: 43433' \
--data-binary '@/path/to/local/file.pdf'
Response 200 OK
Empty response body on successful upload
POST/api/v1/notes/contacts/{contactId}/attachments/confirm-upload
Step 3: Confirm the upload and finalize attachments
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
contactId | string | ✅ | Contact UUID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
attachmentUrls | array | ✅ | Array of fileUrl values from Step 1 response |
Request Example
{
"attachmentUrls": [
"https://altafid-notes-dev.s3.amazonaws.com/notes/T019A16FF372A70B5A9307B00CE85E4DA/temp/C019C03B89AD675C4A8661CBDC8BBD986/NAT019C0EFBD7D07519B722B9A414E39C96.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260130T125831Z&X-Amz-Expires=604800&..."
]
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/v1/notes/contacts/C019C03B89AD675C4A8661CBDC8BBD986/attachments/confirm-upload' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: conpat_suhas_admin@yopmail.com' \
-H 'x-user-id: TS019A25A48E6177E8B989E9AECCA3F6DF' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"attachmentUrls":["https://altafid-notes-dev.s3.amazonaws.com/notes/..."]}'
Response 200 OK
{
"confirmedUrls": [
"https://altafid-notes-dev.s3.amazonaws.com/notes/T019A16FF372A70B5A9307B00CE85E4DA/temp/C019C03B89AD675C4A8661CBDC8BBD986/NAT019C0EFBD7D07519B722B9A414E39C96.pdf?..."
]
}
attachmentUrls array when updating your note via PUT /notes/{noteId}
Households
Households are grouping entities (e.g. a family or business group) that contain members. Members can be Contacts (people) or Organisations (companies/entities).
- A Household can have many members (Contacts and Organisations)
- A Contact can belong to multiple Households
- The join entity is HouseholdMember, which carries metadata:
isPrimary,isFinanciallyResponsible,canMakeDecisions,ownershipPercentage,relationshipType - There is no
householdIdon the Contact entity
Structure:
Household (1) ↔ (many) HouseholdMember ↔ (1) Contact/Organisation
API Flow: Household → Contacts
| Step | Endpoint | Purpose |
|---|---|---|
| 1 | POST /api/v2/households | List households, get householdUuid values |
| 2 | GET /api/households/{householdUuid}/members | Get members, filter by memberType == "CONTACT" |
| 3 | GET /api/contacts/{contactUuid} | Optionally fetch full contact details |
API Flow: Contact → Household(s)
| Step | Endpoint | Purpose |
|---|---|---|
| 1 | GET /api/contacts/{contactUuid} | Get contact info |
| 2 | GET /api/households/{householdUuid}/members | Resolve household membership — the UI calls this to display which household(s) the contact belongs to |
POST/api/v2/households
List all households for the tenant (paginated). Returns basic household info — does not include members.
Request Body
{
"page": 0,
"size": 20,
"filters": []
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/v2/households' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"page":0,"size":20,"filters":[]}'
Response 200 OK
{
"content": [
{
"householdUuid": "H019C1D5FB17170678A60DDF055E06FC2",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"name": "Agent Household",
"partnershipUuid": null,
"partnershipManagerUuid": null,
"relationshipManagerType": "TENANT_STAFF",
"relationshipManagerUuid": "TS019A25A48E6177E8B989E9AECCA3F6DF",
"isActive": true,
"totalValue": 0,
"totalManagementAssets": 0,
"createdAt": "2026-02-02T08:02:16.5622",
"updatedAt": "2026-02-02T08:02:16.562202",
"memberCount": null,
"accountCount": 0,
"portfolioCount": null,
"accounts": null,
"partnershipName": null,
"relationshipManagerName": "Robert Williams Waldo 1",
"partnershipManagerName": null
}
],
"totalElements": 15,
"totalPages": 1
}
Response Fields
| Field | Type | Description |
|---|---|---|
householdUuid | string | Unique household identifier — use this for detail/members calls |
name | string | Household name |
relationshipManagerUuid | string | Staff UUID of the relationship manager |
relationshipManagerName | string | Display name of the relationship manager |
isActive | boolean | Whether the household is active |
totalValue | number | Total value of household |
totalManagementAssets | number | Total management assets |
accountCount | number | Number of linked accounts |
GET/api/households/{householdUuid}/detail
Get full household details including members, accounts, and portfolios embedded in the response.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
householdUuid | string | The household UUID (e.g. H019A5F49509F7F5AA706D631023AE72D) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/households/H019A5F49509F7F5AA706D631023AE72D/detail' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
{
"householdUuid": "H019A5F49509F7F5AA706D631023AE72D",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"name": "Familia Casassus",
"partnershipUuid": null,
"partnershipManagerUuid": null,
"relationshipManagerType": "TENANT_STAFF",
"relationshipManagerUuid": "TS019BA4AA0DBC782BA33809EE921758D8",
"isActive": true,
"totalValue": null,
"totalManagementAssets": null,
"createdAt": "2025-11-07T17:07:11.647576",
"updatedAt": "2026-01-16T20:09:31.901234",
"members": [
{
"householdMemberUuid": "HM019A5F4950A27745890123726BDD6368",
"householdUuid": "H019A5F49509F7F5AA706D631023AE72D",
"memberType": "CONTACT",
"contactUuid": "C019A5EE1F2BC79129B4371298633D089",
"displayName": "Unknown Member",
"isPrimary": false,
"isFinanciallyResponsible": false,
"canMakeDecisions": false,
"isActive": true
},
{
"householdMemberUuid": "HM019A5F4950AD7576BCFDA4EEE5EB0485",
"householdUuid": "H019A5F49509F7F5AA706D631023AE72D",
"memberType": "ORGANISATION",
"organisationUuid": "O019A5F1CCC067E5BB25B0DA6421BE345",
"displayName": "Unknown Member",
"isPrimary": false,
"isFinanciallyResponsible": false,
"canMakeDecisions": false,
"isActive": true
}
],
"accounts": [],
"portfolios": [],
"partnershipName": null,
"relationshipManagerName": "Miguel Rodriguez",
"partnershipManagerName": null
}
/detail endpoint may return "displayName": "Unknown Member" and null for contactName/organisationName. To get fully resolved names, use the /members endpoint instead.
GET/api/households/{householdUuid}/members
Get the list of members for a household with fully resolved names and details. This is the recommended endpoint for mapping household ↔ contact relationships.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
householdUuid | string | The household UUID |
cURL
curl 'https://api.altafid.dev.altafid.net/api/households/H019A5F49509F7F5AA706D631023AE72D/members' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
[
{
"householdMemberUuid": "HM019A5F4950A27745890123726BDD6368",
"householdUuid": "H019A5F49509F7F5AA706D631023AE72D",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"memberType": "CONTACT",
"displayName": "Amanda Esther Argandoña Castro",
"contactId": 879,
"contactUuid": "C019A5EE1F2BC79129B4371298633D089",
"contactName": "Amanda Esther Argandoña Castro",
"organisationUuid": null,
"organisationName": null,
"isPrimary": false,
"isFinanciallyResponsible": false,
"canMakeDecisions": false,
"ownershipPercentage": null,
"relationshipType": null,
"relationshipDescription": null,
"isActive": true,
"isDeleted": false,
"createdAt": "2025-11-07T17:07:11.652898"
},
{
"householdMemberUuid": "HM019A5F4950A772C798B48A4F10D71DB6",
"householdUuid": "H019A5F49509F7F5AA706D631023AE72D",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"memberType": "CONTACT",
"displayName": "Carlos Ignacio Casassus Fontecilla",
"contactId": 843,
"contactUuid": "C019A5EE11B1570C99AC17F24864E4A8B",
"contactName": "Carlos Ignacio Casassus Fontecilla",
"organisationUuid": null,
"organisationName": null,
"isPrimary": false,
"isFinanciallyResponsible": false,
"canMakeDecisions": false,
"ownershipPercentage": null,
"relationshipType": null,
"isActive": true,
"isDeleted": false,
"createdAt": "2025-11-07T17:07:11.658719"
},
{
"householdMemberUuid": "HM019A5F4950AD7576BCFDA4EEE5EB0485",
"householdUuid": "H019A5F49509F7F5AA706D631023AE72D",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"memberType": "ORGANISATION",
"displayName": "Green Barakiel Corp",
"contactId": null,
"contactUuid": null,
"contactName": null,
"organisationId": 149,
"organisationUuid": "O019A5F1CCC067E5BB25B0DA6421BE345",
"organisationName": "Green Barakiel Corp",
"isPrimary": false,
"isFinanciallyResponsible": false,
"canMakeDecisions": false,
"ownershipPercentage": null,
"relationshipType": null,
"isActive": true,
"isDeleted": false,
"createdAt": "2025-11-07T17:07:11.667856"
}
]
Member Fields
| Field | Type | Description |
|---|---|---|
householdMemberUuid | string | Unique ID of the join record |
householdUuid | string | Parent household UUID |
memberType | string | "CONTACT" (person) or "ORGANISATION" (company) |
contactUuid | string | null | Contact UUID — present when memberType is "CONTACT" |
contactId | number | null | Internal contact ID |
contactName | string | null | Contact display name |
organisationUuid | string | null | Organisation UUID — present when memberType is "ORGANISATION" |
organisationId | number | null | Internal organisation ID |
organisationName | string | null | Organisation display name |
displayName | string | Resolved display name of the member |
isPrimary | boolean | Whether this is the primary member of the household |
isFinanciallyResponsible | boolean | Whether this member is financially responsible |
canMakeDecisions | boolean | Whether this member can make decisions for the household |
ownershipPercentage | number | null | Ownership percentage in the household |
relationshipType | string | null | Relationship type (e.g. spouse, child, etc.) |
relationshipDescription | string | null | Free-text relationship description |
isActive | boolean | Whether the membership is active |
isDeleted | boolean | Soft delete flag |
members.filter(m => m.memberType === "CONTACT") — then use each member's contactUuid to fetch full contact details via GET /api/contacts/{contactUuid} if needed.
Tenant Staff
Use staff API to get assignedToId for task creation
GET/api/tenant-staff/search?name={name}
Search staff members by name
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Search by first/last name or email |
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 20) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/tenant-staff/search?page=0&size=20&name=kab' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
{
"content": [
{
"tenantStaffUuid": "TS019C06688AA57248B9EA5325DBDFC48E",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"firstName": "kaboom",
"middleName": "",
"paternalLastName": "poc",
"maternalLastName": "",
"userEmail": "kaboom-poc@yopmail.com",
"email": "kaboom-poc@yopmail.com",
"staffType": "ADMIN",
"legalResidence": "United States",
"timeZone": "UTC -5:00",
"platformLanguage": "en-US",
"commissionCurrency": "USD",
"contactPhone": null,
"jobPosition": null,
"dateOfBirth": null,
"currentResidence": null,
"isActive": true,
"createdAt": "2026-01-28T21:00:40.613087",
"updatedAt": "2026-01-28T21:02:03.638174"
}
],
"totalElements": 1,
"totalPages": 1
}
tenantStaffUuid as assignedToId when creating tasks
GET/api/tenant-staff/{id}
Get a staff member by their ID
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The unique ID of the tenant staff member |
cURL
curl 'https://api.altafid.com/api/tenant-staff/TS019D1B8A5EAC77E49D84C3483C659B50' \
-H 'accept: application/json' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'x-tenant-uuid: T019CFD220F1371F1A8BCC1DD4D869483' \
-H 'x-user-email: support@altafid.com' \
-H 'x-user-id: TS019D1B8A5EAC77E49D84C3483C659B50' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
{
"staffUuid": "TS019D1B8A5EAC77E49D84C3483C659B50",
"firstName": "Support",
"middleName": "",
"email": "support@altafid.com",
"userEmail": "support@altafid.com",
"maternalLastName": "",
"legalResidence": "Chile",
"platformLanguage": "en-US",
"contactPhone": null,
"currentResidence": null,
"isDeleted": false,
"timeZone": "America/Santiago",
"jobPosition": null,
"profilePictureUrl": null,
"dateOfBirth": null,
"staffType": "ADMIN",
"staffCategory": "TENANT_STAFF",
"firm": null,
"partnerUuid": null,
"isActive": true,
"commissionCurrency": "USD",
"createdAt": "2026-03-23T16:32:26.373826",
"updatedAt": "2026-03-23T16:32:26.373829",
"paternalLastName": "Altafid"
}
POST/api/tasks/filter?page={page}&size={size}
Retrieve a paginated list of tasks with optional filters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 20) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
formUuid | string | No | Form UUID filter |
langCode | string | No | Language code (e.g., en-US) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/tasks/filter?page=0&size=20' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"formUuid":"FF019ACE73F70976DFA062DF0E93EFBCAE","langCode":"en-US"}'
PUT/api/tasks/{taskId}
Update an existing task by ID
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
taskId | integer | ✅ | Task ID from task creation response |
Request Body
Send only the fields you want to update. All fields from the create task API are supported.
| Field | Type | Description |
|---|---|---|
taskName | string | Task title |
taskType | enum | EMAIL, CALL, TODO |
queue | enum | Task queue |
status | enum | Task status |
priority | enum | HIGH, MEDIUM, LOW |
assignedToId | string | Staff UUID |
dueDate | string | ISO 8601 format |
description | string | Task description (HTML supported) |
Request Example (Update Priority)
{
"priority": "MEDIUM"
}
cURL
curl 'https://api.altafid.dev.altafid.net/api/tasks/536' \
-X 'PUT' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'content-type: application/json' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF' \
--data-raw '{"priority":"MEDIUM"}'
Response 200 OK
Returns the updated task object with the same structure as the create task response.
GET/api/tenant-staff/all/paginated?page={page}&size={size}
List all tenant staff with pagination
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 20) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/tenant-staff/all/paginated?page=0&size=20' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Accounts
GET/api/accounts/linked?keyword={keyword}
Search linked accounts by account number or keyword
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword | string | No | Search by account number or name |
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 50) |
sort | string | No | Sort field (e.g., accountNumber) |
cURL
curl 'https://api.altafid.dev.altafid.net/api/accounts/linked?page=0&size=50&sort=accountNumber&keyword=11' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
{
"content": [
{
"accountUuid": "14c5c174-4e5f-5be7-bb73-d7d511452ef5",
"linkState": "linked",
"linkDate": "2000-01-01T00:00:00",
"tenantUuid": "T019A16FF372A70B5A9307B00CE85E4DA",
"accountNumber": "11000457",
"custodian": "stonex",
"accountStatus": "O",
"accountType": "UNKNOWN",
"marginAccount": true,
"taxResidency": null,
"disposalMethodForMutualFunds": "FIFO",
"disposalMethodForOtherSecurities": "FIFO",
"w8W9Indicator": null,
"baseCurrency": "USD",
"defaultFxCurrency": "USD",
"positionOnly": true,
"taxable": true,
"householdUuid": "H019A691D490478708B45387D9212BA1A",
"householdName": "Sociedad De Inversiones Macam Limitada",
"partnershipManagerUuid": "",
"partnershipManagerName": "",
"relationshipManagerUuid": "TS019A5F3EFF7476BEA03564E19B3AEBE1",
"relationshipManagerName": "Sebastián Costa",
"snapshotDate": "2025-11-27T00:00:00",
"distinctFxCurrencies": "USD/USDE",
"trading": "Discretionary",
"currentEodBalanceClp": 348838258.54,
"previousEodBalanceClp": 349429695.45,
"netDepositsClp": 0.00,
"dayChangeClp": -591436.91,
"gainLossClp": -591436.91,
"currentEodBalanceEur": 320815.20,
"previousEodBalanceEur": 320755.02,
"netDepositsEur": 0.00,
"dayChangeEur": 60.18,
"gainLossEur": 60.18,
"currentEodBalanceUsd": 375442.02,
"previousEodBalanceUsd": 375371.59,
"netDepositsUsd": 0.00,
"dayChangeUsd": 70.43,
"gainLossUsd": 70.43
}
],
"page": 0,
"size": 50,
"totalElements": 1,
"totalPages": 1
}
GET/api/accounts/linked
List all linked accounts with pagination
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 0) |
size | integer | No | Page size (default: 50) |
sort | string | No | Sort field (e.g., accountNumber) |
keyword | string | No | Leave empty to list all accounts |
cURL
curl 'https://api.altafid.dev.altafid.net/api/accounts/linked?page=0&size=50&sort=accountNumber&keyword=' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-US,en;q=0.5' \
-H 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9...' \
-H 'origin: https://conpat.uat.altafid.net' \
-H 'referer: https://conpat.uat.altafid.net/' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
-H 'x-tenant-uuid: T019A16FF372A70B5A9307B00CE85E4DA' \
-H 'x-user-email: kaboom-poc@yopmail.com' \
-H 'x-user-id: TS019C06688AA57248B9EA5325DBDFC48E' \
-H 'x-user-type: TENANT_STAFF'
Response 200 OK
Returns the same structure as the search endpoint with paginated account data.
accountUuid to reference accounts in other API calls