Altafid API Documentation

Base URL: https://api.altafid.dev.altafid.net
Environment: UAT
Tenant UUID: T019A16FF372A70B5A9307B00CE85E4DA

Test Credentials

Usernamekaboom-poc@yopmail.com
PasswordPassword123!

Global Headers (All Authenticated Requests)

HeaderValueDescription
AuthorizationBearer {token}Access token from login
x-tenant-uuidT019A16FF372A70B5A9307B00CE85E4DATenant identifier
x-user-emailkaboom-poc@yopmail.comUser email
x-user-idTS019C06688AA57248B9EA5325DBDFC48EUser staff UUID
x-user-typeTENANT_STAFFUser 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

FieldTypeDescription
tokenstringAccess token (expires in 1 hour)
refreshTokenstringRefresh token (expires in 7 days)
tenantUuidstringUse in x-tenant-uuid header
tenantStaffUuidstringUse in x-user-id header
usernamestringUse in x-user-email header
expiresInnumberMilliseconds 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

⚠️ Important:
Kaboom AI integration can use this API to create a new task
partnerId must equal tenantUuid = T019A16FF372A70B5A9307B00CE85E4DA

Request Body

FieldTypeRequiredDescription
taskNamestringTask title
taskTypeenumEMAIL, CALL, TODO
queueenumSee enums reference below
statusenumQueue-specific status (see matrix below)
priorityenumHIGH, MEDIUM, LOW
partnerIdstringMust be tenantUuid (T019A16FF372A70B5A9307B00CE85E4DA)
contactIdstringNoContact UUID (from contacts API)
assignedToIdstringStaff UUID (from staff API)
dueDatestringISO 8601 format
descriptionstringHTML supported
createdByIdstringCreator staff UUID
createdByTypestringADVISOR_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

ValueDescription
EMAILEmail task
CALLPhone call task
TODOTo-do item (displays as TO_DO in UI)

Priority Levels

ValueDescription
HIGHHigh priority
MEDIUMMedium priority
LOWLow priority

Queues & Allowed Statuses

QueueAllowed 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

Search contacts by name or email

Query Parameters

ParameterTypeRequiredDescription
searchTermstringNoSearch by first/last name or email
pageintegerNoPage number (default: 0)
sizeintegerNoPage 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
}
💡 Use 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

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 0)
sizeintegerNoPage 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

ParameterTypeDescription
contactUuidstringThe 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
}
⚠️ Household ↔ Contact Relationship: Contacts do not have a 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

⚠️ Important:
Kaboom AI integration can use this API to create a new lead/contact
firmId must equal tenantUuid = T019A16FF372A70B5A9307B00CE85E4DA

Request Body

FieldTypeRequiredDescription
firstNamestringFirst name
middleNamestringNoMiddle name
paternalLastNamestringPaternal last name
maternalLastNamestringNoMaternal surname
preferredEmailstring✅*Email address (*required if no phone)
phoneNumberobject✅*Phone number object (*required if no email)
contactMeansenumEMAIL, PHONE
contactTypeenumSUBSCRIBER
statusenumACTIVE
firmIdstringMust be tenantUuid (T019A16FF372A70B5A9307B00CE85E4DA)
firmTypestringTENANT
preferredContactLanguagestringENGLISH
contactManagerIdstringNoStaff UUID (from staff search API)
contactManagerFirmTypestringNoTENANT
stagestringNoetapa1 or etapa2 or etapa3
💡 Note: At least one contact means (email or phone) is required. Use 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

⚠️ Important:
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

ParameterTypeRequiredDescription
contactIdstringContact UUID

Request Body

Send the complete contact object with updated fields. All fields from create contact are supported, plus additional compliance fields:

Core Fields
FieldTypeRequiredDescription
contactUuidstringMust match contactId from path
firstNamestringFirst name
paternalLastNamestringPaternal last name (shown as "Last names" in UI)
middleNamestringNoMiddle name
maternalLastNamestringNoMaternal surname
displayNamestringNoAuto-generated from names
preferredEmailstring✅*Email address (*required if no phone)
preferredPhoneNumberobject✅*Phone object with phoneCountryCode and phoneNumber (*required if no email)
contactTypeenumSUBSCRIBER, ACTIVE
statusenumACTIVE
firmEntityUuidstringTenant UUID
firmNamestringNoTenant name (auto-populated)
firmTypestringTENANT
preferredContactLanguagestringENGLISH, SPANISH
contactMeansenumEMAIL, PHONE
contactPreferenceenumNoCALL, EMAIL (Contact Preference in UI)
Personal Information (Compliance Fields)
FieldTypeRequiredDescription
genderenumNoMALE, FEMALE, OTHER
dateOfBirthstringNoFormat: YYYY-MM-DD (Date of Birth in UI)
identityTypeenumNoNATIONAL_ID, PASSPORT (Identity ID dropdown)
identityIdstringNoID number (Identity ID field)
identityCountrystringNo3-letter country code (Identity country in UI)
countryOfCitizenshipstringNo3-letter country code (Country of Citizenship)
countryOfBirthstringNo3-letter country code (Country of Birth)
maritalStatusenumNoSINGLE, MARRIED, DIVORCED, WIDOWED
Sales Information Fields
FieldTypeRequiredDescription
contactSourcestringNoContact Source dropdown - Use GET /contacts/sources API
contactPreferenceenumNoContact Preference - CALL, EMAIL
segmentNamestringNoSegment dropdown - Use GET /contacts/segments API
capturedByEntityUuidstringNoCaptured By dropdown - Staff UUID
capturedByTypestringNoTENANT
stageNamestringNoStage dropdown - Use GET /contacts/stages API
Financial Information Fields
FieldTypeRequiredDescription
liquidNetWorthstringNoLiquid Net Worth (numeric string)
totalNetWorthstringNoTotal Net Worth (numeric string)
annualIncomestringNoAnnual Income (numeric string)
Partnership/Management Fields
FieldTypeRequiredDescription
contactManagerEntityUuidstringNoContact manager staff UUID
contactManagerTypestringNoTENANT
Address Fields
FieldTypeRequiredDescription
addressesarrayNoArray of address objects (see structure below)
Address Object Structure
FieldTypeRequiredDescription
addressUuidstringNoAddress UUID (for updates, omit for new addresses)
countrystring3-letter country code (e.g., ALB, USA)
citystringCity name
statestringState/Province name
communestringNoCommune
streetNamestringStreet name
streetNumberstringStreet number
apartmentstringNoApartment/Suite number
zipCodestringPostal Code
addressTypeenumNoHOME, OFFICE
contactAddressTypeenumNoSALES
isPrimarybooleanNotrue/false
landmarkstringNoLandmark reference
latitudenumberNoGeo coordinate
longitudenumberNoGeo coordinate
💡 Note on Required Fields:
- 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.

💡 Pro Tip: Use the configuration APIs below to fetch allowed values for contactSource, segmentName, and stageName fields before updating contacts.

POST/api/v2/contacts?includeCustomFields={bool}

List contacts with advanced filtering (V2 API)

Query Parameters

ParameterTypeRequiredDescription
includeCustomFieldsbooleanNoInclude custom fields in response (default: false)

Request Body

FieldTypeRequiredDescription
pageintegerNoPage number (default: 0)
sizeintegerNoPage 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

💡 Usage: Call these APIs to get valid values for contactSource, segmentName, and stageName before creating or updating contacts

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

⚠️ Important:
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

ParameterTypeRequiredDescription
contactIdstringContact UUID (from contacts API)

Request Body

FieldTypeRequiredDescription
textContentstringNote title/header
descriptionstringNote content (HTML supported)
noteCreatedForstringMust match contactId from path
attachmentUrlsarrayArray of S3 URLs (empty array if no attachments)
associationsarrayArray of associated contacts/households

Association Object Structure

FieldTypeRequiredDescription
typestringCONTACT or HOUSEHOLD
contactUuidstring*Required if type is CONTACT
householdUuidstring*Required if type is HOUSEHOLD
namestringDisplay 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" }
💡 Save the 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

ParameterTypeRequiredDescription
noteIdstringNote 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:

Attachment Upload Steps:
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

ParameterTypeRequiredDescription
contactIdstringContact UUID

Request Body

FieldTypeRequiredDescription
filesarrayArray of file metadata objects

File Object Structure

FieldTypeRequiredDescription
fileNamestringOriginal file name
extensionstringFile extension (png, pdf, jpg, etc.)
fileSizeintegerFile 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&..."
    }
  ]
}
💡 Save both URLs:
- 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

HeaderValueDescription
Content-TypeFile MIME typee.g., image/png, application/pdf
Content-LengthFile sizeSize 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

ParameterTypeRequiredDescription
contactIdstringContact UUID

Request Body

FieldTypeRequiredDescription
attachmentUrlsarrayArray 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?..."
  ]
}
💡 Final Step: Use the confirmed URLs from this response in the 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).

Data Model — Many-to-Many Relationship:
  • 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 householdId on the Contact entity

Structure: Household (1) ↔ (many) HouseholdMember ↔ (1) Contact/Organisation

API Flow: Household → Contacts

StepEndpointPurpose
1POST /api/v2/householdsList households, get householdUuid values
2GET /api/households/{householdUuid}/membersGet members, filter by memberType == "CONTACT"
3GET /api/contacts/{contactUuid}Optionally fetch full contact details

API Flow: Contact → Household(s)

StepEndpointPurpose
1GET /api/contacts/{contactUuid}Get contact info
2GET /api/households/{householdUuid}/membersResolve 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

FieldTypeDescription
householdUuidstringUnique household identifier — use this for detail/members calls
namestringHousehold name
relationshipManagerUuidstringStaff UUID of the relationship manager
relationshipManagerNamestringDisplay name of the relationship manager
isActivebooleanWhether the household is active
totalValuenumberTotal value of household
totalManagementAssetsnumberTotal management assets
accountCountnumberNumber of linked accounts

GET/api/households/{householdUuid}/detail

Get full household details including members, accounts, and portfolios embedded in the response.

Path Parameters

ParameterTypeDescription
householdUuidstringThe 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
}
⚠️ Note: The /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

ParameterTypeDescription
householdUuidstringThe 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

FieldTypeDescription
householdMemberUuidstringUnique ID of the join record
householdUuidstringParent household UUID
memberTypestring"CONTACT" (person) or "ORGANISATION" (company)
contactUuidstring | nullContact UUID — present when memberType is "CONTACT"
contactIdnumber | nullInternal contact ID
contactNamestring | nullContact display name
organisationUuidstring | nullOrganisation UUID — present when memberType is "ORGANISATION"
organisationIdnumber | nullInternal organisation ID
organisationNamestring | nullOrganisation display name
displayNamestringResolved display name of the member
isPrimarybooleanWhether this is the primary member of the household
isFinanciallyResponsiblebooleanWhether this member is financially responsible
canMakeDecisionsbooleanWhether this member can make decisions for the household
ownershipPercentagenumber | nullOwnership percentage in the household
relationshipTypestring | nullRelationship type (e.g. spouse, child, etc.)
relationshipDescriptionstring | nullFree-text relationship description
isActivebooleanWhether the membership is active
isDeletedbooleanSoft delete flag
💡 Tip: To get all contacts in a household, filter the members array: 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

Search staff members by name

Query Parameters

ParameterTypeRequiredDescription
namestringYesSearch by first/last name or email
pageintegerNoPage number (default: 0)
sizeintegerNoPage 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
}
💡 Use tenantStaffUuid as assignedToId when creating tasks

GET/api/tenant-staff/{id}

Get a staff member by their ID

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe 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

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 0)
sizeintegerNoPage size (default: 20)

Request Body

FieldTypeRequiredDescription
formUuidstringNoForm UUID filter
langCodestringNoLanguage 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

ParameterTypeRequiredDescription
taskIdintegerTask ID from task creation response

Request Body

Send only the fields you want to update. All fields from the create task API are supported.

FieldTypeDescription
taskNamestringTask title
taskTypeenumEMAIL, CALL, TODO
queueenumTask queue
statusenumTask status
priorityenumHIGH, MEDIUM, LOW
assignedToIdstringStaff UUID
dueDatestringISO 8601 format
descriptionstringTask 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

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 0)
sizeintegerNoPage 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

Search linked accounts by account number or keyword

Query Parameters

ParameterTypeRequiredDescription
keywordstringNoSearch by account number or name
pageintegerNoPage number (default: 0)
sizeintegerNoPage size (default: 50)
sortstringNoSort 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

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 0)
sizeintegerNoPage size (default: 50)
sortstringNoSort field (e.g., accountNumber)
keywordstringNoLeave 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.

💡 Use accountUuid to reference accounts in other API calls