openapi: 3.0.0
info:
title: Nimble Contacts API
description: Nimble CRM Contacts operations. Split by tag from the OpenAPI Nimble publishes at https://www.nimble.com/developers/docs/
(embedded Redoc spec). Base host https://app.nimble.com.
version: v1
servers:
- url: https://app.nimble.com
tags:
- name: Contacts
description: "# Contacts details\n\nTypical response to this request is a dictionary with 2 keys (unless\n\
otherwise specified by the specific API): meta and resources.\n\n## Contact resources\n\nThis field\
\ usually contains all data for the contacts you\\'ve requested.\nHere is an example of a Nimble contact\n\
\n``` javascript\n\"resources\": [\n {\n \"updated\": \"2012-09-07T16:49:56+0300\",\n \
\ \"created\": \"2012-09-07T16:49:56+0300\",\n \"fields\": {\n \"description\"\
: [\n {\n \"value\": \"description\",\n \"label\"\
: \"description\",\n \"modifier\": \"other\"\n },\n \
\ {\n \"value\": \"description\",\n \"label\": \"description\"\
,\n \"modifier\": \"linkedin\"\n }\n ],\n \"\
last name\": [\n {\n \"modifier\": \"\",\n \"\
value\": \"Akopyan\",\n \"label\": \"last name\"\n }\n \
\ ],\n \"phone\": [\n {\n \"modifier\": \"mobile\"\
,\n \"value\": \"+7 (917) 202-456-1111\",\n \"label\": \"phone\"\
\n },\n {\n \"modifier\": \"home\",\n \
\ \"value\": \"+7 244 231 84 22\",\n \"label\": \"phone\"\n \
\ }\n ],\n \"URL\": [\n {\n \"modifier\"\
: \"other\",\n \"value\": \"https://nimble.com\",\n \"label\"\
: \"URL\"\n },\n {\n \"modifier\": \"other\",\n \
\ \"value\": \"https://app.nimble.com\",\n \"label\": \"URL\"\
\n }\n ],\n \"source\": [\n {\n \
\ \"modifier\": \"\",\n \"value\": \"csv\",\n \"label\"\
: \"source\"\n }\n ],\n \"address\": [\n {\n \
\ \"modifier\": \"other\",\n \"value\": \"{'city': 'Dushanbe',\
\ 'street': 'First str. 15', 'zip': '54055', 'country': 'Farganistan'}\",\n \"\
label\": \"address\"\n }\n ],\n \"email\": [\n \
\ {\n \"modifier\": \"other\",\n \"value\": \"fake_person@nimble.com\"\
,\n \"label\": \"email\"\n }\n ],\n \"first\
\ name\": [\n {\n \"modifier\": \"\",\n \"value\"\
: \"Amayak\",\n \"label\": \"first name\"\n }\n ]\n \
\ },\n \"object_type\": \"contact\",\n \"id\": \"5049fb849b85f669e40000dc\",\n\
\ \"last_contacted\": {\n \"user_id\": \"5c459c52ceee1868ee3ab41f\",\n \
\ \"deletion_tstamp\": null,\n \"type\": \"LCType<message>\",\n \"object_id\"\
: \"ed5afbee-37f5-db6b-7f71-c7d6b8750bbb\",\n \"tstamp\": \"2019-01-22T21:57:30+0000\"\n\
\ },\n \"avatar_url\": \"https://app.nimble.com/api/contacts/avatars/5049fb849b85f669e40000dc\"\
,\n \"record_type\": \"person\",\n \"creator\": \"Emil Kio\",\n \"children\"\
: [],\n \"tags\": [\n {\n \"tag\": \"csv import\",\n \
\ \"id\": \"5049fa0c9b85f62cb4000639\"\n }\n ],\n \"owner_id\": \"5049f696a694620a0700001c\"\
\n }\n]\n```\n\nHere is a description of the response in detail:\n\n**updated**\n\n: Timestamp\
\ of contact\\'s last update time\n\n**created**\n\n: Timestamp of contact\\'s creation time\n\n\
**fields**\n\n: Dictionary containing contact\\'s fields data. Keys are field names\n and values\
\ are lists of field values. All default contact fields are\n [described here](#tag/Contacts-Fields/Nimble-Default-Fields)\n\
\n**object_type**\n\n: String specifying document type. For contacts it\\'s `contact`.\n\n**id**\n\
\n: Unique contact id in BSON format.\n\n**last_contacted**\n\n: \n\n Information about last\
\ outbound message to this contact (if any). Contains following fields.\n\n : - *user_id* ---\
\ unique id of owner in BSON format\n - *object_id* --- id of object of corresponding type\
\ in BSON\n format\n - *type* --- last contacted provider\\'s type\n -\
\ *tstamp* --- timestamp of last outbound message\n - *deletion_tstamp* --- timestamp of\
\ object deleting\n\n**avatar_url**\n\n: URL of image that can be used as contact\\'s avatar. Value\
\ of null is\n used to indicate that contact has no avatar associated.\n\n**record_type**\n\n:\
\ Type of contact. This can have one of two values: `person` and\n `company`.\n\n**creator**\n\
\n: Name of the person who created the contact\n\n**children**\n\n: For `company` contacts this\
\ field contains list of `person` contacts\n associated with the company.\n\n**tags**\n\n: \n\
\n List of tags associated with the contact. Each tag is represented as a dictionary having following\
\ keys.\n\n : - *tag* --- tag\\'s text\n - *id* --- unique id of tag in BSON format\n\
\n**owner_id**\n\n: Id of the person owning the contact in BSON format\n\n\n## Contact list\n\n\
Contact list request is similar to\n[contact details response](#tag/Contacts/Contacts-details). It\
\ has the\nsame key with resources,\n[described here](#tag/Contacts/Contacts-details/Contact-resources).\
\ Difference is in `meta` key value. For contact listing it\nreturns pagination details.\n"
paths:
/api/v1/contacts:
delete:
description: Deletes a list of contacts by specified advanced search query. Requires bulk delete
permission for authenticated user.
operationId: delete-contacts-list-2
summary: Delete list of contacts
tags:
- Contacts
parameters:
- description: Delete all contacts where fields are containing value from this parameter
in: query
name: keyword
schema:
items:
type: string
type: array
- description: Json-encoded advanced search query to find contact for deletion. For more details
on query syntax, see <a href=https://www.nimble.com/developers/docs/#tag/Contacts-Fields/Search-contacts/Advanced-search-query-syntax>
Advanced search query syntax.</a> If query parameter presented in request — record_type parameter
will be ignored.
in: query
name: query
schema:
type: string
- description: Delete all contacts with provided record_type. This parameter could be combined with
keyword parameter in order to delete contacts of specific record_type
in: query
name: record_type
schema:
default: all
enum:
- person
- company
- all
type: string
- description: check query's contacts are editable
in: query
name: preflight_checks
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactsRemovedResponse'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'406':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.PreflightCheckFailures'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
get:
description: Returns list of contacts filtered by specified parameters. Allows filters by advanced
search query, tags, keyword. You can receive all fields or specify a list of fields to return.
operationId: list-contacts
summary: Contact List
tags:
- Contacts
parameters:
- description: Specifies a set of simple search criteria for the query. This simple search is performed
on any (indexed in our search engine) field of contact
in: query
name: keyword
schema:
type: string
- description: Specifies a comma separated list of fields to return. If this parameter is excluded,
all fields will be returned
in: query
name: fields
schema:
type: string
- description: Specifies whether tags should be included in the results.
in: query
name: tags
schema:
default: true
type: boolean
- description: True if return last contacted information, False otherwise
in: query
name: last_contacted (DEPRECATED; use contexts)
schema:
default: true
type: boolean
- description: Identifies the sort field and sort order. Sort order is required when this parameter
is used. An single sort field can be specified. Any field can be sorted in either asc or desc
order. All searchable fields which aren’t multiple and aren’t custom fields are sortable.
in: query
name: sort
schema:
items:
type: string
type: array
- description: Specifies query for contacts advanced search. Please note, that this parameter not
compatible with parameters record_type and keyword
in: query
name: query
schema:
items:
type: string
type: array
- in: query
name: record_type
schema:
default: all
enum:
- person
- company
- all
type: string
- description: Specifies which page to display
in: query
name: page
schema:
default: 1
type: integer
- description: Specifies the number of items to return per page of results.
in: query
name: per_page
schema:
default: 30
type: integer
- name: files_data (DEPRECATED; use contexts)
description: if response should include the contacts files in this listing
deprecated: true
in: query
schema:
default: false
type: boolean
- name: contexts
description: |
comma-separated additional contexts that should be returned with in this contact
in: query
schema:
$ref: '#/components/schemas/Contacts.ContactViewContextKinds'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactsListing'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contacts/ids:
get:
description: Has same parameters as a regular contacts list, but returns only contact ids. Works
faster than regular contact list.
operationId: list-contacts-ids
summary: Contact ids list
tags:
- Contacts
parameters:
- description: Specifies a set of simple search criteria for the query. This simple search is performed
on any (indexed in our search engine) field of contact
in: query
name: keyword
schema:
type: string
- description: Specifies a comma separated list of fields to return. If this parameter is excluded,
all fields will be returned
in: query
name: fields
schema:
type: string
- description: Specifies whether tags should be included in the results.
in: query
name: tags
schema:
default: true
type: boolean
- description: True if return last contacted information, False otherwise
in: query
name: last_contacted
schema:
default: true
type: boolean
- description: Identifies the sort field and sort order. Sort order is required when this parameter
is used. An single sort field can be specified. Any field can be sorted in either asc or desc
order. All searchable fields which aren’t multiple and aren’t custom fields are sortable.
in: query
name: sort
schema:
items:
type: string
type: array
- description: Specifies query for contacts advanced search. Please note, that this parameter not
compatible with parameters record_type and keyword
in: query
name: query
schema:
items:
type: string
type: array
- in: query
name: record_type
schema:
default: all
enum:
- person
- company
- all
type: string
- description: Specifies which page to display
in: query
name: page
schema:
default: 1
type: integer
- description: Specifies the number of items to return per page of results.
in: query
name: per_page
schema:
default: 30
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactsIdsListing'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contact:
get:
description: Returns a list of contacts for the specified identifiers
operationId: list-contacts-for-identifiers
summary: Returns standard contact listings
tags:
- Contacts
parameters:
- description: A list of contact ids (max 30), separated by a comma
in: query
name: id
required: true
schema:
type: string
- description: Field names to retrieve, otherwise all fields will be retrieved
in: query
name: fields
schema:
type: string
- description: True if include fields matadata into response, False otherwise
in: query
name: meta
schema:
type: boolean
- description: True if return tags information, False otherwise
in: query
name: tags
schema:
type: boolean
- description: True if return last contacted information, False otherwise
in: query
name: last_contacted (DEPRECATED, use contexts)
schema:
type: boolean
- name: contexts
description: |
comma-separated additional contexts that should be returned with in this contact
in: query
schema:
$ref: '#/components/schemas/Contacts.ContactViewContextKinds'
responses:
'200':
content:
application/json:
schema:
properties:
contacts_meta:
$ref: '#/components/schemas/Contacts.FieldsMetadata'
resources:
items:
$ref: '#/components/schemas/Contacts.ContactView'
type: array
required:
- resources
type: object
description: ''
post:
description: Creates contact with data provided. For contact-persons at least first name or last
name is required. For contact-companies—company name is required field.
operationId: post-contact
summary: Create new contact
tags:
- Contacts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.CreateContactRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactView'
description: Contact successfully created
'402':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.PaymentError'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contact/{contact_id}:
parameters:
- description: id of a contact to operate on
in: path
name: contact_id
required: true
schema:
type: string
delete:
description: Deletes contact
operationId: delete-contact
summary: Delete contact by id
tags:
- Contacts
parameters:
- description: deletion method to use. 'regular' will return error if there are relations that avoid
deletion, 'force' will delete contacts with relations (like exit sequence)
in: query
name: deletion_method
schema:
type: string
enum:
- regular
- force
default: regular
- description: when true, remove all email list entries whose email address matches any email of
the deleted contact
in: query
name: cleanup_email_lists
schema:
type: boolean
default: false
responses:
'200':
description: Contact successfully deleted
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
description: Cannot update the contact because of privacy settings violation
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
get:
description: Returns contact
operationId: get-contact
summary: Returns contact data by its id.
tags:
- Contacts
parameters:
- description: Field names to retrieve, otherwise all fields will be retrieved
in: query
name: fields
schema:
type: string
- description: True if include fields matadata into response, False otherwise
in: query
name: meta
schema:
type: boolean
- description: True if return tags information, False otherwise
in: query
name: tags
schema:
type: boolean
- description: True if return last contacted information, False otherwise
in: query
name: last_contacted (DEPRECATED, use contexts)
schema:
type: boolean
- description: True if return leads pipeline info, False otherwise
in: query
name: leads_data (DEPRECATED, use contexts)
schema:
default: true
type: boolean
- name: contexts
description: |
comma-separated additional contexts that should be returned with in this contact
in: query
schema:
$ref: '#/components/schemas/Contacts.ContactViewContextKinds'
responses:
'200':
content:
application/json:
schema:
properties:
contacts_meta:
$ref: '#/components/schemas/Contacts.FieldsMetadata'
resources:
items:
$ref: '#/components/schemas/Contacts.ContactView'
type: array
required:
- resources
type: object
description: ''
put:
description: Updates contact
operationId: put-contact
summary: Updates contact by its id.
tags:
- Contacts
parameters:
- description: '`1` if replace fields instead of extending it, otherwise extend'
in: query
name: type
schema:
enum:
- '0'
- '1'
type: string
- description: True if return leads pipeline info, False otherwise
in: query
name: leads_data
schema:
default: true
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactUpdateRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactView'
description: ''
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
description: the calling user does not have permissions to perform that action
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'406':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotAcceptableError'
description: we can't update contact because it will invisible or not editable after
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contacts/metadata:
get:
description: (DEPRECATED) This method return all available metadata for company's fields/groups.
operationId: list-contacts-fields-metadata
summary: (D) List contacts fields metadata
deprecated: true
tags:
- Contacts
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.FieldsMetadata'
description: Successful execution
/api/v1/contacts/notes:
post:
description: Creates a note on one or more contacts. At least one contact id is required as Nimble
currently doesn't support notes without contacts.
operationId: post-contact-note
summary: Create contacts note
tags:
- Contacts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNoteSpec'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNote'
description: Note created successfully.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contacts/notes/{note_id}:
parameters:
- in: path
name: note_id
required: true
schema:
type: string
delete:
description: delete contact note
operationId: delete-contact-note
summary: Delte contact note by id
tags:
- Contacts
responses:
'200':
content:
application/json:
schema:
properties:
id:
type: string
required:
- id
type: object
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
get:
description: return single note
operationId: get-contact-note
summary: Returns note by id.
tags:
- Contacts
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNote'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
post:
description: create contact note
operationId: post-contact-note-with-id
summary: Create contact note with id
tags:
- Contacts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNoteSpec'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNote'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
put:
description: update contact note
operationId: put-contact-note
summary: Update contact note by id
tags:
- Contacts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNoteSpec'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNote'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contacts/{contact_id}/notes:
parameters:
- in: path
name: contact_id
required: true
schema:
type: string
get:
description: Returns a list of notes for the specified contact
operationId: list-contacts-contact-notes
summary: List contact notes
tags:
- Contacts
parameters:
- in: query
name: page
schema:
type: integer
- in: query
name: per_page
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
properties:
meta:
properties:
has_more:
type: boolean
page:
type: integer
pages:
type: integer
per_page:
type: integer
total:
type: integer
required:
- per_page
- total
- pages
- page
- has_more
type: object
resources:
items:
$ref: '#/components/schemas/Contacts.ContactNote'
type: array
required:
- meta
- resources
type: object
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
post:
description: Creates a note attached to the contact specified in the URL.
operationId: post-contact-note-for-contact
summary: Create a contact note
tags:
- Contacts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.SingleContactNoteSpec'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactNote'
description: Note created successfully.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
description: Contact not found.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: Invalid request.
/api/v1/contacts/{contact_id}/tags:
parameters:
- in: path
name: contact_id
required: true
schema:
type: string
put:
description: sets tags for a specified contact to a given set
operationId: put-contact-tags
summary: Assign tags to contact
tags:
- Contacts
requestBody:
content:
application/json:
schema:
properties:
tags:
items:
type: string
type: array
required:
- tags
type: object
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contacts.ContactView'
description: tags were set successfully
'403':
description: contact is not editable by the privacy setting
'404':
description: contact not found
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
description: ''
/api/v1/contacts/proceedings_providers:
get:
description: Returns a list of user-available, contact proceeding types. Proceeding is a business
activity, for example, a new deal closed, task assigned, or a note added to a contact
operationId: list-contacts-proceeding-providers
summary: List contacts proceeding providers
tags:
- Contacts
responses:
'200':
content:
application/json:
schema:
properties:
providers:
items:
$ref: '#/components/schemas/Proceedings.ProceedingProvider'
type: array
required:
- providers
type: object
description: ''
/api/v1/contacts/{contact_id}/proceedings:
parameters:
- in: path
name: contact_id
required: true
schema:
type: string
get:
description: Get all proceedings that match query parameters.
operationId: list-contact-proceedings
summary: List contact proceedings
tags:
- Contacts
parameters:
- descri
# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nimble/refs/heads/main/openapi/nimble-contacts-api-openapi.yml