openapi: 3.0.0
servers:
- url: https://app.nimble.com
info:
title: Nimble API
version: v1
description: "# Overview\n\nNimble is a relationship-focused CRM for your entire team. With customizable\
\ contact records and easy-to-use Kanban-style workflows, managing client information has never been\
\ simpler. Nimble effortlessly integrates with both Microsoft 365 and Google Workspace, gathering\
\ contacts and leads from all your platforms, while our automation tools handle the busy work. Focus\
\ on what matters most – growing your business and nurturing relationships, as Nimble streamlines\
\ your workflow for maximum productivity. \n\nThe document below offers an overview of currently available\
\ APIs & how to utilize them. If you're missing some APIs for an integration you want to build, please\
\ contact us at [api-support@nimble.com](mailto:api-support@nimble.com).\n\nCurrently available APIs:\n\
\n- **Contacts & Contact fields** - managing contacts & custom fields.\n- **Deals & Deals Pipelines**\
\ - managing deals, pipelines, and deal pipeline fields. \n- **Messages** - reading and creating\
\ draft messages.\n\nWe are building the API with a few main use cases in mind:\nwidgets/extensions\
\ to Nimble, web clients (including our own), mobile\nclients, and 2-way data integrations with other\
\ services. We\naim to make an API that is simple to use, easy to read, and flexible.\n\n[Your feedback](mailto:api-support@nimble.com)\
\ is greatly\nappreciated while we continue to shape our API offering.\n"
x-logo:
url: https://www.nimble.com/wp-content/themes/new_nimble/images/nimble-logo-white.svg
backgroundColor: '#2685c4'
components:
securitySchemes:
ApiKey:
type: apiKey
in: header
name: X-Nimble-Token
schemas:
Contacts.ContactViewContextKinds:
enum:
- last_contacted_data
- employers_data
- leads_data
- sequences_data
- contact_files
Commons.PaginationMeta:
properties:
page:
type: integer
pages:
type: integer
per_page:
type: integer
total:
type: integer
required:
- page
- pages
- per_page
- total
type: object
Contacts.LastContacted:
properties:
deletion_tstamp:
type: object
object_id:
type: object
tstamp:
type: object
type:
type: object
user_id:
type: object
direction:
enum:
- inbound
- outbound
required:
- tstamp
- type
- object_id
- user_id
- deletion_tstamp
type: object
Contacts.LastContactedDirectedContainer:
properties:
in:
$ref: '#/components/schemas/Contacts.LastContacted'
out:
$ref: '#/components/schemas/Contacts.LastContacted'
last:
$ref: '#/components/schemas/Contacts.LastContacted'
Accounts.ShortUserInfo:
properties:
avatar_url:
type: string
email:
type: string
is_active:
type: boolean
name:
type: string
user_id:
type: string
required:
- user_id
- name
- email
- avatar_url
- is_active
type: object
Contacts.UserLastContactedView:
properties:
company_lc:
$ref: '#/components/schemas/Contacts.LastContactedDirectedContainer'
user_lc:
$ref: '#/components/schemas/Contacts.LastContactedDirectedContainer'
last_user:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
Contacts.Principals:
description: |
Explicitly defines users and groups that have an action permission. If any set - no one can.
properties:
group_ids:
description: ids of permitted groups. if empty - no group has permission
items:
type: string
type: array
user_ids:
description: ids of permitted users. If empty - no user has permission
items:
type: string
type: array
required:
- user_ids
- group_ids
type: object
Contacts.ContactPrivacy:
description: "Defines scopes of object visibility and editability.
\nEdit permission means that\
\ group or user also is able to read an object.
\n***No duplication***, if `id` in edit Principal\
\ it must not be in view Principal.
\nIf property is `None` - everyone have an action right\
\ (Permitted to everyone).
\nIf Principal is set, but has empty properies - only owner is allowed\
\ to act.
\nIf not specified - default privacy from company settings will be applied "
properties:
edit:
description: None means permitted to everyone. Prinipals object define permission explicitly
nullable: true
type: object
oneOf:
- $ref: '#/components/schemas/Contacts.Principals'
read:
description: None means permitted to everyone. Prinipals object define permission explicitly
nullable: true
type: object
oneOf:
- $ref: '#/components/schemas/Contacts.Principals'
required:
- read
- edit
type: object
Contacts.ContactType:
enum:
- person
- company
type: string
Contacts.Reminder:
properties:
active:
type: boolean
contact_id:
type: string
days_till_triggered:
type: integer
period:
type: integer
triggered:
type: boolean
required:
- contact_id
- period
- days_till_triggered
- active
- triggered
type: object
Contacts.LeadInStageInfo:
description: info about stage where lead is
properties:
pipeline_id:
type: string
format: ObjectId
pipeline_name:
type: string
stage_name:
type: string
entered_data:
type: string
format: datetime
is_final:
type: boolean
days_limit:
type: integer
nullable: true
Contacts.ContactNotice:
properties:
created:
description: Date and time when the notice was created encoded in ISO 8601
type: string
updated:
description: Date and time when the notice was updated encoded in ISO 8601
type: string
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
updated_by:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
text:
type: string
color:
type: string
required:
- created
- updated
- creator
- updated_by
- text
- color
type: object
Contacts.LastContactedDataContext:
type: object
properties:
context_key:
type: object
context:
$ref: '#/components/schemas/Contacts.UserLastContactedView'
Contacts.EmployerInfo:
description: employer's info
type: object
properties:
contact_id:
type: string
company_name:
type: string
avatar_url:
type: string
Contacts.EmployersDataContext:
type: object
properties:
context_key:
type: object
context:
type: array
items:
$ref: '#/components/schemas/Contacts.EmployerInfo'
Contacts.LeadsDataContext:
type: object
properties:
context_key:
type: object
context:
type: array
items:
$ref: '#/components/schemas/Contacts.LeadInStageInfo'
Contacts.UploadedContactFile:
type: object
properties:
file_id:
type: string
contact_id:
type: string
file_name:
type: string
file_size:
type: number
mime_type:
type: string
uploader:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
uploaded_at:
type: string
pipeline_ids:
type: array
items:
type: string
Attachments.AttachmentData:
discriminator:
propertyName: type
properties:
attachment_bytes:
type: integer
attachment_type:
type: string
icon:
type: string
link:
description: URL that can be used to download an attachment
type: string
mime_type:
type: string
name:
type: string
type:
type: string
updated:
type: string
updated_by:
type: string
required:
- attachment_type
- name
- link
- attachment_bytes
- icon
- type
- mime_type
- updated
- updated_by
type: object
Attachments.DropboxAttachmentData:
allOf:
- $ref: '#/components/schemas/Attachments.AttachmentData'
- description: Dropbox
Attachments.GoogleDriveAttachmentData:
allOf:
- $ref: '#/components/schemas/Attachments.AttachmentData'
- description: GoogleDrive
Attachments.OneDriveAttachmentData:
allOf:
- $ref: '#/components/schemas/Attachments.AttachmentData'
- description: OneDrive
Contacts.ContactFile:
type: object
properties:
source:
type: string
enum:
- device
- google_drive
- one_drive
- dropbox
metadata:
oneOf:
- $ref: '#/components/schemas/Contacts.UploadedContactFile'
- $ref: '#/components/schemas/Attachments.DropboxAttachmentData'
- $ref: '#/components/schemas/Attachments.GoogleDriveAttachmentData'
- $ref: '#/components/schemas/Attachments.OneDriveAttachmentData'
Contacts.ContactFilesContext:
type: object
properties:
context_key:
type: object
context:
type: array
items:
$ref: '#/components/schemas/Contacts.ContactFile'
Sequences.CompletedSequenceStepRecord:
type: object
properties:
step_id:
type: string
description: ID (name) of the completed sequence step
step_type:
description: the type of the completed sequence step
enum:
- delay
- send_message
- condition
when:
type: string
description: iso8601 timestamp of when the step was completed
step_name:
type: string
description: the name of a step this contact completed
Sequences.SequenceProgressionOutcomes:
enum:
- successful
- unsuccessful
- error
- removed
Sequences.InSequenceContactExitDetails:
type: object
properties:
when:
type: string
exit_method:
type: string
description: |
"how" the contact exited the sequence (e.g. by an exit rule or certain message condition)
outcome:
$ref: '#/components/schemas/Sequences.SequenceProgressionOutcomes'
Sequences.InSequenceContactInfo:
type: object
properties:
sequence_id:
description: id of a sequence this contact is in
type: string
seq_contact_id:
description: a unique identifier of a the contact in the sequence
type: string
sequence_name:
description: the name of a sequence this contact belongs to
type: string
sequence_color:
description: the color of a sequence this contact belongs to
type: string
completed_steps:
type: array
items:
$ref: '#/components/schemas/Sequences.CompletedSequenceStepRecord'
current_step:
type: string
description: current sequence's step name
current_step_id:
type: string
description: current sequence's step id
last_completed_action:
type: string
description: last completed sequence action name
last_completed_action_dao:
type: string
description: last completed sequence action date
has_waited_in_current_step:
type: number
description: for how many seconds the contact has waited in it's current step
email:
description: an email address the contact was entered the sequence with
type: string
exit_details:
description: exit details if contact completed the sequence
nullable: true
type: object
oneOf:
- $ref: '#/components/schemas/Sequences.InSequenceContactExitDetails'
owner:
description: user who entered this contact to a sequence
oneOf:
- $ref: '#/components/schemas/Accounts.ShortUserInfo'
next_step_scheduled_at:
description: |
the timestamp of the next scheduled sequence step (can be use to approximate the next send_message step)
type: string
Contacts.InSequenceContactInfoContext:
type: object
properties:
context_key:
type: object
context:
type: array
items:
$ref: '#/components/schemas/Sequences.InSequenceContactInfo'
Messages.Attachment:
properties:
content_type:
description: MIME type of attachment
type: string
data_id:
description: Field data_id must be first retrieved using any sort of Uploads API.
type: string
file_size:
description: Field file_size is given in bytes.
type: integer
name:
type: string
url:
description: URL that can be used by a user to download attachment's content
type: string
required:
- data_id
- file_size
- content_type
- name
- url
type: object
Messages.MessagingAccountIdentifier:
properties:
account_type:
enum:
- email
- mass_mail
type: string
identifier:
description: 'Account identifier specific to account_type. For account_type: email it should
be email address. '
type: string
required:
- account_type
- identifier
type: object
Messages.MessagingAccount:
allOf:
- $ref: '#/components/schemas/Messages.MessagingAccountIdentifier'
properties:
avatar_url:
nullable: true
type: string
comment:
description: |
Field comment holds some short freeform text that shows a role of this messaging account to user.
Examples are 'home', 'work', 'assistant', etc.
type: string
company:
description: Name of account's company, might be null.
type: object
company_id:
description: ID of account's company in Nimble db, might be null.
nullable: true
type: object
contact_id:
description: Nimble contact id associated with this account
nullable: true
type: string
format: ObjectId
user_id:
description: Nimble user id (user themself or team member) associated with this account
nullable: true
type: string
format: ObjectId
name:
description: Field name is for readable name of a user. Sometimes identifier value is not suitable
to be shown to user, for example when it's numerical user id (as for Facebook). Can be null
if full name is unknown.
oneOf:
- type: number
- type: string
type: object
Messages.MessageTemplateContentMode:
type: string
enum:
- standard
- builder
- custom_html
Messages.MessageTemplateContentSpecification:
properties:
attachments:
items:
$ref: '#/components/schemas/Messages.Attachment'
type: array
bcc:
items:
$ref: '#/components/schemas/Messages.MessagingAccount'
type: array
body:
description: |
Can include template variable references in for of *|VARIABLE|*. Recognized template variables are 'FName',
'LName', 'Title', 'CompanyName' and 'Unsubscribe'.
Template variables are surrounded with *| |* symbols. Unknown template variable references are not allowed
and will result in error.
type: string
cc:
items:
$ref: '#/components/schemas/Messages.MessagingAccount'
type: array
subject:
type: string
builder_data:
type: object
description: client Email builder data
nullable: true
content_mode:
$ref: '#/components/schemas/Messages.MessageTemplateContentMode'
unsubscribe_category_ids:
type: array
items:
type: string
description: ids of unsubscribe categories to which this message belongs. If null -- will unsubscribe
from all categories
nullable: true
required:
- subject
- body
type: object
Settings.MessagingAccountIdentifier:
properties:
account_type:
type: string
identifier:
type: string
required:
- account_type
- identifier
type: object
Messages.EmailListConfirmationMessageRequest:
properties:
message:
$ref: '#/components/schemas/Messages.MessageTemplateContentSpecification'
sender_account:
$ref: '#/components/schemas/Settings.MessagingAccountIdentifier'
sender_credential_id:
type: string
format: objectid
description: Unique identifier of sender's credential to send emails on behalf of
required:
- sender_account
- message
- sender_credential_id
type: object
Messages.EmailList:
type: object
properties:
list_id:
type: string
format: objectid
description: Unique identifier for the email list
name:
type: string
description: The name of the email list
description:
type: string
nullable: true
description: Description of the email list
opt_in_settings:
type: object
properties:
enabled:
type: boolean
description: whether to enable mandatory opt-in (i.e. confirmation of recipient via email)
confirmation_message_request:
$ref: '#/components/schemas/Messages.EmailListConfirmationMessageRequest'
owner_id:
type: string
format: objectid
description: User id of owner
is_private:
type: boolean
description: whether this mailing list is shared across company or not
archived_at:
type: string
format: date-time
description: Timestamp when the list was archived
is_archived:
type: boolean
description: whether this mailing list is archived already
total_entries:
type: integer
description: Total number of recipients in this mailing list
Contacts.EmailListsContext:
type: object
properties:
context_key:
type: object
context:
type: array
items:
$ref: '#/components/schemas/Messages.EmailList'
Contacts.ContactViewContext:
oneOf:
- $ref: '#/components/schemas/Contacts.ContactFilesContext'
- $ref: '#/components/schemas/Contacts.EmployersDataContext'
- $ref: '#/components/schemas/Contacts.LastContactedDataContext'
- $ref: '#/components/schemas/Contacts.LeadsDataContext'
- $ref: '#/components/schemas/Contacts.InSequenceContactInfoContext'
- $ref: '#/components/schemas/Contacts.EmailListsContext'
discriminator:
propertyName: context_key
mapping:
last_contacted_data: '#/components/schemas/Contacts.LastContactedDataContext'
employers_data: '#/components/schemas/Contacts.EmployersDataContext'
leads_data: '#/components/schemas/Contacts.LeadsDataContext'
contact_files: '#/components/schemas/Contacts.ContactFilesContext'
sequences_data: '#/components/schemas/Contacts.InSequenceContactInfoContext'
email_lists: '#/components/schemas/Contacts.EmailListsContext'
Contacts.ContactView:
description: user perspective on a specific contact
properties:
avatar_url:
type: string
children:
items:
type: string
type: array
employers_info:
description: DEPRECATED, use values in `contexts`
items:
properties:
company_name:
type: string
contact_id:
type: string
required:
- company_name
- contact_id
type: object
type: array
company_last_contacted:
description: DEPRECATED, use values in `contexts`
properties:
in:
$ref: '#/components/schemas/Contacts.LastContacted'
out:
$ref: '#/components/schemas/Contacts.LastContacted'
required:
- in
- out
type: object
lc:
description: DEPRECATED, use values in `contexts`
$ref: '#/components/schemas/Contacts.UserLastContactedView'
created:
type: string
creator:
type: string
fields:
additionalProperties:
items:
properties:
field_id:
type: string
modifier:
type: string
value:
type: string
required:
- field_id
- value
- modifier
type: object
type: array
type: object
id:
type: string
is_important:
type: object
last_contacted:
description: DEPRECATED, use values in `contexts`
nullable: true
$ref: '#/components/schemas/Contacts.LastContacted'
object_type:
enum:
- contact
type: string
last_contacted_user:
description: email of user that contacted for the last time (DEPRECATED, use values in `contexts`)
type: string
owner_id:
type: string
privacy:
$ref: '#/components/schemas/Contacts.ContactPrivacy'
record_type:
$ref: '#/components/schemas/Contacts.ContactType'
reminder:
nullable: true
$ref: '#/components/schemas/Contacts.Reminder'
tags:
items:
type: string
type: array
updated:
type: string
updater:
type: string
stages_info:
description: DEPRECATED. use `contexts`
type: array
items:
$ref: '#/components/schemas/Contacts.LeadInStageInfo'
notice:
$ref: '#/components/schemas/Contacts.ContactNotice'
contexts:
description: additional requested contexts (usually passed in the `contexts` request parameter)
type: array
items:
$ref: '#/components/schemas/Contacts.ContactViewContext'
required:
- id
- record_type
- object_type
- fields
- owner_id
- privacy
- children
- updated
- created
- updater
- creator
- avatar_url
- tags
- last_contacted
- company_last_contacted
- is_important
- reminder
- notice
type: object
Contacts.ContactsListing:
properties:
meta:
$ref: '#/components/schemas/Commons.PaginationMeta'
resources:
items:
$ref: '#/components/schemas/Contacts.ContactView'
type: array
required:
- meta
- resources
type: object
Errors.ValidationError:
description: request was malformed
example:
errors:
/:
message: 'missing required properties: ["calendar_id", "summary"]'
/base_occurrence/start_dtime:
message: Can't parse value 20000-01-01T01:01:00 as DATE-TIME
message: 'Invalid value {} (dict): missing required properties: []"calendar_id", "summary"]'
code: 245
human_readable_error: 'Invalid value {} (dict): missing required properties: []"calendar_id",
"summary"]"'
extra:
- {}
properties:
errors:
description: |
mapping where keys are paths to problematic request attributes
and values are objects with single message attribute
type: object
message:
type: string
code:
type: integer
description: legacy that you SHOULD NOT USE
human_readable_error:
type: string
description: Error message with some changes making it easier to read.
extra:
type: array
items:
type: object
description: extra data that would be useful to provide
required:
- message
- errors
- human_readable_error
type: object
Commons.PushData:
description: an object containing the push data from the server to the client
properties:
action:
description: the action this notification is for
example: single_message_sent
type: string
created:
description: datetime formatted in iso8601
format: date-time
type: string
id:
type: string
is_new:
type: boolean
object:
description: some structure which varies, depending on object_type and action
type: object
object_type:
description: the type of object this push data is for
example: notification
type: string
required:
- action
- object_type
- created
- is_new
- id
- object
type: object
Contacts.ContactsRemovedResponse:
properties:
data:
properties:
ids:
items:
type: string
type: array
push_data:
$ref: '#/components/schemas/Commons.PushData'
required:
- ids
- push_data
type: object
status:
type: string
required:
- data
- status
type: object
Errors.NotFoundError:
example:
object_id: 4f2acc3142a053dda595f00b
object_type: deal
properties:
object_id:
type: string
object_type:
type: string
required:
- object_type
- object_id
type: object
Errors.PreflightCheckError:
example:
message: Some contacts cannot be updated because of their privacy settings
nse_query:
and:
- is_editable:
is: false
- _id:
in:
- 5dfb9c3e84a6b90f0c01c23a
- 5dfb9c3e84a6b90f0c01c23b
total: 10
type: non_editable_contacts
properties:
message:
type: string
nse_query:
description: problem contacts selection query
type: object
total:
type: integer
type:
description: unique and stable identifier of error type
type: string
required:
- type
- message
- total
- nse_query
type: object
Errors.PreflightCheckFailures:
description: action cannot be applied to all specified contacts
properties:
errors:
items:
$ref: '#/components/schemas/Errors.PreflightCheckError'
type: array
required:
- errors
type: object
Contacts.ContactsIdsListing:
properties:
meta:
$ref: '#/components/schemas/Commons.PaginationMeta'
resources:
description: List of contacts’ IDs in BSON format
items:
type: string
type: array
required:
- meta
- resources
type: object
Contacts.FieldPresentationType:
enum:
- single-line-text-box
- phone
- email
- url
- multi-line-text-box
- select-box
- address
- separator
- numeric-general
- numeric-scientific
- date
- date-wo-year
- boolean
- objectid
- attachment
type: string
Contacts.FieldPresentationWidth:
enum:
- '1'
- '2'
type: string
Contacts.SimpleFieldPresentation:
properties:
type:
$ref: '#/components/schemas/Contacts.FieldPresentationType'
width:
$ref: '#/components/schemas/Contacts.FieldPresentationWidth'
required:
- type
- width
type: object
Contacts.SelectBoxFieldPresentation:
properties:
next_id:
type: string
type:
enum:
- select-box
type: string
values:
items:
properties:
id:
type: string
value:
type: string
required:
- id
- value
type: object
type: array
width:
$ref: '#/components/schemas/Contacts.FieldPresentationWidth'
required:
- type
- width
- next_id
- values
type: object
Contacts.ContactField:
example:
group: Company Info
id: 58e212d729e8e95e88606bf6
label: domain
modifier: ''
multiples: false
name: domain
presentation:
type: single-line-text-box
width: '1'
read_only: false
properties:
group:
type: string
id:
type: string
label:
type: string
modifier:
type: string
multiples:
type: boolean
name:
type: string
presentation:
oneOf:
- $ref: '#/components/schemas/Contacts.SimpleFieldPresentation'
- $ref: '#/components/schemas/Contacts.SelectBoxFieldPresentation'
read_only:
type: boolean
required:
- id
- name
- label
- modifier
- group
- presentation
- multiples
- read_only
type: object
Contacts.FieldGroupType:
enum:
- person
- company
- both
type: string
Contacts.ContactFieldsGroup:
properties:
id:
type: string
is_standard:
type: boolean
label:
type: string
name:
type: string
order:
items:
type: string
type: array
type:
$ref: '#/components/schemas/Contacts.FieldGroupType'
required:
- id
- name
- label
- order
- is_standard
- type
type: object
Contacts.FieldsMetadata:
example:
fields:
instagram:
- group: Contact Info
id: 58e212d729e8e95e88606be5
label: instagram
modifier: ''
multiples: true
name: instagram
presentation:
type: single-line-text-box
width: '1'
read_only: false
groups:
Contact Info:
id: 58e212d729e8e95e88606bc7
is_standard: true
label: Contact Info
name: Contact Info
order:
- instagram
type: both
properties:
fields:
additionalProperties:
description: The name of field
items:
$ref: '#/components/schemas/Contacts.ContactField'
type: array
type: object
groups:
additionalProperties:
oneOf:
- $ref: '#/components/schemas/Contacts.ContactFieldsGroup'
description: The name of group
type: object
required:
- groups
- fields
type: object
Contacts.OwnerId:
description: |-
Describes id of user who is owning this contact. Keep in mind that the creator and owner may be different.
If null - owner will be unassigned.
If not specified - default owner from company settings will be applied.
nullable: true
type: string
Contacts.CreateContactRequest:
properties:
avatar_url:
type: string
fields:
description: |
Describes a dictionary organized in the same structure as a contact listing response.
In this structure, each key is field name. Values are lists of dictionaries, having two fields:
value - actual value to store in contact field, modifier - field modifier to use, if field can have one.
At a minimum, contacts require a name (first or last for a person, company name for a company).
type: object
owner_id:
$ref: '#/components/schemas/Contacts.OwnerId'
privacy:
$ref: '#/components/schemas/Contacts.ContactPrivacy'
record_type:
$ref: '#/components/schemas/Contacts.ContactType'
tags:
description: |
Comma separated list of tags to assign to contacts. If you need to create tags,
containing comma sign — escape it with backslash.
E.g. `our customers,best\,premium` will create tags `our customers` and `best,premium`.
Note Maximum 5 tags are allowed in this list during contact creation.
type: string
type:
$ref: '#/components/schemas/Contacts.ContactType'
file_ids:
description: List of already uploaded file ids to attach to the contact
items:
type: string
required:
- fields
type: object
Errors.PaymentError:
example:
extra_usage:
features: []
resources:
- amount: 1
resource:
description: Total number of contacts in a company
per_user: false
persistent: true
resource_id: number_of_contacts
payment_type: Resources/features usage exceeded
required_spec:
plan:
available_upgrades:
- amount: 10737418240
name: Messages total storage add on
price: $10.00
resource: total_message_size
upgrade_id: storage_upgrade
- amount: 10000
name: Contacts add on
price: $10.00
resource: number_of_contacts
upgrade_id: contacts_upgrade
limits:
features: []
resources_limits:
- limit:
per_user: 2147483648
type: team_size_proportional_plan_limit
resource:
description: How many size used for message storage for a user
per_user: false
persistent: true
resource_id: total_message_size
- limit:
type: no_limit
resource:
description: Total number of users in a company
per_user: false
persistent: true
resource_id: number_of_users
- limit:
amount: 25000
type: fixed_plan_limit
resource:
description: Total number of contacts in a company
per_user: false
persistent: true
resource_id: number_of_contacts
- limit:
type: no_limit
resource:
description: How many group message templates are allowed for a user
per_user: true
persistent: true
resource_id: number_of_message_templates
- limit:
type: no_limit
resource:
description: Total number of allowed custom fields for contacts
per_user: false
persistent: true
resource_id: custom_fields
- limit:
amount: 100
type: fixed_plan_limit
resource:
description: How many group messages can be sent per day
per_user: true
persistent: false
resource_id: bulk_messages_per_day
name: Nimble Business
period: monthly
plan_id: plan_1
price:
per_user_price: $25.00
type: team_size_proportional_plan_price
upgrades: []
properties:
extra_usage:
description: Exceeded nimble usage. here you can findout what resource or feature wasn't enough
type: object
payment_type:
type: string
required_spec:
description: Subscription spec that will allow user to continue use nimble with all extra resources/features
type: object
required:
- payment_type
- required_spec
- extra_usage
type: object
Contacts.ContactUpdateRequest:
properties:
avatar_url:
type: string
fields:
description: |
Describes a dictionary organized in the same structure as a contact listing response.
In this structure, each key is field name. Values are lists of dictionaries, having two fields:
value - actual value to store in contact field, modifier - field modifier to use, if field can have one.
At a minimum, contacts require a name (first or last for a person, company name for a company).
type: object
is_important:
type: boolean
type: object
Errors.ForbiddenError:
example:
message: You don't have access to this deal
properties:
message:
type: string
description: |
indicates that we can't authenticate the request. Message can be an arbitrary string, however there are
few special cases:
"Can't authenticate request" – something is wrong with the auth token
"email_verification_required" - if the user needs to verify their email address to continue having
access to Nimble
required:
- message
type: object
Errors.NotAcceptableError:
example:
message: You can not reopen already active deal
type: lost_contact_access
properties:
message:
type: string
type:
type: string
required:
- message
- type
type: object
Fields.TextValidationRule:
type: object
properties:
type:
enum:
- email
- url
Fields.StringFieldValuesType:
type: object
properties:
field_kind:
enum:
- string
validation_rule:
$ref: '#/components/schemas/Fields.TextValidationRule'
Fields.LongStringFieldValuesType:
type: object
properties:
field_kind:
enum:
- long_string
Commons.PossibleValues:
type: object
properties:
ordering_type:
type: string
enum:
- ordinal
- alphabetic
values:
type: array
items:
type: object
properties:
id:
type: string
value:
type: string
Fields.ChoiceFieldValuesType:
type: object
properties:
field_kind:
enum:
- choice
values:
$ref: '#/components/schemas/Commons.PossibleValues'
Fields.NumberFieldValuesType:
type: object
properties:
field_kind:
enum:
- number
Fields.DateTimeFieldValuesType:
type: object
properties:
field_kind:
enum:
- datetime
Fields.BooleanFieldValuesType:
type: object
properties:
field_kind:
enum:
- boolean
Fields.AddressFieldValuesType:
type: object
properties:
field_kind:
enum:
- address
Fields.AttachmentFieldValuesType:
type: object
properties:
field_kind:
enum:
- attachment
Fields.UserFieldValuesType:
type: object
properties:
field_kind:
enum:
- user
Fields.EmploymentFieldValuesType:
type: object
properties:
field_kind:
enum:
- employment
Fields.FieldType:
oneOf:
- $ref: '#/components/schemas/Fields.StringFieldValuesType'
- $ref: '#/components/schemas/Fields.LongStringFieldValuesType'
- $ref: '#/components/schemas/Fields.ChoiceFieldValuesType'
- $ref: '#/components/schemas/Fields.NumberFieldValuesType'
- $ref: '#/components/schemas/Fields.DateTimeFieldValuesType'
- $ref: '#/components/schemas/Fields.BooleanFieldValuesType'
- $ref: '#/components/schemas/Fields.AddressFieldValuesType'
- $ref: '#/components/schemas/Fields.AttachmentFieldValuesType'
- $ref: '#/components/schemas/Fields.UserFieldValuesType'
- $ref: '#/components/schemas/Fields.EmploymentFieldValuesType'
Fields.IntegerNumberPresentation:
type: object
properties:
number_type:
enum:
- integer
required:
- type
Fields.DecimalNumberPresentation:
type: object
properties:
number_type:
enum:
- decimal
fraction_digits:
type: integer
minimum: 1
required:
- type
- fraction_digits
Fields.PercentageNumberPresentation:
type: object
properties:
number_type:
enum:
- percentage
fraction_digits:
type: integer
minimum: 1
required:
- type
- fraction_digits
Fields.FinancialNumberPresentation:
type: object
properties:
number_type:
enum:
- financial
currency:
type: string
nullable: true
required:
- type
- currency
Fields.DateTimePresentation:
type: object
properties:
date_format:
type: string
nullable: true
description: |
strftime-like format template as described in
https://docs.python.org/2.7/library/datetime.html#strftime-and-strptime-behavior
or null if client should use date format from user settings
ignore_specific_time:
type: boolean
nullable: true
description: |
show if time should be presented in the field. Applicable only if date_format is None.
Must be null if date_format specified
required:
- date_format
- ignore_specific_time
Fields.FieldPresentation:
description: |
how values of the field should look. Must match to corresponding field_type. Date and number
fields must have an appropriate presentation. There is no presentation for other types
oneOf:
- $ref: '#/components/schemas/Fields.IntegerNumberPresentation'
- $ref: '#/components/schemas/Fields.DecimalNumberPresentation'
- $ref: '#/components/schemas/Fields.PercentageNumberPresentation'
- $ref: '#/components/schemas/Fields.FinancialNumberPresentation'
- $ref: '#/components/schemas/Fields.DateTimePresentation'
Fields.ContactField:
type: object
properties:
type:
enum:
- field
type: string
name:
type: string
field_id:
type: string
modifier:
type: string
multiples:
type: boolean
read_only:
description: if contacts values of this field is editable. It is different from available_actions.read_only
type: boolean
field_type:
$ref: '#/components/schemas/Fields.FieldType'
presentation:
$ref: '#/components/schemas/Fields.FieldPresentation'
available_actions:
description: |
edit_all - all operations with field available
edit_choices_only - just choices of field available for changing
view_only - field can't be changed
enum:
- edit_all
- edit_choices_only
- view_only
Fields.ContactFieldsGroup:
type: object
properties:
type:
enum:
- group
type: string
name:
type: string
group_id:
type: string
logo_id:
type: string
fields:
type: array
items:
$ref: '#/components/schemas/Fields.ContactField'
Fields.ContactFieldsTab:
properties:
tab_id:
type: string
tab_name:
type: string
contact_types:
$ref: '#/components/schemas/Contacts.ContactType'
is_standard:
type: boolean
members:
description: a member could be a group of fields or separate field
type: array
items:
oneOf:
- $ref: '#/components/schemas/Fields.ContactFieldsGroup'
- $ref: '#/components/schemas/Fields.ContactField'
available_actions:
description: |
edit_all - available all operations with tab
rearrange_only - available just moving tab between other tabs
view_only - tab can't be changed
enum:
- edit_all
- rearrange_only
- view_only
Fields.ContactsFieldsMetadata:
type: object
properties:
tabs:
items:
$ref: '#/components/schemas/Fields.ContactFieldsTab'
type: array
required:
- tabs
description: Contain the structure of contacts tabs, groups, and fields.
Fields.FieldTypeOnFieldCreation:
oneOf:
- $ref: '#/components/schemas/Fields.StringFieldValuesType'
- $ref: '#/components/schemas/Fields.LongStringFieldValuesType'
- $ref: '#/components/schemas/Fields.ChoiceFieldValuesType'
- $ref: '#/components/schemas/Fields.NumberFieldValuesType'
- $ref: '#/components/schemas/Fields.DateTimeFieldValuesType'
- $ref: '#/components/schemas/Fields.BooleanFieldValuesType'
- $ref: '#/components/schemas/Fields.AddressFieldValuesType'
- $ref: '#/components/schemas/Fields.UserFieldValuesType'
Fields.CreateFieldRequest:
type: object
properties:
field_type:
$ref: '#/components/schemas/Fields.FieldTypeOnFieldCreation'
group_id:
nullable: true
type: string
insert_after:
description: If not null, inserts a new field after another field or group with specified id.
If null, then inserted field to be the first one
nullable: true
type: string
name:
maxLength: 50
minLength: 1
type: string
presentation:
$ref: '#/components/schemas/Fields.FieldPresentation'
tab_id:
type: string
multiples:
type: boolean
description: whether this field can hold multiple values (by default, false)
required:
- name
- tab_id
- group_id
- field_type
- presentation
- insert_after
Fields.UpdateIsPrimaryRequest:
properties:
field_id:
type: string
position:
minimum: 0
type: integer
required:
- field_id
- position
- is_primary
type: object
Contacts.ContactNoteSpec:
properties:
contact_ids:
description: List of contacts’ IDs in BSON format to which the note will be attached. Contacts
count should be between 1 and 10.
items:
type: string
type: array
note:
type: string
note_preview:
description: Short version of note, that will be used for preview purposes
type: string
required:
- contact_ids
- note
- note_preview
type: object
Contacts.ShortContact:
properties:
avatar_url:
type: string
contact_type:
$ref: '#/components/schemas/Contacts.ContactType'
email:
items:
type: string
type: array
id:
type: string
is_viewable:
description: if this contact can be viewed in details by a calling user
type: boolean
name:
type: string
employment:
nullable: true
description: the most relevant contact employment (e.g., primary or present)
type: object
properties:
company_name:
type: string
nullable: true
title:
type: string
nullable: true
phones:
properties:
label:
description: phone label like "home", "work", etc
type: string
value:
type: string
required:
- label
- value
type: object
required:
- avatar_url
- contact_type
- id
- name
- email
- is_viewable
- phones
type: object
Contacts.ContactNote:
properties:
author_name:
description: Readable name of company user who created this note
type: string
contacts:
items:
$ref: '#/components/schemas/Contacts.ShortContact'
type: array
created:
description: Date and time when the note was created encoded in ISO 8601
type: string
id:
type: string
note:
type: string
note_preview:
type: string
owner_id:
type: string
owner:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
updated:
description: Date and time when the note was updated encoded in ISO 8601
type: string
required:
- id
- owner_id
- author_name
- created
- updated
- contacts
- note_preview
- note
- owner
type: object
Contacts.SingleContactNoteSpec:
properties:
note:
type: string
note_preview:
description: Optional short version used for previews. Defaults to the full note.
type: string
required:
- note
type: object
Calls.CallResolutionSpec:
enum:
- successful
- unsuccessful
- abandoned
- left_voicemail
type: string
Activities.ActivityTypeDef:
properties:
archived:
description: True if the type was archived. We shouldn't create new activities of archived types
type: boolean
can_update_definition:
description: True if user can change definition of that type, False otherwise
type: boolean
can_update_lc:
description: True if completion of the activity should update the last contacted date
type: boolean
logo_id:
description: id of a picture to display for these activities
type: string
type_id:
description: unique and stable id for an activity type
type: string
type_name:
description: human-readable name for an activity type
type: string
required:
- type_id
- type_name
- logo_id
- can_update_lc
- can_update_definition
- archived
type: object
Settings.UserPermissions:
additionalProperties:
type: number
description: users permission
example:
api use: 1
manage deals pipelines: 1
mass delete: 1
mass export: 1
private deals edit: 1
private deals view: 1
type: object
Legacy.UserMetadata:
properties:
city:
nullable: true
type: string
description: (deprecated)
company_name:
type: string
description: (deprecated)
country:
nullable: true
description: (deprecated)
type: string
employees_count:
nullable: true
description: (deprecated)
type: integer
help_tour_data:
description: (deprecated)
properties:
app/activities/list:
type: integer
app/b/homepage:
type: integer
app/contacts/list:
type: integer
app/contacts/view:
type: integer
app/deals/list:
type: integer
app/deals/view:
type: integer
app/groupmessages/create:
type: integer
app/messages/list:
type: integer
app/messages/view:
type: integer
app/settings/:
type: integer
app/social/list:
type: integer
contact_list_group_message:
type: integer
disabled:
type: integer
nimble_widget:
type: integer
type: object
industry:
description: (deprecated)
nullable: true
type: string
phone:
nullable: true
type: string
state:
description: (deprecated)
nullable: true
type: string
street:
description: (deprecated)
nullable: true
type: string
title:
nullable: true
type: string
zip:
description: (deprecated)
nullable: true
type: string
required:
- title
- company_name
- industry
- phone
- street
- city
- state
- zip
- country
- employees_count
- help_tour_data
type: object
Accounts.User:
properties:
account_type:
type: string
avatar_url:
nullable: true
type: string
company_id:
type: string
company_name:
type: string
created:
format: date-time
type: string
disabled:
type: boolean
email:
type: string
first_name:
type: object
is_company_owner:
type: boolean
is_pending:
description: true if that user has a pending invite
type: boolean
last_active:
description: timestamp when a user made his last API request to the platform
format: date-time
type: string
last_name:
type: object
name:
type: string
permissions:
$ref: '#/components/schemas/Settings.UserPermissions'
receive_newsletter:
type: boolean
has_password:
type: boolean
description: |
if this user has a password set (for some account types, like google accounts, the password is optional)
timezone:
type: string
under_gdpr:
type: boolean
user_id:
type: string
metadata:
$ref: '#/components/schemas/Legacy.UserMetadata'
email_verification_due:
type: boolean
description: |
A flag indicating whether the email verification is due. Almost all API call will result in 403 response
for users with unverified email.
required:
- under_gdpr
- user_id
- company_id
- company_name
- email
- name
- first_name
- last_name
- timezone
- disabled
- avatar_url
- created
- account_type
- is_company_owner
- receive_newsletter
- permissions
- last_active
- is_pending
- metadata
- has_password
type: object
Commons.Comment:
properties:
author:
$ref: '#/components/schemas/Accounts.User'
comment_id:
type: string
created:
type: string
text:
type: string
updated:
type: string
required:
- comment_id
- author
- text
- created
- updated
type: object
Deals.ShortSavedDeal:
properties:
deal_id:
description: unique id of a deal
type: string
is_editable:
description: Is this deal is editable to a user who retrieved it
type: boolean
is_viewable:
description: Is this deal is viewable to a user who retrieved it (True for private deals
type: boolean
name:
type: string
amount:
type: integer
nullable: true
Sequences.SequenceBriefInfo:
type: object
properties:
id:
type: string
description: unique id of the sequence
name:
type: string
description: name of the sequence
required:
- id
- name
Activities.Activity:
properties:
activity_id:
type: string
activity_type:
$ref: '#/components/schemas/Activities.ActivityTypeDef'
assigned_to:
$ref: '#/components/schemas/Accounts.User'
comments:
items:
$ref: '#/components/schemas/Commons.Comment'
type: array
completed_tstamp:
type: object
created:
type: string
description:
type: string
details:
description: Activity specific data that only relevant for certain implementation
type: object
feed_tstamp:
type: object
is_important:
type: boolean
name:
type: string
owner:
$ref: '#/components/schemas/Accounts.User'
priority:
enum:
- high
- medium
- low
type: string
related_contacts:
items:
$ref: '#/components/schemas/Contacts.ShortContact'
type: array
new_related_deals:
items:
$ref: '#/components/schemas/Deals.ShortSavedDeal'
type: array
related_sequence:
$ref: '#/components/schemas/Sequences.SequenceBriefInfo'
nullable: true
description: sequence that created this activity, if applicable
scheduled_tstamp:
type: object
tags:
items:
type: string
type: array
required:
- details
- activity_type
- activity_id
- name
- description
- assigned_to
- related_contacts
- scheduled_tstamp
- completed_tstamp
- feed_tstamp
- tags
- priority
- comments
- is_important
- owner
- created
- related_sequence
type: object
Tasks.TaskRelatedObjectsSpec:
description: Objects to associate with a task. Use `related.contacts` rather than the legacy `related_to`
field.
properties:
contacts:
description: Contact IDs to associate with the task.
items:
type: string
type: array
deals:
description: Deal IDs to associate with the task.
items:
type: string
type: array
type: object
Tasks.NewTaskSpecification:
properties:
assigned_to:
type: string
completed_time:
type: string
due_date:
type: string
is_important:
type: boolean
notes:
type: string
related:
$ref: '#/components/schemas/Tasks.TaskRelatedObjectsSpec'
subject:
type: string
tags:
items:
type: string
type: array
required:
- subject
type: object
Tasks.TaskRelatedObjects:
properties:
contacts:
description: Contacts associated with the task.
items:
$ref: '#/components/schemas/Contacts.ShortContact'
type: array
deals:
description: legacy deal ids (always empty, kept for backwards compatibility)
items:
type: string
type: array
new_deals:
description: Deals associated with the task.
items:
$ref: '#/components/schemas/Deals.ShortSavedDeal'
type: array
sequence:
$ref: '#/components/schemas/Sequences.SequenceBriefInfo'
nullable: true
description: sequence that created this task, if applicable
required:
- contacts
- deals
- new_deals
- sequence
type: object
Tasks.Task:
properties:
assigned_to:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
nullable: true
comments:
items:
$ref: '#/components/schemas/Commons.Comment'
type: array
company_id:
type: string
completed:
type: boolean
completed_time:
nullable: true
type: string
created:
type: string
due_date:
nullable: true
type: string
due_date_text:
nullable: true
type: string
id:
type: string
is_important:
type: boolean
notes:
nullable: true
type: string
owner:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
owner_id:
type: string
related:
$ref: '#/components/schemas/Tasks.TaskRelatedObjects'
related_to:
description: Legacy response field. To associate contacts when creating a task, use `related.contacts`.
items:
type: string
type: array
starred:
type: boolean
subject:
type: string
tags:
items:
type: string
type: array
updated:
type: string
version:
default: 2
type: integer
required:
- version
- assigned_to
- comments
- company_id
- completed
- completed_time
- created
- due_date
- due_date_text
- id
- is_important
- starred
- notes
- owner_id
- related_to
- related
- subject
- tags
- updated
- owner
type: object
Proceedings.ProceedingTypeDef:
properties:
type_id:
description: Unique and stable id for an proceeding type
type: string
enum:
- contact_note
- contact_attachment
- message
- webform_response
- task
- call
- event
- deal
- new_deal
type_name:
description: human-readable name for an proceeding type
type: string
Proceedings.ProceedingProvider:
properties:
name:
type: string
provider_id:
type: string
types:
items:
$ref: '#/components/schemas/Proceedings.ProceedingTypeDef'
type: array
required:
- provider_id
- name
- types
type: object
Proceedings.Proceeding:
properties:
description:
type: string
details:
description: Proceeding-specific data that only relevant for certain implementation
type: object
feed_tstamp:
type: string
name:
type: string
proceeding_id:
type: string
proceeding_type:
$ref: '#/components/schemas/Proceedings.ProceedingTypeDef'
required:
- details
- proceeding_type
- proceeding_id
- name
- description
- feed_tstamp
type: object
Contacts.StageRole:
properties:
is_final:
type: boolean
name:
type: string
required:
- name
- is_final
type: object
Contacts.LeadStage:
properties:
archived_at:
nullable: true
type: string
created:
type: string
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
days_limit:
nullable: true
type: number
description:
nullable: true
type: string
name:
type: string
pipeline_id:
type: string
position:
type: number
role:
$ref: '#/components/schemas/Contacts.StageRole'
stage_id:
type: string
updated:
type: string
required:
- stage_id
- pipeline_id
- creator
- name
- description
- created
- updated
- archived_at
- position
- days_limit
- role
type: object
Contacts.LeadLostReason:
type: object
properties:
id:
type: string
text:
type: string
Contacts.LeadsPipeline:
properties:
archived_at:
nullable: true
type: string
color:
type: string
created:
type: string
fields:
type: array
items:
type: object
properties:
column_id:
type: string
enabled:
type: boolean
required:
- column_id
- enabled
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
description:
nullable: true
type: string
name:
type: string
pipeline_id:
type: string
stages:
items:
$ref: '#/components/schemas/Contacts.LeadStage'
type: array
updated:
type: string
lost_reasons:
description: a list with possible lost reasons that can be specified for a lost lead
type: array
items:
$ref: '#/components/schemas/Contacts.LeadLostReason'
required:
- pipeline_id
- creator
- name
- description
- created
- updated
- archived_at
- stages
- color
- lost_reasons
type: object
Contacts.ExitLeadSuccessfullyRequest:
properties:
actual_exit_date:
description: |
if specified, this value will be set as the actual exit data, otherwise the time of the request will be used
type: string
nullable: true
notes:
description: optional notes (comments) to add to this transition to a won stage
type: string
nullable: true
type: object
Contacts.ExitLeadUnsuccessfullyRequest:
properties:
actual_exit_date:
description: |
if specified, this value will be set as the actual exit data, otherwise the time of the request will be used
type: string
nullable: true
notes:
description: optional notes (comments) to add to this transition to a lost stage
type: string
nullable: true
lost_reason:
description: optional lost reason to add to this "exit"
type: string
nullable: true
type: object
Deals.RelatedExternalContact:
description: external contact related to this deal
type: object
properties:
contact_info:
type: string
note:
type: string
Deals.Principals:
type: object
properties:
user_ids:
type: array
items:
type: string
format: BSONObjectId
description: Set of user IDs with permissions
minItems: 0
group_ids:
type: array
items:
type: string
format: BSONObjectId
description: Set of group IDs with permissions
minItems: 0
required:
- user_ids
- group_ids
example:
user_ids:
- 507f1f77bcf86cd799439011
group_ids:
- 507f1f77bcf86cd799439012
Deals.DealPrivacy:
type: object
properties:
read:
$ref: '#/components/schemas/Deals.Principals'
description: Principals permitted to read deal. Null if permitted for everyone
edit:
$ref: '#/components/schemas/Deals.Principals'
description: Principals permitted to read and edit deal. Null if permitted for everyone
required:
- read
- edit
example:
read:
user_ids:
- 507f1f77bcf86cd799439011
group_ids:
- 507f1f77bcf86cd799439012
edit:
user_ids:
- 507f1f77bcf86cd799439013
group_ids:
- 507f1f77bcf86cd799439014
Deals.EmploymentInfo:
description: Information about date employment
type: object
properties:
employer:
$ref: '#/components/schemas/Contacts.ShortContact'
start_date:
description: First working day
type: string
end_date:
description: Last working day
type: string
title:
description: Job-title of contact
type: string
Deals.RelatedContact:
description: Contacts related to deal
type: object
properties:
contact:
description: short info about related contact
$ref: '#/components/schemas/Contacts.ShortContact'
note:
description: contact's note
type: string
employments:
description: employments of this contact if applicable
type: array
items:
$ref: '#/components/schemas/Deals.EmploymentInfo'
Deals.FieldsValues:
type: object
description: Fields of the deals which was filled up by the owner/creator
properties:
field_id:
type: string
example: 65958d7ef2e8748e6361ddb1
values:
type: array
items:
type: object
properties:
value:
type: string
example: value_1
is_primary:
type: boolean
example: true
Deals.NamedFieldsValues:
type: object
description: Fields of the deals which was filled up by the owner/creator
properties:
field_name:
type: string
example: amount
values:
type: array
items:
type: object
properties:
value:
type: string
example: value_1
is_primary:
type: boolean
example: true
Pipeline.DealStage:
description: Stage in the deals pipeline
type: object
properties:
default_probability:
description: Probability, that will be set to a deal at this stage, if not specific deal probability
provided.
type: integer
stage_id:
type: string
description:
type: string
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
created:
type: string
updated:
type: string
pipline_id:
description: Id of pipeline deals belongs to
type: string
role:
type: object
properties:
name:
type: string
is_final:
type: boolean
example: true
archived_at:
description: When and if this stage has been archived
type: string
nullable: true
expected_days:
description: The number of days a deal is expected to spend at this stage
type: integer
name:
description: Name of the stage
type: string
Deals.DealStageTransition:
properties:
from_stage:
$ref: '#/components/schemas/Pipeline.DealStage'
description: Can be null if this was the very first transition
to_stage:
$ref: '#/components/schemas/Pipeline.DealStage'
who:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
when:
type: string
format: date
notes:
type: string
nullable: true
required:
- from_stage
- to_stage
- who
- when
type: object
Deals.DealPipelineTransitions:
properties:
pipeline_id:
type: string
pipeline_color:
type: string
pipeline_name:
type: string
transitions:
items:
$ref: '#/components/schemas/Deals.DealStageTransition'
type: array
before_final_stage:
$ref: '#/components/schemas/Pipeline.DealStage'
nullable: true
description: previous to the final stage (if the deal is won or lost, otherwise - null)
required:
- pipeline_id
- pipeline_color
- pipeline_name
- transitions
type: object
Deals.AzureFileMetadata:
type: object
description: metadata for files uploaded from device using Azure JS SDK
properties:
data_id:
description: id of an object in the cloud
type: string
source:
enum:
- uploaded_azure
Deals.ExternalFileMetadata:
type: object
description: metadata for files from external sources (dropbox, google drive, one drive)
properties:
icon_url:
type: string
file_url:
type: string
source:
enum:
- dropbox
- one_drive
- google_drive
Deals.DealFile:
type: object
properties:
uploader:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
uploaded_at:
type: string
file_size:
type: number
description: the file size in bytes
file_name:
type: string
file_id:
type: string
metadata:
oneOf:
- $ref: '#/components/schemas/Deals.AzureFileMetadata'
- $ref: '#/components/schemas/Deals.ExternalFileMetadata'
Deals.DealView:
properties:
updated:
description: Time of the last Deal update
type: string
deal_id:
description: Id of created Deal
type: string
deal_number:
description: Auto-incrementing deal number, unique within company
type: integer
creator:
description: Deal creator
$ref: '#/components/schemas/Accounts.ShortUserInfo'
related_external_contacts:
description: List of external contacts related to this deal
type: array
items:
$ref: '#/components/schemas/Deals.RelatedExternalContact'
privacy:
description: Read/Edit privacy settings
$ref: '#/components/schemas/Deals.DealPrivacy'
updated_by:
description: Last updated by which user
type: string
created:
description: Datetime when deal was created
type: string
is_editable:
description: Is this deal is editable to a user who retrieved it
type: boolean
currency:
description: Currency of Deal
type: string
format: iso-4217
related_contacts:
description: List of Nimble contacts related to this deal
type: array
items:
$ref: '#/components/schemas/Deals.RelatedContact'
owner:
description: User who owns this deal
$ref: '#/components/schemas/Accounts.ShortUserInfo'
fields_values:
description: 'Fields of the deals which was filled up by the owner/creator. At leas field deal_name
is required.
Standard fields description:
Stage.default_probability set). Deal probability. If not provided by
user, deal will try to derive it from stage''s default_probability. If none,
will rise error{field_id:[]}'
$ref: '#/components/schemas/Deals.FieldsValues'
fields_values_with_names:
$ref: '#/components/schemas/Deals.NamedFieldsValues'
stage_transitions:
$ref: '#/components/schemas/Deals.DealPipelineTransitions'
files:
$ref: '#/components/schemas/Deals.DealFile'
tags:
items:
type: string
type: array
final_probability:
description: custom deal probability if it specified or deal stage probability
type: integer
age_in_days:
type: number
Deals.DealsList:
type: object
description: List of user deals
properties:
meta:
type: object
properties:
per_page:
type: integer
description: amount of deals per page
total:
type: integer
description: total amount of deals
page:
type: integer
description: number of the current page
pages:
type: integer
description: total amount of pages
resources:
type: array
description: List of deals
items:
$ref: '#/components/schemas/Deals.DealView'
Deals.CreateDealRequest:
properties:
owner_id:
description: id of user who owns deal
type: string
privacy:
description: deal's read and edit privacy
$ref: '#/components/schemas/Deals.DealPrivacy'
fields_values:
description: 'Fields of the deals which was filled up by the owner/creator. At leas field deal_name
is required. Stage.default_probability set). Deal probability. If not provided by
user, deal will try to derive it from stage''s default_probability. If none,
will rise error{field_id:[]} List of available
fields can be obtained from /api/v2/deals/fields'
type: object
additionalProperties:
type: array
items:
type: object
properties:
value:
type: string
example:
63760e653af0e748fe48366a:
- value: Deal Name
63760e653af0e748fe48366b:
- value: '10000'
description:
- value: Important deal
pipeline_id:
description: id of the pipeline which belongs to this deal
type: string
stage_id:
type: string
description: id of stage on which deal is currently is
currency:
description: Currency of the deal in ISO-4217 format (3 char
code)
type: string
format: ISO-4217
related_contacts:
description: List of Nimble contacts that take part in the deal.
type: array
items:
type: object
properties:
contact_id:
type: string
note:
type: string
nullable: true
related_external_contacts:
description: A list with related external contacts. Similar to related_contacts, but instead
of contact_id we use contact_info (email, phone etc)
type: array
items:
$ref: '#/components/schemas/Deals.RelatedExternalContact'
tags:
type: array
items:
type: string
required:
- owner
- fields_values
- pipeline_id
- stage_id
type: object
Columns.ColumnPresentationType:
enum:
- single-line-text-box
- phone
- mail
- url
- multi-line-text-box
- select-box
- address
- numeric-general
- date
- boolean
- attachment
- tags
- privacy
- user
- contact employment
nullable: false
type: string
Columns.ColumnPresentation:
type: object
properties:
type:
$ref: '#/components/schemas/Columns.ColumnPresentationType'
possible_values:
$ref: '#/components/schemas/Commons.PossibleValues'
Columns.ListingColumn:
properties:
id:
description: unique column identifier
type: string
human_readable_name:
description: name to display
type: string
json_path:
description: JSONPath to determine the exact value from contact data. It should return a list
of values
type: string
value_json_path:
description: JSONPath to determine the exact value from field's value (when value is json itself).
type: string
nullable: true
presentation:
description: allows client to distinguish different field types. Single line by default
$ref: '#/components/schemas/Columns.ColumnPresentation'
read_only:
description: defines ability to edit this column
type: boolean
is_standard:
description: show if the column is standard or created by the user
type: boolean
sortable:
description: True if contacts can be sorted by this column
type: boolean
type: object
Columns.ColumnGroup:
properties:
columns:
items:
$ref: '#/components/schemas/Columns.ListingColumn'
type: array
group_id:
type: string
human_readable_name:
type: string
required:
- group_id
- human_readable_name
- columns
type: object
Search.SearchField:
type: object
properties:
human_readable_name:
type: string
search_name:
type: string
data_type:
type: object
properties:
type_id:
enum:
- textlike
- datelike
- numberlike
occurrences:
type: array
items:
enum:
- starts_with
frequently_used:
type: boolean
possible_values:
$ref: '#/components/schemas/Commons.PossibleValues'
Deals.DealListingColumn:
allOf:
- $ref: '#/components/schemas/Columns.ListingColumn'
- properties:
search_field:
$ref: '#/components/schemas/Search.SearchField'
type: object
Deals.BaseDealPipelineFieldsTabMember:
properties:
type:
type: string
type: object
Deals.IDealField:
type: object
properties:
field_id:
description: The id of a field in the database
type: string
modifier:
type: string
multiples:
type: boolean
available_actions:
description: Shows available for user actions
type: string
field_type:
type: string
field_name:
description: The name of a field
type: string
Deals.DealPipelineField:
description: Fields of DealsPipeline
allOf:
- $ref: '#/components/schemas/Deals.BaseDealPipelineFieldsTabMember'
- properties:
field:
$ref: '#/components/schemas/Deals.IDealField'
pipeline_id:
type: string
type: object
Deals.DealPipelineFieldsGroup:
allOf:
- $ref: '#/components/schemas/Deals.BaseDealPipelineFieldsTabMember'
- properties:
group_name:
type: string
group_id:
type: string
logo_id:
type: string
fields:
type: array
items:
$ref: '#/components/schemas/Deals.DealPipelineField'
type: object
Deals.DealPipelineFieldsTabMember:
oneOf:
- $ref: '#/components/schemas/Deals.DealPipelineField'
- $ref: '#/components/schemas/Deals.DealPipelineFieldsGroup'
discriminator:
propertyName: type
mapping:
field: '#/components/schemas/Deals.DealPipelineField'
group: '#/components/schemas/Deals.DealPipelineFieldsGroup'
Deals.DealPipelineFieldsTab:
type: object
properties:
tab_id:
description: The id of a tab in the database
type: string
tab_name:
description: The name of a tab
type: string
pipeline_id:
type: string
members:
$ref: '#/components/schemas/Deals.DealPipelineFieldsTabMember'
Deals.DealFieldsMetadata:
type: object
properties:
pipelines_tabs:
type: array
items:
$ref: '#/components/schemas/Deals.DealPipelineFieldsTab'
standard_fields:
type: array
items:
$ref: '#/components/schemas/Deals.IDealField'
Commons.Tag:
properties:
name:
type: string
created:
description: datetime object that equals to time when tag was created
type: string
nullable: true
required:
- name
type: object
Contacts.ContactsAlreadyLeadsError:
properties:
error_type:
type: string
error_description:
type: string
already_leads:
type: array
items:
type: object
properties:
id:
type: string
full_name:
type: string
Contacts.NotEditableContactsError:
properties:
error_type:
type: string
error_description:
type: string
count:
type: integer
Contacts.AssigmentProgress:
properties:
is_completed:
type: boolean
operation_id:
type: string
processed:
type: integer
started_at:
type: string
total:
type: integer
errors:
type: array
items:
oneOf:
- $ref: '#/components/schemas/Contacts.ContactsAlreadyLeadsError'
- $ref: '#/components/schemas/Contacts.NotEditableContactsError'
required:
- operation_id
- processed
- total
- started_at
- is_completed
- errors
type: object
Deals.EditDealRequest:
type: object
properties:
owner_id:
description: id of user who owns the deal
type: string
example: 5049f696a694620a0700001c
privacy:
description: deal's read and edit privacy
$ref: '#/components/schemas/Deals.DealPrivacy'
fields_values:
description: 'Fields of the deals which was filled up by the owner/creator. At leas field deal_name
is required. Stage.default_probability set). Deal probability. If not provided by
user, deal will try to derive it from stage''s default_probability. If none,
will rise error{field_id:[]}'
oneOf:
- $ref: '#/components/schemas/Deals.FieldsValues'
- $ref: '#/components/schemas/Deals.NamedFieldsValues'
pipeline_id:
description: id of the pipeline to which this deal belongs
type: string
example: 630f34cfa34058dea76c0c0e
stage_id:
description: id of the stage on which deal is now
type: string
example: 62fd6587048065ca3510c6d5
currency:
description: 'Currency of the deal in ISO-4217 (3 char code).'
type: string
format: ISO-4217
example: USD
related_contacts:
description: 'List of Nimble contacts that take part in the deal. If you want to clear contacts
list, send {''related_external_contacts'': []}'
type: array
items:
type: object
properties:
contact_id:
type: string
note:
type: string
nullable: true
example:
- contact_id: 630c6f7bf5943b012188c778
note: Some Note Text
related_external_contacts:
description: 'A list with related external contacts. Similar to related_contacts,
but instead of contact_id we use contact_info (email, phone etc).
{''related_external_contacts'': []}'
type: array
items:
$ref: '#/components/schemas/Deals.RelatedExternalContact'
tags:
description: new list of deal's tags
items:
type: string
type: array
Deals.StoreAzureFileRequest:
type: object
properties:
metadata:
$ref: '#/components/schemas/Deals.AzureFileMetadata'
Deals.StoreExternalFileRequest:
type: object
properties:
metadata:
$ref: '#/components/schemas/Deals.ExternalFileMetadata'
file_name:
type: string
file_size:
type: number
Deals.StoreFileRequest:
oneOf:
- $ref: '#/components/schemas/Deals.StoreAzureFileRequest'
- $ref: '#/components/schemas/Deals.StoreExternalFileRequest'
Deals.UpdateDealFileRequest:
type: object
properties:
new_file_name:
type: string
Deals.DealNote:
type: object
properties:
note_id:
type: string
title:
type: string
body:
type: string
created:
type: string
format: date-time
updated:
type: string
format: date-time
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
Pipeline.LeadLostReason:
type: object
properties:
id:
description: The id of a reason in the db
type: string
format: ObjectId
text:
description: reason's text
type: string
Pipeline.DealsPipeline:
properties:
pipeline_id:
description: The unique ID of a pipeline
type: string
format: ObjectId
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
name:
description: The description for the pipeline
type: string
description:
type: string
nullable: true
created:
type: string
updated:
type: string
archived_at:
description: The timestamp of when the pipeline was archived (None if it's not archived)
type: string
nullable: true
stages:
type: array
items:
$ref: '#/components/schemas/Pipeline.DealStage'
color:
description: The color of a pipeline
type: string
lost_reasons:
type: array
items:
$ref: '#/components/schemas/Pipeline.LeadLostReason'
is_default:
description: If this pipeline was pre-generated on company creation
type: boolean
default_currency:
description: Default currency for pipeline
type: string
nullable: true
tabs:
type: array
items:
$ref: '#/components/schemas/Deals.DealPipelineFieldsTab'
Pipeline.CreateDealStageRequest:
description: Stage in the pipeline where deals will be placed
type: object
properties:
name:
type: string
description: Name of the stage
description:
type: string
description: Stage description
pipeline_id:
type: string
format: ObjectId
description: Id of the pipeline where stage should be
insert_after:
type: string
format: ObjectId
description: Id of the stage that should be positioned before this new stage
expected_days:
type: number
minimum: 0
description: Expected day before stage complete
default_probability:
type: number
minimum: 0
maximum: 100
description: Default probability for all deals in this stage (will be deal probability if one
doesn't have its own)
Pipeline.StringFieldValuesType:
type: object
properties:
field_kind:
enum:
- string
validation_rule:
enum:
- email
- url
Pipeline.LongStringFieldValuesType:
type: object
properties:
field_kind:
enum:
- long_string
Pipeline.ChoiceFieldValuesType:
type: object
properties:
field_kind:
enum:
- choice
values:
$ref: '#/components/schemas/Commons.PossibleValues'
Pipeline.NumberFieldValuesType:
type: object
properties:
field_kind:
enum:
- number
Pipeline.DateTimeFieldValuesType:
type: object
properties:
field_kind:
enum:
- datetime
Pipeline.BooleanFieldValuesType:
type: object
properties:
field_kind:
enum:
- boolean
Pipeline.AddressFieldValuesType:
type: object
properties:
field_kind:
enum:
- address
Pipeline.UserFieldValuesType:
type: object
properties:
field_kind:
enum:
- user
Pipeline.FieldTypeOnFieldCreation:
oneOf:
- $ref: '#/components/schemas/Pipeline.StringFieldValuesType'
- $ref: '#/components/schemas/Pipeline.LongStringFieldValuesType'
- $ref: '#/components/schemas/Pipeline.ChoiceFieldValuesType'
- $ref: '#/components/schemas/Pipeline.NumberFieldValuesType'
- $ref: '#/components/schemas/Pipeline.DateTimeFieldValuesType'
- $ref: '#/components/schemas/Pipeline.BooleanFieldValuesType'
- $ref: '#/components/schemas/Pipeline.AddressFieldValuesType'
- $ref: '#/components/schemas/Pipeline.UserFieldValuesType'
Pipeline.CreateDealsPipelineFieldRequest:
type: object
properties:
name:
type: string
description: Name of the new field
field_type:
$ref: '#/components/schemas/Pipeline.FieldTypeOnFieldCreation'
presentation:
$ref: '#/components/schemas/Fields.FieldPresentation'
nullable: true
pipeline_id:
type: string
description: id of pipeline this field is being created for (if known)
nullable: true
insert_after:
type: string
description: Inserts a new field after field or group with specified id. If null,
then field is inserted as the first one
nullable: true
group_id:
description: id of group this field is being created for (if field is a member
of group)
type: string
required:
- name
- field_type
- presentation
Pipeline.CreateDealsPipelineGroupRequest:
type: object
properties:
group_name:
type: string
logo_id:
type: string
insert_after:
description: If not null, inserts a new group after another group or field with specified id.
If null, then group is inserted as the first one
nullable: true
type: string
fields:
type: array
items:
$ref: '#/components/schemas/Pipeline.CreateDealsPipelineFieldRequest'
Pipeline.CreateDealsPipelineRequest:
type: object
properties:
name:
type: string
description: Name of new pipeline
minLength: 1
maxLength: 200
description:
type: string
maxLength: 256
color:
type: string
lost_reasons:
type: array
items:
type: string
maxLength: 256
default: []
stages:
type: array
items:
type: object
$ref: '#/components/schemas/Pipeline.CreateDealStageRequest'
default: []
fields_tab_members:
type: array
items:
anyOf:
- $ref: '#/components/schemas/Pipeline.CreateDealsPipelineGroupRequest'
- $ref: '#/components/schemas/Pipeline.CreateDealsPipelineFieldRequest'
default_currency:
type: string
format: ISO-4217
required:
- name
- description
- color
- lost_reasons
- stages
- fields_tab_members
- default_currency
Pipeline.EditDealsPipelineRequest:
description: Updates pipeline
type: object
properties:
name:
type: string
minLength: 1
maxLength: 200
description: New pipeline name
description:
type: string
description: New pipeline description
color:
type: string
description: New pipeline color
Deals.DealsStageGroup:
type: object
description: Grouped data about stage and deals in it + meta
properties:
deals:
description: Deals in this stage
type: array
items:
$ref: '#/components/schemas/Deals.DealView'
stage:
description: Deal stage from pipeline
$ref: '#/components/schemas/Pipeline.DealStage'
meta:
description: Meta data about this stage
type: object
properties:
total_new_count:
description: Total pipeline deals count which entered stage less than 3 days ago
type: integer
next_page_url:
description: URL to load more deals for this stage. None if no more deals
type: string
total_amount:
description: Sum of deal amount separated by currencies
type: array
items:
type: object
properties:
currency:
type: string
format: ISO-4217
count:
type: integer
Deals.DealsByOwnerGroup:
type: object
description: Grouped data about owners and deals related to it + meta
properties:
deals:
description: Deals owned by user
type: array
items:
$ref: '#/components/schemas/Deals.DealView'
owner:
description: User that owned deals
$ref: '#/components/schemas/Accounts.ShortUserInfo'
meta:
description: Meta data about this group
type: object
properties:
next_page_url:
description: URL to load more deals for this group. None if no more deals
type: string
total_amount:
description: Sum of deal amount separated by currencies
type: array
items:
type: object
properties:
currency:
type: string
format: ISO-4217
count:
type: integer
Errors.ActionCanNotBeCompleted:
description: Action can not be complited becouse of reason described in error message
properties:
message:
description: Human-readable message for an error
type: string
error_type:
description: stable and unique identifier for error type. Clients should be able to rely on
it
type: string
Pipeline.EditDealStageRequest:
type: object
properties:
name:
type: string
description: Stage name
minLength: 1
maxLength: 4096
description:
type: string
description: Stage description
nullable: true
minLength: 1
maxLength: 4096
expected_days:
type: integer
description: The number of days a deal is expected to spend at this stage
default_probability:
description: Stage default probability. Will be assigned to all deals in stage if they don't
have their own
type: integer
minimum: 0
maximum: 100
Pipeline.UpdateDealsPipelineFieldRequest:
type: object
properties:
name:
type: string
description: Name of the new field
presentation:
$ref: '#/components/schemas/Fields.FieldPresentation'
nullable: true
insert_after:
type: string
description: Inserts a new field after field or group with specified id. If null,
then field is inserted as the first one
nullable: true
group_id:
type: string
format: ObjectId
description: id of group where field will be located or null if field will not
be in group
nullable: true
Pipeline.CreateDealsPipelineFieldChoiceRequest:
type: object
properties:
choice:
type: object
description: New choice
properties:
id:
type: string
value:
type: string
insert_after:
description: Move choice after choice with specified id. If null, then choice will
be the first one in field
type: string
nullable: true
required:
- choice
Pipeline.UpdateDealsPipelineFieldChoiceRequest:
type: object
properties:
value:
description: New choice value
type: string
nullable: true
insert_after:
description: Move choice after choice with specified id. If null, then choice will
be the first one in field
type: string
nullable: true
Messages.MessageTrackingConfiguration:
description: |
tracking configuration
type: object
properties:
opens_tracking:
type: boolean
description: whether to track message opens
clicks_tracking:
type: boolean
description: whether to track link clicks in a message
Messages.WatchRepliesRequest:
description: |
pass this object if we want to watch for the replies to this message
type: object
properties:
expiration_interval:
type: number
nullable: true
description: expiration interval in seconds
expiration_tstamp:
type: string
nullable: true
description: some concrete datetime when the thread watcher expires
Messages.IncompleteMessageSpecification:
description: |
"incomplete" message specification. All fields are optional.
type: object
properties:
attachments:
default: []
items:
$ref: '#/components/schemas/Messages.Attachment'
type: array
bcc:
default: []
items:
$ref: '#/components/schemas/Messages.MessagingAccount'
type: array
body:
nullable: true
type: string
cc:
default: []
items:
$ref: '#/components/schemas/Messages.MessagingAccount'
type: array
in_reply_to:
nullable: true
type: object
description: |
if this message spec is a reply to a thread, this object contains the id of message it's a reply to
and the id of a thread
properties:
in_reply_to_id:
type: string
description: "the id of a message assigned to it by a mail provider (the `provider_umid`\
\ property \nin the message's response we're replying to)\n"
thread_id:
type: string
description: the id of a thread this reply is to
recipients:
items:
$ref: '#/components/schemas/Messages.MessagingAccount'
type: array
sender:
type: object
oneOf:
- $ref: '#/components/schemas/Messages.MessagingAccount'
nullable: true
subject:
nullable: true
type: string
tracking_enabled:
nullable: true
type: object
description: DEPRECATED. use `tracking_configuration` instead
tracking_configuration:
$ref: '#/components/schemas/Messages.MessageTrackingConfiguration'
watch_replies:
type: object
nullable: true
oneOf:
- $ref: '#/components/schemas/Messages.WatchRepliesRequest'
builder_data:
type: object
description: client Email builder data
nullable: true
content_mode:
$ref: '#/components/schemas/Messages.MessageTemplateContentMode'
sender_credential_id:
type: string
format: ObjectId
description: credential to send this message (if null, credential will be determined by sender)
nullable: true
Messages.MappedMessagingAccount:
description: scheduled message participant (sender, cc, bcc, recipient) matched to a Nimble contact
if available
type: object
properties:
email:
type: string
contact:
description: matched Nimble contact if available
oneOf:
- $ref: '#/components/schemas/Contacts.ShortContact'
user:
description: matched Nimble user if available
type: object
nullable: true
oneOf:
- $ref: '#/components/schemas/Accounts.ShortUserInfo'
Messages.DraftMessageWithParticipants:
type: object
properties:
draft_id:
type: string
specification:
$ref: '#/components/schemas/Messages.IncompleteMessageSpecification'
updated:
description: last timestamp of when the draft was updated
type: string
creator:
$ref: '#/components/schemas/Accounts.ShortUserInfo'
recipients:
description: matched recipients
items:
$ref: '#/components/schemas/Messages.MappedMessagingAccount'
type: array
cc:
description: matched cc addresses
items:
$ref: '#/components/schemas/Messages.MappedMessagingAccount'
type: array
bcc:
description: matched bcc addresses
items:
$ref: '#/components/schemas/Messages.MappedMessagingAccount'
type: array
sender:
$ref: '#/components/schemas/Messages.MappedMessagingAccount'
security:
- ApiKey: []
tags:
- name: Authentication
description: "## Introduction\n\nThis document will describe authorization flow that return the\nauthorization\
\ token that allow to make requests to Nimble API and access\nresources to which access has been granted\
\ for user. For For\nauthorization Nimble use OAuth 2.0 protocol with bearer tokens. All\ntechnical\
\ details can be read in\n[RFC6749](http://tools.ietf.org/html/rfc6749) and\n[RFC6750](http://tools.ietf.org/html/rfc6750),\
\ but you don\\'t need to\nread them (unless you want to know more details on OAuth 2.0) every\ndetail\
\ that need to obtain access token and use this token for\nrequesting resource on behalf of user will\
\ be described in this\ndocument.\n\n## Terminology\n\n- **User** - Person who has an account inside\
\ Nimble and owner of resources to\n which API provide access\n\n- **Client** - Service that request\
\ a token and want to make requests to the Nimble\n API on behalf of User\n\n- **Authorization\
\ server** - Server that allow User to grant access for Client to use his\n resources\n\n- **Resource\
\ server** - Server that returns User\\'s resources to Client if it was granted\n for access by\
\ User\n\n- **Bearer token** - Token that Client received after User has granted access. Possession\n\
\ of this token allows client to make requests to Resource server in\n order to receive Client\\\
's resources.\n\n## Prerequisites\n\nIn order to create a Client for Nimble API you need to have to\
\ register\nyour application in our DB and get Client Secret and Client Id. Its can\nbe done on the\
\ page with this link:\nid of a pipeline to operate on
in: path
name: pipeline_id
required: true
schema:
type: string
/api/v2/deals/pipelines/{pipeline_id}/fields/{field_id}:
put:
description: Updates custom field in pipeline
operationId: put-deals-pipeline-field
summary: Update custom field in deals pipeline
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline.UpdateDealsPipelineFieldRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Deals.DealFieldsMetadata'
'404':
description: Field not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'406':
description: Field not acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotAcceptableError'
'409':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
delete:
description: Deletes custom field from pipeline
operationId: delete-deals-pipeline-field
summary: Delete custom field from deals pipeline
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
type: object
properties:
preflight_checks:
type: boolean
description: |
if true and there are deals using this field - will return an error;
if false - will delete the field and its possible values in deals
responses:
'200':
description: Deleted
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
description: Access forbidden
'404':
description: Field not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
parameters:
- description: id of a pipeline to operate on
in: path
name: pipeline_id
required: true
schema:
type: string
- description: id of custom field in pipeline to operate on
in: path
name: field_id
required: true
schema:
type: string
/api/v2/deals/pipelines/{pipeline_id}/fields/{field_id}/choices:
post:
description: Creates choice in specified pipeline field
operationId: post-deals-pipeline-field-choice
summary: Create choice in deals pipeline field
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline.CreateDealsPipelineFieldChoiceRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Deals.DealFieldsMetadata'
'404':
description: Pipeline/Field not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'409':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
parameters:
- description: id of a pipeline where custom field is
in: path
name: pipeline_id
required: true
schema:
type: string
- description: id of custom field where choice will be created
in: path
name: field_id
required: true
schema:
type: string
/api/v2/deals/pipelines/{pipeline_id}/fields/{field_id}/choices/{choice_id}:
put:
description: Updates choice in custom field in pipeline
operationId: put-deals-pipeline-field-choice
summary: Update choice in custom deals pipeline field
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline.UpdateDealsPipelineFieldChoiceRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Deals.DealFieldsMetadata'
'404':
description: Pipeline/Field/Choice not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'406':
description: Choice is not acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotAcceptableError'
'409':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
delete:
description: Deletes choice from custom field
operationId: delete-deals-pipeline-field-choice
summary: Delete choice from deals pipeline custom field
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
type: object
properties:
preflight_checks:
type: boolean
description: |
if true and there are deals using this particular choice - will return an error;
if false - will delete the choice and the value of this choice in all deals
responses:
'200':
description: Deleted
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
description: Access forbidden
'404':
description: Pipeline/Field/Choice not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
parameters:
- description: id of a pipeline where custom field is
in: path
name: pipeline_id
required: true
schema:
type: string
- description: id of custom field where choice is
in: path
name: field_id
required: true
schema:
type: string
- description: id of choice to operate on
in: path
name: choice_id
required: true
schema:
type: string
/api/v2/deals/pipelines/{pipeline_id}/groups:
post:
description: Create pipeline deal group
operationId: post-deals-pipeline-group
summary: Create deals pipeline fields group
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline.CreateDealsPipelineGroupRequest'
responses:
'201':
description: Group created
content:
application/json:
schema:
$ref: '#/components/schemas/Deals.DealFieldsMetadata'
'403':
description: User has no permission to update pipeline
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'409':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
parameters:
- name: pipeline_id
description: id of pipeline to manipulate with
in: path
required: true
schema:
type: string
format: ObjectId
/api/v2/deals/pipelines/{pipeline_id}/groups/{group_id}:
put:
description: Update pipeline deal group
operationId: put-deals-pipeline-fields-group
summary: Update deals pipeline fields group
parameters:
- in: path
name: pipeline_id
description: id of group to manipulate with
schema:
type: string
required: true
- in: path
name: group_id
description: id of group to update
schema:
type: string
required: true
tags:
- Deals Pipelines Fields
requestBody:
content:
application/json:
schema:
properties:
group_name:
type: string
logo_id:
type: string
insert_after:
description: move group after another group or field with specified id
type: string
responses:
'200':
description: Group updated
content:
application/json:
schema:
$ref: '#/components/schemas/Deals.DealFieldsMetadata'
'403':
description: User has no permission to update pipeline
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'409':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
delete:
description: Delete pipeline deal group
operationId: delete-deals-pipeline-fields-group
summary: Delete deals pipeline fields group
tags:
- Deals Pipelines Fields
responses:
'200':
description: Group deleted
'403':
description: User has no permission to update pipeline
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
parameters:
- in: path
name: pipeline_id
description: id of pipeline to delete group from
schema:
type: string
required: true
- in: path
name: group_id
description: id of group to delete
schema:
type: string
required: true
/api/v1/messages/drafts:
get:
description: List draft messages
operationId: list-messages-drafts
summary: List messages drafts
tags:
- Messages
parameters:
- description: coma-separated recipient to filter drafts for
in: query
name: recipients
required: false
schema:
type: string
- description: filter scheduled messages by a sender account
in: query
name: sender
required: false
schema:
type: string
- description: pagination parameter (starts from zero)
in: query
name: page
required: false
schema:
type: number
- description: pagination parameter
in: query
name: per_page
required: false
schema:
type: number
responses:
'200':
content:
application/json:
schema:
properties:
drafts:
type: array
items:
$ref: '#/components/schemas/Messages.DraftMessageWithParticipants'
meta:
type: object
properties:
total:
type: number
pages:
type: number
page:
type: number
per_page:
type: number
type: object
description: response with draft messages and a pagination meta
post:
description: Create a draft message
operationId: post-message-draft
summary: Create a draft message
tags:
- Messages
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Messages.IncompleteMessageSpecification'
responses:
'200':
description: updated draft message
content:
application/json:
schema:
$ref: '#/components/schemas/Messages.DraftMessageWithParticipants'