Contacts & Organizations
Verified against source (13)
contact/Contact.cscontact/Contact.Fields.cscontact/Organization.cscontact/ContactMethod.Fields.cscontact/ContactMethodCollection.cscontact/ContactTemplate.Fields.cscontact/ProfessionalLicense.Fields.cscontact/Collection.Fields.csConfig/Contact.configConfig/Organization.configConfig/Collection.configcontact/app.configforms-proxy/mapping.mjs
People are Contact records and companies are Organization records. Operations follow the standard QBO route pattern:
/api/contact/{operation}and/api/organization/{operation}run synchronously on the web server./api/contact/queue/{operation}queues the operation for an app server. Use it for bulk address validation and compliance checks.
Classes
Section titled “Classes”| Type | Purpose |
|---|---|
Contact |
A person or address, bound to a parent through Object / ObjectID. Fields include FirstName, MiddleName, LastName, Prefix, Suffix, Company, Title, Address, City, State, PostalCode, Country, BirthDate, SpokenLanguage, Latitude, Longitude, ContactTemplateID, and ParentContactID (for aliases and related contacts). |
Organization |
A company. Derives from Contact (so it shares address fields and methods), adds Organization, and is never re-parented to the record it’s saved with. |
ContactMethod |
MethodType, ContactValue, PrimaryMethod, ValidStart, ValidEnd, VerifiedSource, on a ContactID. |
ContactTemplate |
A contact role: AppliesTo, Repeatable, ExtranetEnabled, CustomStatusList, CustomTypeList. |
ProfessionalLicense |
ProfessionalLicenseType, Effective, Expires, VerificationType, VerifiedDate, VerifiedBy, AttachmentID, GeographyID, on an Object / ObjectID. |
Collection / CollectionMember |
A named group (SourceObject, CollectionTemplateID) and its members (SourceObjectID, EffectiveDate, ExpiresDate, Priority). |
Create a contact
Section titled “Create a contact”POST /api/contact/save?Object=Organization&ObjectID=12&Template=Primary Contact&FirstName=Maria&LastName=Lopez&Email=maria@example.com&Phone=555-0100Any parameter named after a contact method type (Email, Phone, or a type you’ve added) creates that method on the contact. With the default ContactMethodUniqueByType setting, a contact has one method per type: saving a new value updates the existing method, and saving an empty value removes it.
Create an organization with contacts
Section titled “Create an organization with contacts”Contacts (and other children, such as messages) can be created as a nested collection when saving a parent, using {Parent}_Contacts_{index}_{Field}. This call starts a workflow, creates its parent organization, and adds the organization’s first contact:
POST /api/decision/save?Template=Website Inquiry&Organization_Organization=Example Co&Organization_Email=info@example.com&Organization_Contacts_0_FirstName=Maria&Organization_Contacts_0_LastName=Lopez&Organization_Contacts_0_Email=maria@example.com&Organization_Contacts_0_Title=Operations Director&Organization_Contacts_0_Phone=555-0100Increment the index (_1_, _2_) for more contacts.
Validate addresses
Section titled “Validate addresses”GET /api/contact/normalize?ID=101,102&Confidence=90GET /api/contact/geocode?Address=100 Main St Apt 4&City=Springfield&State=ILGET /api/contact/addressparts?Address=100 Main St, Springfield, IL 62701| Operation | What it does |
|---|---|
normalize |
Geocodes each contact in ID and, if the best match meets Confidence (default 80), saves the corrected address, Latitude, Longitude, VerifiedSource, and VerifiedDate. Optional Provider limits which mapping providers are tried. |
geocode |
Returns candidate addresses without saving. Requires Address plus PostalCode, or City and State. |
addressparts |
Splits a one-line address into street, city, state, and postal code. |
For large batches, use /api/contact/queue/normalize.
Match names
Section titled “Match names”GET /api/contact/matchnames?FirstName=Jon A. Smith&SecondName=Smith, JonathanGET /api/contact/isnamecontained?Name=Maria Lopez&ContainedIn=Maria Lopez and Daniel Lopez&Confidence=90matchnames returns a Confidence from 0 to 100 that two names are the same entity. isnamecontained returns whether one name appears within another (confidence defaults to 100).
Sensitive data and compliance
Section titled “Sensitive data and compliance”| Operation | What it does |
|---|---|
unmaskssn |
Returns USSSN for the contacts in ID. Requires the UnmaskSSN permission and writes a SecurityLog entry per contact. Elsewhere, USSSN is returned masked as XXX-XX- plus USSSN4. |
scrasearch |
Queues a military status check for the contacts in ID and sets SCRAStatus to Pending. Results update SCRAStatus, SCRASource, SCRAStatusAsOf, and related fields. See Military Search. |
Organizations
Section titled “Organizations”| Operation | What it does |
|---|---|
/api/organization/save |
Creates or updates an organization. Method-type parameters (Email, Phone) work as they do for contacts. |
/api/organization/register |
Creates an organization and its first user from an account that may be anonymous, optionally starts a process, and emails the user to confirm the account. |
/api/organization/registeruser |
Registers a new user against an existing organization (identified by a Lookup code) and sends a notification. |
/api/organization/searchbyperson |
Lists the organizations the current user belongs to. |
Collections
Section titled “Collections”GET /api/collection/memberlist?Collection=Escalations Teammemberlist accepts CollectionID or Collection (the name).