Contacts
The people and companies you sell to. Everything a quote or an invoice needs to name somebody, and the addresses it prints.
What you can do
- get List contacts /api/public/v1/contacts
Pull your customer list into whatever you're building. This is the call a connector runs first, and then again on a schedule to pick up what changed.
- get Get one contact /api/public/v1/contacts/{id}
Fetch a single contact when you already have its id - from a list you pulled earlier, or stored against your own record.
- post Create a contact /api/public/v1/contacts
Add somebody to your books from your own system. A form on your website, a lead out of your CRM, a customer you're migrating across.
- patch Update a contact /api/public/v1/contacts/{id}
Change what you sent before. Send only the fields you want to change - anything you leave out keeps the value it already had.
- delete Delete a contact /api/public/v1/contacts/{id}
Remove a contact you added in error.
Fields
31 in total: 28 you set, 3 we keep. Every one of them can come back empty, so read defensively rather than assuming a value is there.
| Field | Type | Written by |
|---|---|---|
| id | string | us |
| createdAt | string | us |
| updatedAt | string | us |
| firstNamemax 100 | string | you |
| middleNamemax 100 | string | you |
| lastNamemax 100 | string | you |
| nickNamemax 100 | string | you |
| salutationmax 50 | string | you |
| titlemax 100 | string | you |
| jobTitlemax 150 | string | you |
| departmentmax 100 | string | you |
| emailmax 180 | string | you |
| phoneOffice | string | you |
| phoneMobile | string | you |
| phoneHome | string | you |
| phoneOther | string | you |
| fax | string | you |
| assistantName | string | you |
| assistantPhone | string | you |
| description | string | you |
| birthDate | string | you |
| gender | string | you |
| companyId | string | you |
| isCustomer | boolean | you |
| isSupplier | boolean | you |
| isPrimary | boolean | you |
| doNotCall | boolean | you |
| lifecycleStage | string | you |
| leadSource | string | you |
| reportsToId | string | you |
| tags | array | you |
The shape it comes back in
Generated from the contract - every field, nothing invented. The values are type names rather than a real record, because we won't put made-up data on a page.
{
"id": "string",
"createdAt": "string",
"updatedAt": "string",
"firstName": "string",
"middleName": "string",
"lastName": "string",
"nickName": "string",
"salutation": "string",
"title": "string",
"jobTitle": "string",
"department": "string",
"email": "string",
"phoneOffice": "string",
"phoneMobile": "string",
"phoneHome": "string",
"phoneOther": "string",
"fax": "string",
"assistantName": "string",
"assistantPhone": "string",
"description": "string",
"birthDate": "string",
"gender": "string",
"companyId": "string",
"isCustomer": false,
"isSupplier": false,
"isPrimary": false,
"doNotCall": false,
"lifecycleStage": "string",
"leadSource": "string",
"reportsToId": "string",
"tags": []
} What's deliberately not here
This is a smaller list than what you'd see on the screen inside ObraLedger, and that's on purpose. Anything we publish becomes a promise we have to keep, and taking a field away later breaks whatever you built on it. Adding one doesn't. So the list starts narrow and grows when somebody needs it.
If something you need is missing, tell us what you're building. That's what shapes the order these get added in.
Base URL https://app.obraledger.com.
Building something and stuck? Tell us - we'd rather hear it than have you guess.