Pipeline CRM API reference

Pipeline CRM API data model

How the objects returned by the API reference each other, generated from the OpenAPI specification. Each box is a resource's response object with a selection of its fields; arrows are drawn from the *_id fields that point at another object.

Solid arrow: <field>_id reference ("*" marks an _ids list). Dashed arrow: an embedded convenience copy of the other object. Boxes marked core object are documented in the core diagram above.

Core objects

%% Pipeline CRM API data model: core objects
%% Generated by script/openapi_data_model.js from public/openapi.json — do not edit by hand.
%% Solid arrows: <field>_id references. Dashed arrows: embedded convenience copies.
classDiagram
  direction LR
  class Deal {
    integer id
    string name
    string summary
    integer status
    string value
    integer expected_close_date_event_id
    integer next_task_id
    integer user_id
    integer primary_contact_id
    integer company_id
    integer deal_stage_id
    integer deal_loss_reason_id
  }
  class Person {
    integer id
    string full_name
    string first_name
    string last_name
    string email
    integer company_id
    integer user_id
    integer lead_status_id
    integer lead_source_id
    integer created_by_user_id
    array project_shared_user_ids
    array possible_notify_user_ids
  }
  class Company {
    integer id
    string name
    string email
    integer next_task_id
    integer owner_id
    array possible_notify_user_ids
    array shared_user_ids
    array tag_ids
    string image_mobile_url
    string next_task_name
    string next_task_due
    boolean next_task_all_day
  }
  class Customer {
    integer id
    integer company_id
    string created_at
    string updated_at
    integer days_in_health
    string health_score
    string health_score_description
  }
  class Activity {
    integer id
    string title
    integer primary_association_id
    integer user_id
    integer deal_id
    integer company_id
    integer person_id
    integer note_category_id
    array possible_notify_user_ids
    array notify_user_ids
    integer account_id
    boolean is_sent_message
  }
  class Comment {
    integer id
    integer user_id
    integer edited_by_person_id
    string created_at
    string updated_at
    string comment
  }
  class CalendarEntry {
    integer id
    string name
    integer owner_id
    integer category_id
    integer association_id
    integer company_id
    integer calendar_entry_priority_id
    integer calendar_entry_status_id
    string completed_at
    integer base_entry_id
    string google_calendar_id
    boolean part_of_recurring_series
  }
  class Document {
    integer id
    string title
    integer owner_id
    integer person_id
    integer deal_id
    integer company_id
    integer calendar_entry_id
    integer primary_association_id
    array document_tag_ids
    string created_at
    integer size_in_k
    string etag
  }
  class User {
    integer id
    string name
    string full_name
    string first_name
    string last_name
    integer team_id
    integer account_id
    string api_key
    string last_seen_at
    string deleted_at
    string mfa_requested_at
    string data_reassigned_at
  }
  class Team {
    integer id
    string name
    integer account_id
    string created_at
    string updated_at
    integer parent_id
  }
  class DealStage {
    integer id
    string name
    integer deal_pipeline_id
    string created_at
    string updated_at
    integer percent
  }
  class DealStatus {
    integer id
    string name
    boolean editable
    string created_at
    string updated_at
    string hex_color
    integer position
  }
  class DealLossReason {
    integer id
    string name
    string created_at
    string updated_at
    integer position
  }
  class LeadSource {
    integer id
    string name
    string created_at
    string updated_at
    integer cost_per_lead_in_cents
    integer flat_fee_in_cents
  }
  class LeadStatus {
    integer id
    string name
    string created_at
    string updated_at
    string hex_color
  }
  class CustomFieldGroup {
    integer id
    string name
    string created_at
    string updated_at
    string type
  }
  class CustomFieldLabel {
    integer id
    string name
    string created_at
    string updated_at
    string field_type
    string record_type
    boolean is_required
  }
  class CustomFieldLabelDropdownEntry {
    integer id
    string name
    integer custom_field_label_id
    string created_at
    string updated_at
    integer position
  }
  class EventCategory {
    integer id
    string name
    string created_at
    string updated_at
  }
  class NoteCategory {
    integer id
    string name
    string created_at
    string updated_at
  }
  class CalendarEntryPriority {
    integer id
    string name
    string created_at
    string updated_at
    integer position
    string hex_color
  }
  class CalendarEntryStatus {
    integer id
    string name
    boolean in_use
    string created_at
    string updated_at
    integer position
    string hex_color
    string status_type
  }
  class DealTag {
    integer id
    string name
    string created_at
    string updated_at
  }
  class CompanyTag {
    integer id
    string name
    string created_at
    string updated_at
  }
  class DocumentTag {
    integer id
    string name
    string created_at
    string updated_at
  }
  class PredefinedContactsTag {
    integer id
    string name
    string created_at
    string updated_at
    string hex_color
  }
  class DealPipeline {
    <<not exposed via the API>>
  }
  Deal --> CalendarEntry : expected_close_date_event_id
  Deal --> User : "*" possible_notify_user_ids
  Deal --> CalendarEntry : next_task_id
  Deal --> User : user_id
  Deal --> Person : primary_contact_id
  Deal --> Person : "*" person_ids
  Deal --> User : "*" shared_user_ids
  Deal --> Company : company_id
  Deal --> DealStage : deal_stage_id
  Deal --> DealLossReason : deal_loss_reason_id
  Deal --> DealTag : "*" tag_ids
  Person --> User : "*" project_shared_user_ids
  Person --> User : "*" possible_notify_user_ids
  Person --> Company : company_id
  Person --> User : user_id
  Person --> LeadStatus : lead_status_id
  Person --> LeadSource : lead_source_id
  Person --> PredefinedContactsTag : "*" predefined_contacts_tag_ids
  Person --> User : "*" shared_user_ids
  Person --> Deal : "*" deal_ids
  Person --> User : created_by_user_id
  Company --> User : "*" possible_notify_user_ids
  Company --> CalendarEntry : next_task_id
  Company --> User : owner_id
  Company --> User : "*" shared_user_ids
  Company --> CompanyTag : "*" tag_ids
  Customer --> Company : company_id
  Customer ..> User : owner
  Activity --> User : "*" possible_notify_user_ids
  Activity --> Deal : primary_association_id (primary_association_type=Deal)
  Activity --> Person : primary_association_id (primary_association_type=Person)
  Activity --> Company : primary_association_id (primary_association_type=Company)
  Activity --> User : user_id
  Activity --> Deal : deal_id
  Activity --> Company : company_id
  Activity --> Person : person_id
  Activity --> NoteCategory : note_category_id
  Activity --> User : "*" notify_user_ids
  Comment --> User : user_id
  Comment --> Person : edited_by_person_id
  CalendarEntry --> User : owner_id
  CalendarEntry --> EventCategory : category_id
  CalendarEntry --> Deal : association_id (association_type=Deal)
  CalendarEntry --> Company : association_id (association_type=Company)
  CalendarEntry --> Person : association_id (association_type=Person)
  CalendarEntry --> Company : company_id
  CalendarEntry --> CalendarEntryPriority : calendar_entry_priority_id
  CalendarEntry --> CalendarEntryStatus : calendar_entry_status_id
  Document --> DocumentTag : "*" document_tag_ids
  Document --> User : owner_id
  Document --> Person : person_id
  Document --> Deal : deal_id
  Document --> Company : company_id
  Document --> CalendarEntry : calendar_entry_id
  Document --> Deal : primary_association_id (primary_association_type=Deal)
  Document --> Person : primary_association_id (primary_association_type=Person)
  Document --> Company : primary_association_id (primary_association_type=Company)
  User --> Team : team_id
  DealStage --> DealPipeline : deal_pipeline_id
  CustomFieldLabelDropdownEntry --> CustomFieldLabel : custom_field_label_id

Projects

%% Pipeline CRM API data model: Projects
%% Generated by script/openapi_data_model.js from public/openapi.json — do not edit by hand.
%% Solid arrows: <field>_id references. Dashed arrows: embedded convenience copies.
classDiagram
  direction LR
  class Project {
    integer id
    string name
    string status
    integer created_by_user_id
    integer owner_id
    integer project_template_id
    integer source_deal_id
    array deal_ids
    array person_ids
    array company_ids
    array user_ids
    array team_ids
  }
  class ProjectMilestone {
    integer id
    string name
    integer project_id
    integer created_by_user_id
    integer project_milestone_status_id
    string project_name
    string created_at
    string updated_at
    string start_date
    string end_date
  }
  class ProjectMilestoneStatus {
    integer id
    string name
    boolean in_use
    string created_at
    string updated_at
    string hex_color
    integer position
    string status_type
  }
  class ProjectAssociation {
    integer id
    integer project_id
    integer associable_id
    string associable_type
    string created_at
  }
  class ProjectTemplate {
    integer id
    string name
    integer owner_id
    integer account_id
    boolean is_sample
    string created_at
    string updated_at
    string description
    integer duration
    boolean is_enabled
    boolean is_default
    boolean deal_owner_is_collaborator
  }
  class TodoTemplate {
    integer id
    string name
    integer account_id
    string created_at
    string updated_at
    string template_type
    boolean is_default
  }
  class TodoTemplateItem {
    integer id
    integer event_category_id
    integer calendar_entry_priority_id
    integer account_id
    string created_at
    string updated_at
    string description
    integer due_date
  }
  class Deal {
    <<core object>>
  }
  class Company {
    <<core object>>
  }
  class Person {
    <<core object>>
  }
  class User {
    <<core object>>
  }
  class Team {
    <<core object>>
  }
  class EventCategory {
    <<core object>>
  }
  class CalendarEntryPriority {
    <<core object>>
  }
  Project --> User : created_by_user_id
  Project --> Deal : "*" deal_ids
  Project --> Person : "*" person_ids
  Project --> Company : "*" company_ids
  Project --> User : owner_id
  Project --> User : "*" user_ids
  Project --> Team : "*" team_ids
  Project --> ProjectTemplate : project_template_id
  Project --> Deal : source_deal_id
  Project ..> ProjectMilestone : "*" milestones
  Project ..> ProjectMilestone : "*" project_milestones
  ProjectMilestone --> Project : project_id
  ProjectMilestone --> User : created_by_user_id
  ProjectMilestone --> ProjectMilestoneStatus : project_milestone_status_id
  ProjectAssociation --> Project : project_id
  ProjectAssociation --> Deal : associable_id (associable_type=Deal)
  ProjectAssociation --> Company : associable_id (associable_type=Company)
  ProjectAssociation --> Person : associable_id (associable_type=Person)
  ProjectTemplate --> User : owner_id
  ProjectTemplate ..> ProjectMilestone : "*" milestones
  TodoTemplate ..> TodoTemplateItem : "*" todo_template_items
  TodoTemplateItem --> EventCategory : event_category_id
  TodoTemplateItem --> CalendarEntryPriority : calendar_entry_priority_id