The Solve 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 “Accept” 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.
Please note, access to features and data is limited to the actual user account being used to access the API. Likewise, admin actions cannot be performed via API (i.e. granting workgroup permissions, etc.). The admin has to do this from within the main system.
You can find a list of all Field Names, Field IDs, Category Tag IDs and Ownership IDs under: Settings > My Account > API Reference.
Unless otherwise specified, 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.
The API methods and parameters are the same for all record types, i.e. Contacts, Companies, Project Blogs, and Tickets. Simply use the appropriate segment name for the record type. For example, if working with a:
The following examples will refer to /contacts/…
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] |
Creates a new contact.
Request
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
… <response> … <status>success</status> </response>
Updates an existing contact.
Request
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
… <response> ... <status>success</status> </response>
Shows all data related to an existing contact including companies, related-to, category tags and all activities (excluding email messages).
Request
curl -u '{userEmail}:{userApiToken}' -X GET https://secure.solve360.com/contacts/31507
Response
… <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>
Deletes a contact.
Request
curl -u '{userEmail}:{userApiToken}' -X DELETE https://secure.solve360.com/contacts/31507 `
Response
… <response> <status>success</status> </response>
Returns a collection of contacts that match the requested criteria.
Request
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
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, unsent, 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} (default = 50, maximum = 5,000) |
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
… <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>
Creates a category tag.
Request
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
… <response> <id>136957</id> <status>success</status> </response>
Returns a collection of available contact tags.
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>
Returns a collection of available contact fields.
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>
Returns a collection of available users and workgroups.
Parameters
deleted | Include deleted users and groups [1] |
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>
Creates a new activity linked to a parent item. Refer to the “Supported Activity Hierarchies” chart below to see what each activity type can be linked to.
Request (e.g. create a task within tasklist having id 353687)
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 | Segment Name | Fields | Type ID |
---|---|---|---|
Attached File | attachmentfile | * (file) | 55 |
Comment | comment | posttext (text) | 91 |
Deal | opportunity | description (text) valueunit (decimal) 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]) |
32 |
File | file | caption (text) file (must be uploaded as form-encoded data) |
23 |
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]) |
6 |
Google Doc | googledoc | title (text) url (text) |
37 |
Interaction | call | details (text) dateoccured (datetime) duration (integer, minutes) |
73 |
Linked Emails | linkedemails | fields (fieldnames delimited by comma) keywords (text delimited by comma) exceptions (text delimited by comma) |
90 |
Note | note | details (text) | 3 |
Photo | photo | caption (text) file |
24 |
Photo list | photolist | title (text) | 31 |
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]) |
14 |
Task list | tasklist | title (text) description (text) nodate (integer, [0, 1]) milestonedate (date, if nodate = 0) completed (integer, [0, 1] |
22 |
Time record | timerecord | date (date) person (integer, [group id, user id]) hours (number) billable (integer, [0, 1]) details (text) invoiced (text) |
15 |
Website | website | caption (text) url (text) |
7 |
Xero | xerowidget | contactid (integer [from Xero]) | 96 |
Zendesk | zendeskwidget | userid (integer [From Zendesk]) | 97 |
Required field
Parent {itemId} [> Child] [> Child] |
---|
Contact > Deal > Comment |
Contact > File > Comment |
Contact > Follow-up > Comment |
Contact > Google Doc > Comment |
Contact > Interaction > Comment |
Contact > Interaction > Timerecord |
Contact > Linked emails (one per parent) > Comment |
Contact > Note > Comment |
Contact > Photolist > Photo |
Contact > Photolist > Comment |
Contact > Tasklist > Comment |
Contact > Tasklist > Task |
Contact > Tasklist > Task > File |
Contact > Tasklist > Task > File > Comment |
Contact > Tasklist > Task > Google Doc |
Contact > Tasklist > Task > Google Doc > Comment |
Contact > Tasklist > Task > Comment |
Contact > Tasklist > Task > Time record |
Contact > Website > Comment |
Contact > Xero > Comment |
Contact > Zendesk > Comment |
Response
… <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>
Updates an activity related to a contact.
Request e.g. change due date and priority for task with id {activityId}
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
…<response> <status>success</status> </response>
Deletes an activity related to a contact.
Request
curl -u '{userEmail}:{userApiToken}' -X DELETE https://secure.solve360.com/contacts/task/589696
Response
… <response> <status>success</status> </response>`