API Sections
Preamble
The Solve360 External API is implemented over HTTP and is RESTful. Every item has its own URI and is manipulated in isolation.
You will normally send your Request data in XML format, but we understand JSON and form encoded data just as well. If you want to use a non-XML request format simply set the HTTP Content-type header to either application/json or application/x-www-form-urlencoded. Conversely, we will normally send response data in XML form unless you set the HTTP Accepts header to application/json.
To receive a response in JSON with padding (JSONP) format simply pass a 'callback' parameter in the query string. For example, appending callback=myFunction to your request will result in a response body of: myFunction(...). Callbacks may only contain alphanumeric characters and underscores; any invalid characters will be stripped.
Access to features and data is limited to the actual user account being used to access the API.
To help you get get going quickly lists of all Field Names, Category Tag IDs and Ownership IDs specific to your organization are provided within your user account under: Workspace, My Account, API Reference.
Date/time is always reported in UTC and formatted according to ISO 8601. When saving date/time data values must first be converted from local time to UTC and follow one of these formats: 2004-02-12T15:19:21+00:00 (ISO 8601), 2004-02-12 15:19:21, or just 2004-02-12.
Interface Summary at https://secure.solve360.com
| URI | HTTP Methods |
|---|---|
| /contacts/ | [GET, POST] |
| /contacts/{contactId}/ | [GET, PUT, DELETE] |
| /contacts/categories/ | [POST, GET] |
| /contacts/fields/ | [GET] |
| /ownership/ | [GET] |
| /contacts/{activitySegmentName}/ | [POST] |
| /contacts/{activitySegmentName}/{activityId}/ | [PUT, DELETE] |
Methods
curl -u '{userEmail}:{userApiToken}' -X POST -H 'Content-Type: application/xml' -d '<request><firstname>Aaron</firstname><lastname>Baileys</lastname><categories><add><category>315890</category></add></categories><ownership>83421</ownership></request>' https://secure.solve360.com/contacts
Parameters
...
<response>
...
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X PUT -H 'Content-Type: application/xml' -d '<request><businessemail>support@workplate.com</businessemail><categories><add><category>53966</category></add></categories></request>' https://secure.solve360.com/contacts/31507
Parameters
...
<response>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X GET https://secure.solve360.com/contacts/31507
...
<response>
<item>
<id>31507</id>
<name>Aaron Baileys</name>
<typeid>1</typeid>
<created>2009-06-20T14:49:39+00:00</created>
<viewed>2009-06-20T15:13:07+00:00</viewed>
<updated>2009-06-20T15:12:09+00:00</updated>
<ownership>12830</ownership>
<flagged>1</flagged>
<fields>
<businessphonedirect>(382) 853-8544</businessphonedirect>
<homephone>(333) 934-9392</homephone>
<cellularphone>(333) 828-4633</cellularphone>
<businessfax>(111) 222-3333</businessfax>
<firstname>Aaron</firstname>
<custom329972>7363273</custom329972>
<assignedto>53936</assignedto>
<businessaddress>1710, 840 7th Ave. SW
Calgary, Alberta</businessaddress>
<businessphonemain>(580) 648-9094</businessphonemain>
<lastname>Baileys</lastname>
<custom18432>Farm</custom18432>
<jobtitle>Maintenance Mechanic</jobtitle>
<background>
Referred by David, he's built three other homes in the valley.<br>
</background>
<businessemail>support@workplate.com</businessemail>
<website>www.clientsite.com</website>
</fields>
</item>
<activities>
<id603944>
<level>1</level>
<cn>Task List Title</cn>
<created>2009-06-20T14:59:18+00:00</created>
<viewed>2009-06-20T15:32:37+00:00</viewed>
<updated>2009-06-20T15:12:09+00:00</updated>
<flagged/>
<typeid>22</typeid>
<parent>603938</parent>
<creatorid>28230</creatorid>
<creatorname>Steve Ireland</creatorname>
<position>1</position>
<fields>
<completed>0</completed>
<description>task list description</description>
<title>Task List Title</title>
</fields>
<modificatorid>28230</modificatorid>
<modificatorname>Gerald Black</modificatorname>
<id>603944</id>
</id603944>
</activities>
<categories>
<category>
<id>568907</id>
<name>New Prospect</name>
</category>
<category>
<id>315890</id>
<name>Qualified Prospect</name>
</category>
</categories>
<relateditems>
<relatedto>
<id>45531</id>
<typeid>1</typeid>
<name>Brenda Arnett</name>
<note>Spouse</note>
</relatedto>
<relatedto>
<id>31358</id>
<typeid>40</typeid>
<name>Systectro</name>
<note>Employee</note>
</relatedto>
<relatedto>
<id>31477</id>
<typeid>40</typeid>
<name>Inconactron Technology</name>
<note>2001-2006</note>
</relatedto>
<relatedto>
<id>31404</id>
<typeid>40</typeid>
<name>Exactratems Consulting</name>
<note>Board member</note>
</relatedto>
<relatedto>
<id>46335</id>
<typeid>1</typeid>
<name>Steve Austin</name>
<note>brother</note>
</relatedto>
</relateditems>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X DELETE https://secure.solve360.com/contacts/31507
...
<response>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -v -X GET -H 'Content-Type: application/xml' -o 'result.xml' -d '<request><layout>1</layout><searchmode>Cany</searchmode><searchvalue>aaron</searchvalue><filtermode></filtermode><filtervalue></filtervalue><special></special><limit>100</limit><start></start><sortfield></sortfield><sortdir></sortdir></request>' https://secure.solve360.com/contacts
Parameters
| Attribute | Description | Accepted values |
|---|---|---|
| layout | Output summary fields or all fields | [0,1] |
| fieldslist | List fields to output when layout = 1 | fieldname (delimited by comma) |
| categories | Output categories when layout = 1 | [0,1] |
| filtermode | Primary search context | [flagged, assigned, nocategory, viewed, created, updated, notviewed, notupdated, duetoday, duesoon, tasksoverdue, owner, category, archived, byphone (any phone field), byemail (any email field)] |
| filtervalue | {string} | |
| special | Result must match any specified categories or all specified categories | [AND, OR] |
| searchmode | Sub filter search context | [Sany, Cany, Canyitem, Sanyitem, Canyjournal, Sanyjournal, C{fieldId}, S{fieldId}, E{fieldId}, N{fieldId}] S = field starts with, C = field contains, E = field is empty, N = field is not empty |
| searchvalue | {string} | |
| limit | How many contacts to display per page | {integer} |
| start | Record to start from (zero based) | {integer} |
| sortfield | Which field is used for sorting | [name, created, flagged, update_time] |
| sortdir | Sort direction | [ASC, DESC] |
...
<response>
<id31507>
<id>31507</id>
<name>Aaron Baileys</name>
<parentid>84265</parentid>
<flagged>1</flagged>
<businessphonedirect>(382) 853-8544</businessphonedirect>
<businessfax>(111) 222-3333</businessfax>
<cellularphone>(333) 828-4633</cellularphone>
<homephone>(333) 934-9392</homephone>
<businessphonemain>(580) 648-9094</businessphonemain>
<businessaddress>1710, 840 7th Ave. SW
Calgary, Alberta</businessaddress>
<assignedto>53936</assignedto>
<custom329972>7363273</custom329972>
<firstname>Aaron</firstname>
<lastname>Baileys</lastname>
<custom18432>Farm</custom18432>
<jobtitle>Maintenance Mechanic</jobtitle>
<background>
Referred by David, he's built three other homes in the valley.<br>
</background>
<businessemail>support@workcompedge.com</businessemail>
<website>www.clientsite.com</website>
<company>
Exactratems Consulting, Inconactron Technology, Systectro
</company>
<created>2008-08-04T00:00:10+00:00</created>
<viewed>2009-06-23T00:50:35+00:00</viewed>
<updated>2009-06-18T21:53:24+00:00</updated>
</id31507>
<id34943>
<id>34943</id>
<name>Aaron Grant</name>
<parentid>28227</parentid>
<flagged/>
<firstname>Aaron</firstname>
<businessemail>Aaron.E.Grant@spambob.com</businessemail>
<jobtitle>Design Drafter Cad/Cam</jobtitle>
<lastname>Grant</lastname>
<businessaddress>4437, Grand Avenue
Winter Park FL 32789
US</businessaddress>
<businessphonemain>(407) 713-0145</businessphonemain>
<company>Acle</company>
<created>2008-08-04T00:03:05+00:00</created>
<viewed>2009-01-19T15:49:29+00:00</viewed>
<updated>2008-08-31T18:41:42+00:00</updated>
</id34943>
...
<count>21</count>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X POST -H 'Content-Type: application/xml' -d '<request><name>A New Category</name></request>' https://secure.solve360.com/contacts/categories
...
<response>
<id>136957</id>
<status>success</status>
</response>
...
<response>
<categories>
<category>
<id>315890</id>
<name>1. Lead</name>
</category>
<category>
<id>568907</id>
<name>2. Prospect</name>
</category>
<category>
<id>355922</id>
<name>3. High Value Prospect</name>
</category>
<category>
<id>471194</id>
<name>4. Client</name>
</category>
</categories>
<status>success</status>
</response>
...
<response>
<fields>
<field>
<id>9793</id>
<name>firstname</name>
<label>First Name</label>
<type/>
</field>
<field>
<id>9794</id>
<name>lastname</name>
<label>Last Name</label>
<type/>
</field>
<field>
<id>3530279</id>
<name>custom3530279</name>
<label>Elected Amenities</label>
<type>text</type>
<categories>
<category>7940151</category>
<category>11948598</category>
</categories>
</field>
<field>
<id>1473638</id>
<name>custom1473638</name>
<label>Floor plan</label>
<type>select</type>
<options>
<option>Single</option>
<option>Double</option>
<option>Split</option>
</options>
<categories>
<category>7940151</category>
</categories>
</field>
</fields>
<status>success</status>
</response>
...
<response>
<users>
<user>
<id>28227</id>
<name>Terry Black</name>
<email>tblack@northrock.com</email>
<preventlogin>0</preventlogin>
<preventprivatedata>0</preventprivatedata>
<administrator>1</administrator>
</user>
<user>
<id>53936</id>
<name>Mike Bautista</name>
<email>mbautista@northrock.com</email>
<preventlogin>0</preventlogin>
<preventprivatedata>1</preventprivatedata>
<administrator>0</administrator>
</user>
</users>
<groups>
<group>
<id>53915</id>
<name>Northrock</name>
<email>northrock@northrock.solve360.com</email>
</group>
<group>
<id>83421</id>
<name>Customer Service</name>
<email>customerservice@northrock.solve360.com</email>
</group>
</groups>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X POST -H 'Content-Type: application/xml' -d '<request><parent>353687</parent><data><title>Inspect Property</title><duedate>2009-10-11</duedate><priority>3</priority></data></request>' https://secure.solve360.com/contacts/task
Parameters
Activity Definitions
| Activity | Segment Name | Fields |
|---|---|---|
| Attached File | attachmentfile | * (file) |
| Call | call | details (text) dateoccured (datetime) duration (integer, minutes) |
| Comment | comment | posttext (text) |
| Constant Contact | constantcontactwidget | contactid (integer [from Constant Contact]) |
| Event | event | title (text) details (text) completed (integer, [0, 1], new events cannot be created as completed) timestart (date or datetime) timeend (date or datetime) location (text) eventtype (text, [keep, remove]) priority (ingeter, [0-6]) noticenow (integer, [0, 1]) remindtime (integer, [0, 1]) attendees (integers delimited by comma, [user id]) externalattendees (email addresses delimited by comma) repeats (text, [{blank}, daily, weekly, monthly, yearly]) repeatevery (integer when repeats != weekly) repeatuntil (date) repeatinterval (integers separated by comma when repeats = weekly, days of week 0-6) |
| File | file | caption (text) file (must be uploaded as form-encoded data) |
| Follow-up | followup | details (text) assignedto (integer, [group id, user id]) nodate (integer, [0, 1]) duedate (date, if nodate = 0) completed (integer, [0, 1, new follow-ups cannot be created as completed]) sendnotification (integer, [0, 1]) remindtime (integer, [minutes]) |
| Freshbooks | freshbookswidget | clientid (integer [from Freshbooks]) |
| Google Doc | googledoc | title (text) url (text) |
| Linked Emails | linkedemails | (no fields are provided) |
| MailChimp | mailchimpwidget | |
| Note | note | details (text) |
| Opportunity | opportunity | description (text) valueunit (integer) valuecurrency (text, [USD, EUR, GBP, CAD, AUD, BRL, CHF, CNY, DKK, HKD, HRK, HUF, INR, JPY, MXN, MYR, NOK, NZD, RUB, SEK, SGD, THB, ZAR]) valueinterval (text, [fixed price, per hour, per day, per week, per month, per quarter, per month, per quarter, per year]) valueduration (integer) stage (integer, 0-100) probability (integer, 0-100) closingdate (date) responsible (integer, group or user id) status (text, [Discussion, Pending, Won, Lost, On-hold]) |
| Photo | photo | caption (text) file |
| Photo list | photolist | title (text) |
| Separator | separator | title (text) hidesiblings (integer, [0, 1]) |
| Scheduled Email | scheduledemail | to (text, [user@example.com or John Doe cc (text, [same as to field]) bcc (text, [same as to field]) from (text, [user@example.com or John Doe subject (text) priority (integer, [0=low, 1=normal, 2=high]) body (string, [if html is provided the text part is created automatically]) scheduledtime (date)) |
| Task | task | title (text) details (text) assignedto (integer, [group id, user id]) nodate (integer, [0, 1]) duedate (date, if nodate = 0) completed (integer, [0, 1], new tasks cannot be created as completed) sendnotification (integer, [0, 1]) remindtime (integer, [minutes]) priority (integer, [0-6]) billed (integer, [0, 1]) ignoreweekends (integer, [0, 1]) timespent (integer) timespentmeasure (text, [days, hours, weeks]) timeremains (integer) timeremainsmeasure (text, [days, hours, weeks]) invoiced (text) notifyoncomplete (text, [email address(es) delimited by comma]) |
| Task list | tasklist | title (text) description (text) nodate (integer, [0, 1]) milestonedate (date, if nodate = 0) completed (integer, [0, 1] |
| Template of activities | template | templateid (integer, [template id]) |
| Time record | timerecord | date (date) person (integer, [group id, user id]) hours (number) billable (integer, [0, 1]) details (text) invoiced (text) |
| Website | website | caption (text) url (text) |
| Xero | xerowidget | contactid (integer [from Xero]) |
| Zendesk | zendeskwidget | userid (integer [From Zendesk]) |
Supported Activity Hierarchies
| Parent {itemId} [> Child] [> Child] |
|---|
| Contact > Call > Comment |
| Contact > Constant Contact > Comment |
| Contact > Event > Comment |
| Contact > File > Comment |
| Contact > Follow-up > Comment |
| Contact > FreshBooks > Comment |
| Contact > Google Doc > Comment |
| Contact > Linked emails (one per parent) > Comment |
| Contact > MailChimp > Comment |
| Contact > Note > Comment |
| Contact > Opportunitiy > Comment |
| Contact > Photolist > Photo |
| Contact > Photolist > Comment |
| Contact > Section > Comment |
| Contact > Scheduled Email |
| Contact > Scheduled Email > Comment |
| Contact > Scheduled Email > Attached File |
| Contact > Tasklist > Task |
| Contact > Tasklist > Task > Comment |
| Contact > Tasklist > Task > Time record |
| Contact > Tasklist > Comment |
| Contact > Template of activities |
| Contact > Website > Comment |
| Contact > Xero > Comment |
| Contact > Zendesk > Comment |
...
<response>
<id>589696</id>
<data>
<title>Inspect Property</title>
<duedate>2009-10-11</duedate>
<priority>3</priority>
</data>
<created>Jun 15, 2009 22:19:29</created>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X PUT -H 'Content-Type: application/xml' -d '<request><data><duedate>2009-12-11</duedate><priority>5</priority></data></request>' https://secure.solve360.com/contacts/task/589696
Parameters
...
<response>
<status>success</status>
</response>
curl -u '{userEmail}:{userApiToken}' -X DELETE https://secure.solve360.com/contacts/task/589696
<response>
...
<status>success</status>
</response>