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 diagram source (Mermaid) Projects diagram source (Mermaid)
%% 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
%% 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