> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: 41fcdf23-d21e-43f5-8670-e6c3535bce86
---

# Ticket object definition

> Information about the Ticket object, including identifiers, feature support, and default properties.

export const objectMetadata = {
  contact: {
    objectId: "0-1",
    displayName: "contact",
    pluralName: "contacts",
    linkUrl: "/api-reference/latest/crm/objects/contacts/guide"
  },
  company: {
    objectId: "0-2",
    displayName: "company",
    pluralName: "companies",
    linkUrl: "/api-reference/latest/crm/objects/companies/guide"
  },
  campaign: {
    objectId: "0-35",
    displayName: "campaign",
    pluralName: "campaigns",
    linkUrl: "/api-reference/marketing-campaigns-public-api-v3/guide"
  },
  deal: {
    objectId: "0-3",
    displayName: "deal",
    pluralName: "deals",
    linkUrl: "/api-reference/latest/crm/objects/deals/guide"
  },
  goal_target: {
    objectId: "0-74",
    displayName: "goal target",
    pluralName: "goal targets",
    linkUrl: "/api-reference/latest/crm/objects/goal-targets/guide"
  },
  ticket: {
    objectId: "0-5",
    displayName: "ticket",
    pluralName: "tickets",
    linkUrl: "/api-reference/latest/crm/objects/tickets/guide"
  },
  lead: {
    objectId: "0-136",
    displayName: "lead",
    pluralName: "leads",
    linkUrl: "/api-reference/latest/crm/objects/leads/guide"
  },
  appointment: {
    objectId: "0-421",
    displayName: "appointment",
    pluralName: "appointments"
  },
  course: {
    objectId: "0-410",
    displayName: "course",
    pluralName: "courses"
  },
  listing: {
    objectId: "0-420",
    displayName: "listing",
    pluralName: "listings"
  },
  service: {
    objectId: "0-162",
    displayName: "service",
    pluralName: "services"
  },
  call: {
    objectId: "0-48",
    displayName: "call",
    pluralName: "calls",
    linkUrl: "/api-reference/latest/crm/activities/calls/guide"
  },
  email: {
    objectId: "0-49",
    displayName: "email",
    pluralName: "emails",
    linkUrl: "/api-reference/latest/crm/activities/emails/guide"
  },
  meeting: {
    objectId: "0-47",
    displayName: "meeting",
    pluralName: "meetings",
    linkUrl: "/api-reference/latest/crm/activities/meetings/guide"
  },
  note: {
    objectId: "0-46",
    displayName: "note",
    pluralName: "notes",
    linkUrl: "/api-reference/latest/crm/activities/notes/guide"
  },
  task: {
    objectId: "0-27",
    displayName: "task",
    pluralName: "tasks",
    linkUrl: "/api-reference/latest/crm/activities/tasks/guide"
  },
  communication: {
    objectId: "0-18",
    displayName: "communication",
    pluralName: "communications",
    linkUrl: "/api-reference/latest/crm/objects/communications/guide"
  },
  postal_mail: {
    objectId: "0-116",
    displayName: "postal mail",
    pluralName: "postal mail",
    linkUrl: "/api-reference/latest/crm/activities/postal-mail/guide"
  },
  cart: {
    objectId: "0-142",
    displayName: "cart",
    pluralName: "carts",
    linkUrl: "/api-reference/latest/crm/objects/carts/guide"
  },
  order: {
    objectId: "0-123",
    displayName: "order",
    pluralName: "orders",
    linkUrl: "/api-reference/latest/crm/objects/orders/guide"
  },
  invoice: {
    objectId: "0-53",
    displayName: "invoice",
    pluralName: "invoices",
    linkUrl: "/api-reference/latest/crm/objects/invoices/guide"
  },
  commerce_payment: {
    objectId: "0-101",
    displayName: "payment",
    pluralName: "payments",
    linkUrl: "/api-reference/latest/crm/objects/commerce-payments/guide"
  },
  payment_link: {
    objectId: "0-118",
    displayName: "payment link",
    pluralName: "payment links",
    linkUrl: "/api-reference/latest/crm/objects/commerce-payments/guide"
  },
  subscription: {
    objectId: "0-69",
    displayName: "subscription",
    pluralName: "subscriptions",
    linkUrl: "/api-reference/latest/crm/objects/commerce-subscriptions/guide"
  },
  feedback_submission: {
    objectId: "0-19",
    displayName: "feedback submission",
    pluralName: "feedback submissions",
    linkUrl: "/api-reference/latest/crm/objects/feedback-submissions/guide"
  },
  project: {
    objectId: "0-970",
    displayName: "project",
    pluralName: "projects",
    linkUrl: "/api-reference/latest/crm/objects/projects/guide"
  },
  quote: {
    objectId: "0-14",
    displayName: "quote",
    pluralName: "quotes",
    linkUrl: "/api-reference/latest/crm/objects/quotes/guide"
  },
  line_item: {
    objectId: "0-8",
    displayName: "line item",
    pluralName: "line items",
    linkUrl: "/api-reference/latest/crm/objects/line-items/guide"
  },
  discount: {
    objectId: "0-84",
    displayName: "discount",
    pluralName: "discounts",
    linkUrl: "/api-reference/latest/crm/objects/discounts/guide"
  },
  fee: {
    objectId: "0-85",
    displayName: "fee",
    pluralName: "fees",
    linkUrl: "/api-reference/latest/crm/objects/fees/guide"
  },
  tax: {
    objectId: "0-86",
    displayName: "tax",
    pluralName: "taxes",
    linkUrl: "/api-reference/latest/crm/objects/taxes/guide"
  },
  deal_split: {
    objectId: "0-72",
    displayName: "deal split",
    pluralName: "deal splits",
    linkUrl: "/api-reference/latest/crm/objects/deal-splits/guide"
  },
  conversation: {
    objectId: "0-11",
    displayName: "conversation",
    pluralName: "conversations",
    linkUrl: "/api-reference/latest/conversations/guide"
  },
  discount_code: {
    objectId: "0-110",
    displayName: "discount code",
    pluralName: "discount codes",
    linkUrl: "/api-reference/latest/crm/objects/discounts/guide"
  },
  quote_template: {
    objectId: "0-64",
    displayName: "quote template",
    pluralName: "quote templates",
    linkUrl: "/api-reference/latest/crm/objects/quotes/guide"
  },
  marketing_event: {
    objectId: "0-54",
    displayName: "marketing event",
    pluralName: "marketing events",
    linkUrl: "/api-reference/latest/marketing/marketing-events/guide"
  },
  product: {
    objectId: "0-7",
    displayName: "product",
    pluralName: "products",
    linkUrl: "/api-reference/latest/crm/objects/products/guide"
  },
  user: {
    objectId: "0-115",
    displayName: "user",
    pluralName: "users",
    linkUrl: "/api-reference/latest/crm/objects/users/guide"
  }
};

export const associationsData = {
  "associations": [{
    "id": "appointment_appointment",
    "fromObject": "appointment",
    "toObject": "appointment",
    "forwardId": 950,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 950,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_appointment",
    "fromObject": "call",
    "toObject": "appointment",
    "forwardId": 913,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 912,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_call",
    "fromObject": "call",
    "toObject": "call",
    "forwardId": 1032,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1032,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_cart",
    "fromObject": "call",
    "toObject": "cart",
    "forwardId": 775,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 774,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_course",
    "fromObject": "call",
    "toObject": "course",
    "forwardId": 867,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 866,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_lead",
    "fromObject": "call",
    "toObject": "lead",
    "forwardId": 597,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 596,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_listing",
    "fromObject": "call",
    "toObject": "listing",
    "forwardId": 891,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 890,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_marketing_event",
    "fromObject": "call",
    "toObject": "marketing_event",
    "forwardId": 1229,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1228,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_order",
    "fromObject": "call",
    "toObject": "order",
    "forwardId": 773,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 772,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_project",
    "fromObject": "call",
    "toObject": "project",
    "forwardId": 1258,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1257,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "call_service",
    "fromObject": "call",
    "toObject": "service",
    "forwardId": 841,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 840,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "campaign_call",
    "fromObject": "campaign",
    "toObject": "call",
    "forwardId": 954,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 955,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "campaign_email",
    "fromObject": "campaign",
    "toObject": "email",
    "forwardId": 958,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 959,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "campaign_goal_target",
    "fromObject": "campaign",
    "toObject": "goal_target",
    "forwardId": 808,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 809,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "campaign_marketing_event",
    "fromObject": "campaign",
    "toObject": "marketing_event",
    "forwardId": 491,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 492,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "campaign_meeting",
    "fromObject": "campaign",
    "toObject": "meeting",
    "forwardId": 956,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 957,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "campaign_payment_link",
    "fromObject": "campaign",
    "toObject": "payment_link",
    "forwardId": 1329,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1328,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "campaign_project",
    "fromObject": "campaign",
    "toObject": "project",
    "forwardId": 1350,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1351,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "commerce_payment_order",
    "fromObject": "commerce_payment",
    "toObject": "order",
    "forwardId": 524,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 523,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "commerce_payment_payment_link",
    "fromObject": "commerce_payment",
    "toObject": "payment_link",
    "forwardId": 476,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 475,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_appointment",
    "fromObject": "communication",
    "toObject": "appointment",
    "forwardId": 925,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 924,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_cart",
    "fromObject": "communication",
    "toObject": "cart",
    "forwardId": 787,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 786,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_course",
    "fromObject": "communication",
    "toObject": "course",
    "forwardId": 879,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 878,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_lead",
    "fromObject": "communication",
    "toObject": "lead",
    "forwardId": 603,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 602,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_listing",
    "fromObject": "communication",
    "toObject": "listing",
    "forwardId": 903,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 902,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_marketing_event",
    "fromObject": "communication",
    "toObject": "marketing_event",
    "forwardId": 1235,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1234,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_order",
    "fromObject": "communication",
    "toObject": "order",
    "forwardId": 785,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 784,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_project",
    "fromObject": "communication",
    "toObject": "project",
    "forwardId": 1282,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1281,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "communication_service",
    "fromObject": "communication",
    "toObject": "service",
    "forwardId": 847,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 846,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_appointment",
    "fromObject": "company",
    "toObject": "appointment",
    "forwardId": 909,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 908,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_call",
    "fromObject": "company",
    "toObject": "call",
    "forwardId": 181,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 182,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_cart",
    "fromObject": "company",
    "toObject": "cart",
    "forwardId": 937,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 936,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 761,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 760,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "company_commerce_payment",
    "fromObject": "company",
    "toObject": "commerce_payment",
    "forwardId": 390,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 389,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "company_communication",
    "fromObject": "company",
    "toObject": "communication",
    "forwardId": 88,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 87,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_company",
    "fromObject": "company",
    "toObject": "company",
    "forwardId": 450,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 450,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Child",
      "inverseLabel": "Parent",
      "forwardId": 13,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 14,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": false
    }]
  }, {
    "id": "company_course",
    "fromObject": "company",
    "toObject": "course",
    "forwardId": 939,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 938,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_deal",
    "fromObject": "company",
    "toObject": "deal",
    "forwardId": 342,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 341,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 6,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 5,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "company_email",
    "fromObject": "company",
    "toObject": "email",
    "forwardId": 185,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 186,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_feedback_submission",
    "fromObject": "company",
    "toObject": "feedback_submission",
    "forwardId": 929,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 928,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "company_invoice",
    "fromObject": "company",
    "toObject": "invoice",
    "forwardId": 180,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 179,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_lead",
    "fromObject": "company",
    "toObject": "lead",
    "forwardId": 611,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 610,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 581,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 580,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "company_listing",
    "fromObject": "company",
    "toObject": "listing",
    "forwardId": 885,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 884,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_marketing_event",
    "fromObject": "company",
    "toObject": "marketing_event",
    "forwardId": 1387,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1386,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_meeting",
    "fromObject": "company",
    "toObject": "meeting",
    "forwardId": 187,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 188,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_note",
    "fromObject": "company",
    "toObject": "note",
    "forwardId": 189,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 190,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_order",
    "fromObject": "company",
    "toObject": "order",
    "forwardId": 935,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 934,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 510,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 509,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }, {
      "label": "Billing",
      "forwardId": 2693,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 2692,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": false
    }]
  }, {
    "id": "company_payment_link",
    "fromObject": "company",
    "toObject": "payment_link",
    "forwardId": 472,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 471,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_postal_mail",
    "fromObject": "company",
    "toObject": "postal_mail",
    "forwardId": 460,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 459,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_project",
    "fromObject": "company",
    "toObject": "project",
    "forwardId": 1237,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1236,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 1300,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1299,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "company_quote",
    "fromObject": "company",
    "toObject": "quote",
    "forwardId": 72,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 71,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": [{
      "label": "Billing",
      "forwardId": 1335,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1334,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": false
    }]
  }, {
    "id": "company_service",
    "fromObject": "company",
    "toObject": "service",
    "forwardId": 793,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 792,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_subscription",
    "fromObject": "company",
    "toObject": "subscription",
    "forwardId": 298,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 297,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "company_task",
    "fromObject": "company",
    "toObject": "task",
    "forwardId": 191,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 192,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "company_ticket",
    "fromObject": "company",
    "toObject": "ticket",
    "forwardId": 340,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 339,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 25,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 26,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "contact_appointment",
    "fromObject": "contact",
    "toObject": "appointment",
    "forwardId": 907,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 906,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_call",
    "fromObject": "contact",
    "toObject": "call",
    "forwardId": 193,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 194,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_campaign",
    "fromObject": "contact",
    "toObject": "campaign",
    "forwardId": 1184,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1183,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_cart",
    "fromObject": "contact",
    "toObject": "cart",
    "forwardId": 587,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 586,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_commerce_payment",
    "fromObject": "contact",
    "toObject": "commerce_payment",
    "forwardId": 388,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 387,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "contact_communication",
    "fromObject": "contact",
    "toObject": "communication",
    "forwardId": 82,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 81,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_company",
    "fromObject": "contact",
    "toObject": "company",
    "forwardId": 279,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 280,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 1,
      "forwardCardinality": "ONE_TO_ONE",
      "inverseId": 2,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": true
    }, {
      "label": "Billing",
      "forwardId": 931,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 930,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": false
    }]
  }, {
    "id": "contact_contact",
    "fromObject": "contact",
    "toObject": "contact",
    "forwardId": 449,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 449,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_conversation",
    "fromObject": "contact",
    "toObject": "conversation",
    "forwardId": 174,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 173,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_course",
    "fromObject": "contact",
    "toObject": "course",
    "forwardId": 861,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 860,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_deal",
    "fromObject": "contact",
    "toObject": "deal",
    "forwardId": 4,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 3,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_email",
    "fromObject": "contact",
    "toObject": "email",
    "forwardId": 197,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 198,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_feedback_submission",
    "fromObject": "contact",
    "toObject": "feedback_submission",
    "forwardId": 97,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 98,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "contact_invoice",
    "fromObject": "contact",
    "toObject": "invoice",
    "forwardId": 178,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 177,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_lead",
    "fromObject": "contact",
    "toObject": "lead",
    "forwardId": 609,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 608,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 579,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 578,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "contact_listing",
    "fromObject": "contact",
    "toObject": "listing",
    "forwardId": 883,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 882,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_marketing_event",
    "fromObject": "contact",
    "toObject": "marketing_event",
    "forwardId": 1375,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1374,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Attendee",
      "forwardId": 1381,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1380,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }, {
      "label": "Cancelled registrant",
      "forwardId": 1379,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1378,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }, {
      "label": "Registrant",
      "forwardId": 1377,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1376,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }]
  }, {
    "id": "contact_meeting",
    "fromObject": "contact",
    "toObject": "meeting",
    "forwardId": 199,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 200,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_note",
    "fromObject": "contact",
    "toObject": "note",
    "forwardId": 201,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 202,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_order",
    "fromObject": "contact",
    "toObject": "order",
    "forwardId": 508,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 507,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_payment_link",
    "fromObject": "contact",
    "toObject": "payment_link",
    "forwardId": 470,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 469,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_postal_mail",
    "fromObject": "contact",
    "toObject": "postal_mail",
    "forwardId": 454,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 453,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_project",
    "fromObject": "contact",
    "toObject": "project",
    "forwardId": 1243,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1242,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_quote",
    "fromObject": "contact",
    "toObject": "quote",
    "forwardId": 70,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 69,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Billing",
      "forwardId": 1227,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1226,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": false
    }, {
      "label": "Contact Signer",
      "forwardId": 703,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 702,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }]
  }, {
    "id": "contact_service",
    "fromObject": "contact",
    "toObject": "service",
    "forwardId": 799,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 798,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_subscription",
    "fromObject": "contact",
    "toObject": "subscription",
    "forwardId": 296,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 295,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "contact_task",
    "fromObject": "contact",
    "toObject": "task",
    "forwardId": 203,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 204,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "contact_ticket",
    "fromObject": "contact",
    "toObject": "ticket",
    "forwardId": 15,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 16,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "conversation_call",
    "fromObject": "conversation",
    "toObject": "call",
    "forwardId": 629,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 628,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "conversation_communication",
    "fromObject": "conversation",
    "toObject": "communication",
    "forwardId": 90,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 89,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "conversation_feedback_submission",
    "fromObject": "conversation",
    "toObject": "feedback_submission",
    "forwardId": 331,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 332,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "course_course",
    "fromObject": "course",
    "toObject": "course",
    "forwardId": 948,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 948,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_appointment",
    "fromObject": "deal",
    "toObject": "appointment",
    "forwardId": 945,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 944,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_call",
    "fromObject": "deal",
    "toObject": "call",
    "forwardId": 205,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 206,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_campaign",
    "fromObject": "deal",
    "toObject": "campaign",
    "forwardId": 1116,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1115,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_cart",
    "fromObject": "deal",
    "toObject": "cart",
    "forwardId": 1346,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1347,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_commerce_payment",
    "fromObject": "deal",
    "toObject": "commerce_payment",
    "forwardId": 392,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 391,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_communication",
    "fromObject": "deal",
    "toObject": "communication",
    "forwardId": 86,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 85,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_course",
    "fromObject": "deal",
    "toObject": "course",
    "forwardId": 863,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 862,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_deal",
    "fromObject": "deal",
    "toObject": "deal",
    "forwardId": 451,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 451,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_deal_split",
    "fromObject": "deal",
    "toObject": "deal_split",
    "forwardId": 313,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 314,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "deal_discount",
    "fromObject": "deal",
    "toObject": "discount",
    "forwardId": 370,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 369,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "deal_email",
    "fromObject": "deal",
    "toObject": "email",
    "forwardId": 209,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 210,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_feedback_submission",
    "fromObject": "deal",
    "toObject": "feedback_submission",
    "forwardId": 985,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 984,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "deal_goal_target",
    "fromObject": "deal",
    "toObject": "goal_target",
    "forwardId": 1357,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1356,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_invoice",
    "fromObject": "deal",
    "toObject": "invoice",
    "forwardId": 176,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 175,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_lead",
    "fromObject": "deal",
    "toObject": "lead",
    "forwardId": 1038,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1037,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 583,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 582,
      "inverseCardinality": "ONE_TO_ONE",
      "isPrimary": true
    }]
  }, {
    "id": "deal_line_item",
    "fromObject": "deal",
    "toObject": "line_item",
    "forwardId": 19,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 20,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "deal_listing",
    "fromObject": "deal",
    "toObject": "listing",
    "forwardId": 887,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 886,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_marketing_event",
    "fromObject": "deal",
    "toObject": "marketing_event",
    "forwardId": 1389,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1388,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_meeting",
    "fromObject": "deal",
    "toObject": "meeting",
    "forwardId": 211,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 212,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_note",
    "fromObject": "deal",
    "toObject": "note",
    "forwardId": 213,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 214,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_order",
    "fromObject": "deal",
    "toObject": "order",
    "forwardId": 511,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 512,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_payment_link",
    "fromObject": "deal",
    "toObject": "payment_link",
    "forwardId": 474,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 473,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_postal_mail",
    "fromObject": "deal",
    "toObject": "postal_mail",
    "forwardId": 458,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 457,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_product",
    "fromObject": "deal",
    "toObject": "product",
    "forwardId": 630,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 631,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_project",
    "fromObject": "deal",
    "toObject": "project",
    "forwardId": 1239,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1238,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_quote",
    "fromObject": "deal",
    "toObject": "quote",
    "forwardId": 63,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 64,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Primary",
      "forwardId": 1392,
      "forwardCardinality": "ONE_TO_ONE",
      "inverseId": 1393,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": true
    }]
  }, {
    "id": "deal_service",
    "fromObject": "deal",
    "toObject": "service",
    "forwardId": 795,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 794,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_subscription",
    "fromObject": "deal",
    "toObject": "subscription",
    "forwardId": 300,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 299,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_task",
    "fromObject": "deal",
    "toObject": "task",
    "forwardId": 215,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 216,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "deal_ticket",
    "fromObject": "deal",
    "toObject": "ticket",
    "forwardId": 27,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 28,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "discount_cart",
    "fromObject": "discount",
    "toObject": "cart",
    "forwardId": 589,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 588,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "discount_code_order",
    "fromObject": "discount_code",
    "toObject": "order",
    "forwardId": 522,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 521,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "discount_commerce_payment",
    "fromObject": "discount",
    "toObject": "commerce_payment",
    "forwardId": 427,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 428,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "discount_discount_code",
    "fromObject": "discount",
    "toObject": "discount_code",
    "forwardId": 424,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 423,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "discount_order",
    "fromObject": "discount",
    "toObject": "order",
    "forwardId": 520,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 519,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "discount_payment_link",
    "fromObject": "discount",
    "toObject": "payment_link",
    "forwardId": 683,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 682,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_appointment",
    "fromObject": "email",
    "toObject": "appointment",
    "forwardId": 917,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 916,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_cart",
    "fromObject": "email",
    "toObject": "cart",
    "forwardId": 779,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 778,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_course",
    "fromObject": "email",
    "toObject": "course",
    "forwardId": 871,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 870,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_lead",
    "fromObject": "email",
    "toObject": "lead",
    "forwardId": 599,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 598,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_listing",
    "fromObject": "email",
    "toObject": "listing",
    "forwardId": 895,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 894,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_marketing_event",
    "fromObject": "email",
    "toObject": "marketing_event",
    "forwardId": 498,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 497,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_order",
    "fromObject": "email",
    "toObject": "order",
    "forwardId": 777,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 776,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_project",
    "fromObject": "email",
    "toObject": "project",
    "forwardId": 1260,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1259,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "email_service",
    "fromObject": "email",
    "toObject": "service",
    "forwardId": 843,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 842,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "fee_commerce_payment",
    "fromObject": "fee",
    "toObject": "commerce_payment",
    "forwardId": 1327,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1326,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "fee_payment_link",
    "fromObject": "fee",
    "toObject": "payment_link",
    "forwardId": 687,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 686,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_call",
    "fromObject": "feedback_submission",
    "toObject": "call",
    "forwardId": 1155,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1156,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_cart",
    "fromObject": "feedback_submission",
    "toObject": "cart",
    "forwardId": 1157,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1158,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_commerce_payment",
    "fromObject": "feedback_submission",
    "toObject": "commerce_payment",
    "forwardId": 1169,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1170,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_invoice",
    "fromObject": "feedback_submission",
    "toObject": "invoice",
    "forwardId": 1159,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1160,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_lead",
    "fromObject": "feedback_submission",
    "toObject": "lead",
    "forwardId": 1161,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1162,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_marketing_event",
    "fromObject": "feedback_submission",
    "toObject": "marketing_event",
    "forwardId": 1163,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1164,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_order",
    "fromObject": "feedback_submission",
    "toObject": "order",
    "forwardId": 1167,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1168,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "feedback_submission_subscription",
    "fromObject": "feedback_submission",
    "toObject": "subscription",
    "forwardId": 1173,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1174,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "invoice_commerce_payment",
    "fromObject": "invoice",
    "toObject": "commerce_payment",
    "forwardId": 541,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 542,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "invoice_discount",
    "fromObject": "invoice",
    "toObject": "discount",
    "forwardId": 411,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 412,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "invoice_fee",
    "fromObject": "invoice",
    "toObject": "fee",
    "forwardId": 413,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 414,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "invoice_order",
    "fromObject": "invoice",
    "toObject": "order",
    "forwardId": 517,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 518,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "invoice_payment_link",
    "fromObject": "invoice",
    "toObject": "payment_link",
    "forwardId": 815,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 814,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "invoice_subscription",
    "fromObject": "invoice",
    "toObject": "subscription",
    "forwardId": 622,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 623,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "invoice_tax",
    "fromObject": "invoice",
    "toObject": "tax",
    "forwardId": 415,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 416,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "line_item_cart",
    "fromObject": "line_item",
    "toObject": "cart",
    "forwardId": 591,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 590,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_commerce_payment",
    "fromObject": "line_item",
    "toObject": "commerce_payment",
    "forwardId": 396,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 395,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_discount",
    "fromObject": "line_item",
    "toObject": "discount",
    "forwardId": 368,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 367,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "line_item_invoice",
    "fromObject": "line_item",
    "toObject": "invoice",
    "forwardId": 410,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 409,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_line_item",
    "fromObject": "line_item",
    "toObject": "line_item",
    "forwardId": 2532,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 2532,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Parent",
      "inverseLabel": "Child",
      "forwardId": 2541,
      "forwardCardinality": "ONE_TO_ONE",
      "inverseId": 2542,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }]
  }, {
    "id": "line_item_order",
    "fromObject": "line_item",
    "toObject": "order",
    "forwardId": 514,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 513,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_payment_link",
    "fromObject": "line_item",
    "toObject": "payment_link",
    "forwardId": 759,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 758,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_quote",
    "fromObject": "line_item",
    "toObject": "quote",
    "forwardId": 68,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 67,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_quote_template",
    "fromObject": "line_item",
    "toObject": "quote_template",
    "forwardId": 1268,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 1267,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "line_item_subscription",
    "fromObject": "line_item",
    "toObject": "subscription",
    "forwardId": 302,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 301,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Upcoming",
      "forwardId": 565,
      "forwardCardinality": "ONE_TO_ONE",
      "inverseId": 564,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }]
  }, {
    "id": "listing_listing",
    "fromObject": "listing",
    "toObject": "listing",
    "forwardId": 949,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 949,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "marketing_event_lead",
    "fromObject": "marketing_event",
    "toObject": "lead",
    "forwardId": 1390,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1391,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "marketing_event_project",
    "fromObject": "marketing_event",
    "toObject": "project",
    "forwardId": 1251,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1250,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_appointment",
    "fromObject": "meeting",
    "toObject": "appointment",
    "forwardId": 919,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 918,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_call",
    "fromObject": "meeting",
    "toObject": "call",
    "forwardId": 400,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 399,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_cart",
    "fromObject": "meeting",
    "toObject": "cart",
    "forwardId": 771,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 770,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_course",
    "fromObject": "meeting",
    "toObject": "course",
    "forwardId": 873,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 872,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_email",
    "fromObject": "meeting",
    "toObject": "email",
    "forwardId": 1128,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1127,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_lead",
    "fromObject": "meeting",
    "toObject": "lead",
    "forwardId": 601,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 600,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_listing",
    "fromObject": "meeting",
    "toObject": "listing",
    "forwardId": 897,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 896,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_marketing_event",
    "fromObject": "meeting",
    "toObject": "marketing_event",
    "forwardId": 500,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 499,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_order",
    "fromObject": "meeting",
    "toObject": "order",
    "forwardId": 769,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 768,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_project",
    "fromObject": "meeting",
    "toObject": "project",
    "forwardId": 1256,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1255,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "meeting_service",
    "fromObject": "meeting",
    "toObject": "service",
    "forwardId": 839,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 838,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_appointment",
    "fromObject": "note",
    "toObject": "appointment",
    "forwardId": 921,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 920,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_cart",
    "fromObject": "note",
    "toObject": "cart",
    "forwardId": 767,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 766,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_course",
    "fromObject": "note",
    "toObject": "course",
    "forwardId": 875,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 874,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_lead",
    "fromObject": "note",
    "toObject": "lead",
    "forwardId": 855,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 854,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_listing",
    "fromObject": "note",
    "toObject": "listing",
    "forwardId": 899,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 898,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_marketing_event",
    "fromObject": "note",
    "toObject": "marketing_event",
    "forwardId": 260,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 259,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_order",
    "fromObject": "note",
    "toObject": "order",
    "forwardId": 765,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 764,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_project",
    "fromObject": "note",
    "toObject": "project",
    "forwardId": 1249,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1248,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "note_service",
    "fromObject": "note",
    "toObject": "service",
    "forwardId": 837,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 836,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "order_cart",
    "fromObject": "order",
    "toObject": "cart",
    "forwardId": 593,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 592,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "postal_mail_appointment",
    "fromObject": "postal_mail",
    "toObject": "appointment",
    "forwardId": 927,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 926,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "postal_mail_cart",
    "fromObject": "postal_mail",
    "toObject": "cart",
    "forwardId": 790,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 791,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "postal_mail_course",
    "fromObject": "postal_mail",
    "toObject": "course",
    "forwardId": 881,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 880,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "postal_mail_listing",
    "fromObject": "postal_mail",
    "toObject": "listing",
    "forwardId": 905,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 904,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "postal_mail_order",
    "fromObject": "postal_mail",
    "toObject": "order",
    "forwardId": 788,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 789,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "postal_mail_project",
    "fromObject": "postal_mail",
    "toObject": "project",
    "forwardId": 1264,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1263,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "postal_mail_service",
    "fromObject": "postal_mail",
    "toObject": "service",
    "forwardId": 849,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 848,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "product_product",
    "fromObject": "product",
    "toObject": "product",
    "forwardId": 1211,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1211,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": [{
      "label": "Product",
      "inverseLabel": "Product Bundle",
      "forwardId": 1209,
      "forwardCardinality": "ONE_TO_MANY",
      "inverseId": 1210,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }, {
      "label": "Product",
      "inverseLabel": "Product Variant",
      "forwardId": 1342,
      "forwardCardinality": "ONE_TO_ONE",
      "inverseId": 1343,
      "inverseCardinality": "ONE_TO_MANY",
      "isPrimary": false
    }]
  }, {
    "id": "project_project",
    "fromObject": "project",
    "toObject": "project",
    "forwardId": 1254,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1254,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "quote_cart",
    "fromObject": "quote",
    "toObject": "cart",
    "forwardId": 733,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 732,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "quote_commerce_payment",
    "fromObject": "quote",
    "toObject": "commerce_payment",
    "forwardId": 398,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 397,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_discount",
    "fromObject": "quote",
    "toObject": "discount",
    "forwardId": 362,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 361,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_fee",
    "fromObject": "quote",
    "toObject": "fee",
    "forwardId": 364,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 363,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_feedback_submission",
    "fromObject": "quote",
    "toObject": "feedback_submission",
    "forwardId": 1172,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1171,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_invoice",
    "fromObject": "quote",
    "toObject": "invoice",
    "forwardId": 408,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 407,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_order",
    "fromObject": "quote",
    "toObject": "order",
    "forwardId": 731,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 730,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "quote_quote_template",
    "fromObject": "quote",
    "toObject": "quote_template",
    "forwardId": 286,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 285,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "quote_subscription",
    "fromObject": "quote",
    "toObject": "subscription",
    "forwardId": 304,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 303,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_task",
    "fromObject": "quote",
    "toObject": "task",
    "forwardId": 217,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 218,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "quote_tax",
    "fromObject": "quote",
    "toObject": "tax",
    "forwardId": 366,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 365,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "quote_template_user",
    "fromObject": "quote_template",
    "toObject": "user",
    "forwardId": 1271,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1272,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "quote_user",
    "fromObject": "quote",
    "toObject": "user",
    "forwardId": 704,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 705,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "service_project",
    "fromObject": "service",
    "toObject": "project",
    "forwardId": 1245,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1244,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "service_service",
    "fromObject": "service",
    "toObject": "service",
    "forwardId": 951,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 951,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "subscription_commerce_payment",
    "fromObject": "subscription",
    "toObject": "commerce_payment",
    "forwardId": 394,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 393,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "subscription_order",
    "fromObject": "subscription",
    "toObject": "order",
    "forwardId": 515,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 516,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "subscription_payment_link",
    "fromObject": "subscription",
    "toObject": "payment_link",
    "forwardId": 478,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 477,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_appointment",
    "fromObject": "task",
    "toObject": "appointment",
    "forwardId": 923,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 922,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_campaign",
    "fromObject": "task",
    "toObject": "campaign",
    "forwardId": 1266,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1265,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_cart",
    "fromObject": "task",
    "toObject": "cart",
    "forwardId": 729,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 728,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_course",
    "fromObject": "task",
    "toObject": "course",
    "forwardId": 877,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 876,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_lead",
    "fromObject": "task",
    "toObject": "lead",
    "forwardId": 647,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 646,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_listing",
    "fromObject": "task",
    "toObject": "listing",
    "forwardId": 901,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 900,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_marketing_event",
    "fromObject": "task",
    "toObject": "marketing_event",
    "forwardId": 262,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 261,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_meeting",
    "fromObject": "task",
    "toObject": "meeting",
    "forwardId": 1093,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1094,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_order",
    "fromObject": "task",
    "toObject": "order",
    "forwardId": 727,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 726,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_project",
    "fromObject": "task",
    "toObject": "project",
    "forwardId": 1247,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1246,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "task_service",
    "fromObject": "task",
    "toObject": "service",
    "forwardId": 853,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 852,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "tax_payment_link",
    "fromObject": "tax",
    "toObject": "payment_link",
    "forwardId": 685,
    "forwardCardinality": "ONE_TO_ONE",
    "inverseId": 684,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_appointment",
    "fromObject": "ticket",
    "toObject": "appointment",
    "forwardId": 947,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 946,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_call",
    "fromObject": "ticket",
    "toObject": "call",
    "forwardId": 219,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 220,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_campaign",
    "fromObject": "ticket",
    "toObject": "campaign",
    "forwardId": 1084,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1083,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_cart",
    "fromObject": "ticket",
    "toObject": "cart",
    "forwardId": 595,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 594,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_commerce_payment",
    "fromObject": "ticket",
    "toObject": "commerce_payment",
    "forwardId": 1355,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1354,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_communication",
    "fromObject": "ticket",
    "toObject": "communication",
    "forwardId": 84,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 83,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_conversation",
    "fromObject": "ticket",
    "toObject": "conversation",
    "forwardId": 278,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 277,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "ticket_course",
    "fromObject": "ticket",
    "toObject": "course",
    "forwardId": 941,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 940,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_email",
    "fromObject": "ticket",
    "toObject": "email",
    "forwardId": 223,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 224,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_feedback_submission",
    "fromObject": "ticket",
    "toObject": "feedback_submission",
    "forwardId": 99,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 100,
    "inverseCardinality": "ONE_TO_ONE",
    "labeledTypes": []
  }, {
    "id": "ticket_invoice",
    "fromObject": "ticket",
    "toObject": "invoice",
    "forwardId": 987,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 986,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_listing",
    "fromObject": "ticket",
    "toObject": "listing",
    "forwardId": 943,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 942,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_meeting",
    "fromObject": "ticket",
    "toObject": "meeting",
    "forwardId": 225,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 226,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_note",
    "fromObject": "ticket",
    "toObject": "note",
    "forwardId": 227,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 228,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_order",
    "fromObject": "ticket",
    "toObject": "order",
    "forwardId": 526,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 525,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_postal_mail",
    "fromObject": "ticket",
    "toObject": "postal_mail",
    "forwardId": 456,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 455,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_project",
    "fromObject": "ticket",
    "toObject": "project",
    "forwardId": 1241,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1240,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_service",
    "fromObject": "ticket",
    "toObject": "service",
    "forwardId": 797,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 796,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_subscription",
    "fromObject": "ticket",
    "toObject": "subscription",
    "forwardId": 1122,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 1121,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_task",
    "fromObject": "ticket",
    "toObject": "task",
    "forwardId": 229,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 230,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }, {
    "id": "ticket_ticket",
    "fromObject": "ticket",
    "toObject": "ticket",
    "forwardId": 452,
    "forwardCardinality": "ONE_TO_MANY",
    "inverseId": 452,
    "inverseCardinality": "ONE_TO_MANY",
    "labeledTypes": []
  }]
};

export const AssociationsTable = ({data, objectMetadata, objectType = "contact", showPrimary = true, symbols = true}) => {
  const InfoIcon = () => <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" focusable="false" data-icon-name="InfoCircle" className="info-icon"><path d="M15.86 31.86c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16m0-29.72C8.3 2.14 2.15 8.29 2.15 15.85S8.3 29.56 15.86 29.56s13.71-6.15 13.71-13.71S23.42 2.14 15.86 2.14"></path><path d="M15.86 25c-.63 0-1.14-.51-1.14-1.14V13.57a1.14 1.14 0 1 1 2.28 0v10.29c0 .63-.51 1.14-1.14 1.14"></path><circle cx="15.86" cy="8.43" r=".57"></circle><path d="M15.86 10.14a1.71 1.71 0 1 1-.002-3.418 1.71 1.71 0 0 1 .002 3.418m0-2.28a.57.57 0 1 0 0 1.14.57.57 0 0 0 0-1.14M15.86 14.71h-3.43a1.14 1.14 0 1 1 0-2.28h3.43a1.14 1.14 0 1 1 0 2.28M20.43 25h-9.14a1.14 1.14 0 1 1 0-2.28h9.14a1.14 1.14 0 1 1 0 2.28"></path></svg>;
  const OneToManyIcon = () => <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" focusable="false" data-icon-name="ObjectAssociations" className="cardinality-icon" style={{
    display: 'inline-block',
    verticalAlign: 'middle'
  }}>
        <path d="M27.29 31.86c-.29 0-.58-.11-.81-.33a1.14 1.14 0 0 1 0-1.62l2.62-2.62-2.62-2.62a1.14 1.14 0 0 1 0-1.62 1.15 1.15 0 0 1 1.62 0l3.43 3.43c.45.45.45 1.17 0 1.62l-3.43 3.43c-.22.22-.52.33-.81.33"></path><path d="M30.71 28.43H12.43c-.63 0-1.14-.51-1.14-1.14V4.43c0-.63.51-1.14 1.14-1.14h18.29a1.14 1.14 0 1 1 0 2.28H13.57v20.57h17.14a1.14 1.14 0 1 1 0 2.28Z"></path><path d="M27.29 9c-.29 0-.58-.11-.81-.33a1.14 1.14 0 0 1 0-1.62l2.62-2.62-2.62-2.62a1.14 1.14 0 0 1 0-1.62 1.15 1.15 0 0 1 1.62 0l3.43 3.43c.45.45.45 1.17 0 1.62L28.1 8.67c-.22.22-.52.33-.81.33M30.71 17H1a1.14 1.14 0 1 1 0-2.28h29.71a1.14 1.14 0 1 1 0 2.28"></path><path d="M27.29 20.43c-.29 0-.58-.11-.81-.33a1.14 1.14 0 0 1 0-1.62l2.62-2.62-2.62-2.62a1.14 1.14 0 0 1 0-1.62 1.15 1.15 0 0 1 1.62 0l3.43 3.43c.45.45.45 1.17 0 1.62L28.1 20.1c-.22.22-.52.33-.81.33"></path>
      </svg>;
  const OneToOneIcon = () => <svg data-test-id="cardinality-icon-ONE_TO_ONE" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" focusable="false" data-icon-name="Next" className="cardinality-icon">
      <path d="M30.71 17H1C0.697654 17 0.40769 16.8799 0.193899 16.6661C-0.0198926 16.4523 -0.139999 16.1623 -0.139999 15.86C-0.139999 15.5576 -0.0198926 15.2677 0.193899 15.0539C0.40769 14.8401 0.697654 14.72 1 14.72H30.71C31.0123 14.72 31.3023 14.8401 31.5161 15.0539C31.7299 15.2677 31.85 15.5576 31.85 15.86C31.85 16.1623 31.7299 16.4523 31.5161 16.6661C31.3023 16.8799 31.0123 17 30.71 17Z" fill="#1F1F1F" />
      <path d="M27.29 20.43C27 20.43 26.71 20.32 26.48 20.1C26.373 19.994 26.288 19.8679 26.23 19.7289C26.172 19.5898 26.1422 19.4407 26.1422 19.29C26.1422 19.1394 26.172 18.9903 26.23 18.8512C26.288 18.7122 26.373 18.586 26.48 18.48L29.1 15.86L26.48 13.24C26.373 13.134 26.288 13.0079 26.23 12.8689C26.172 12.7298 26.1422 12.5807 26.1422 12.43C26.1422 12.2794 26.172 12.1303 26.23 11.9912C26.288 11.8522 26.373 11.726 26.48 11.62C26.6954 11.4063 26.9865 11.2864 27.29 11.2864C27.5934 11.2864 27.8846 11.4063 28.1 11.62L31.53 15.05C31.98 15.5 31.98 16.22 31.53 16.67L28.1 20.1C27.88 20.32 27.58 20.43 27.29 20.43Z" fill="#1F1F1F" />
      </svg>;
  const [associations] = useState((data && data.associations || []).filter(a => a.visible !== false));
  const linkableNames = useMemo(() => {
    if (!objectMetadata) return [];
    const names = [];
    Object.entries(objectMetadata).forEach(([key, meta]) => {
      if (meta.linkUrl) {
        names.push({
          name: meta.displayName,
          url: meta.linkUrl
        });
        if (meta.pluralName && meta.pluralName !== meta.displayName) {
          names.push({
            name: meta.pluralName,
            url: meta.linkUrl
          });
        }
      }
    });
    names.sort((a, b) => b.name.length - a.name.length);
    return names;
  }, [objectMetadata]);
  const linkableNamesRegex = useMemo(() => {
    if (!linkableNames.length) return null;
    const pattern = linkableNames.map(item => item.name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|');
    return new RegExp(`\\b(${pattern})\\b`, 'gi');
  }, [linkableNames]);
  const linkifyLabel = label => {
    if (!linkableNamesRegex) return label;
    const regex = new RegExp(linkableNamesRegex.source, linkableNamesRegex.flags);
    const parts = [];
    let lastIndex = 0;
    let match;
    while ((match = regex.exec(label)) !== null) {
      if (match.index > lastIndex) {
        parts.push({
          type: 'text',
          content: label.substring(lastIndex, match.index)
        });
      }
      const matchedText = match[0];
      const linkInfo = linkableNames.find(item => item.name.toLowerCase() === matchedText.toLowerCase());
      parts.push({
        type: 'link',
        content: matchedText,
        url: linkInfo?.url
      });
      lastIndex = match.index + matchedText.length;
    }
    if (lastIndex < label.length) {
      parts.push({
        type: 'text',
        content: label.substring(lastIndex)
      });
    }
    if (parts.length === 0) return label;
    return <>
        {parts.map((part, i) => part.type === 'link' ? <a key={i} href={part.url}>{part.content}</a> : part.content)}
      </>;
  };
  const normalizeObjectName = name => {
    const normalized = name.trim().toLowerCase();
    const nameMap = {};
    Object.entries(objectMetadata).forEach(([key, meta]) => {
      if (meta.pluralName) nameMap[meta.pluralName.toLowerCase()] = key;
      if (meta.objectId) nameMap[meta.objectId] = key;
      nameMap[meta.displayName.toLowerCase()] = key;
      if (meta.displayName.includes(' ')) nameMap[meta.displayName.replace(/ /g, '_')] = key;
      if (key.includes('_')) nameMap[key.replace(/_/g, ' ')] = key;
    });
    return nameMap[normalized] || normalized;
  };
  const getObjectTypeArray = () => {
    return objectType.split(',').map(s => normalizeObjectName(s));
  };
  const getFilteredAssociations = () => {
    const objectTypes = getObjectTypeArray();
    return associations.filter(assoc => {
      const fromObj = normalizeObjectName(assoc.fromObject);
      const toObj = normalizeObjectName(assoc.toObject);
      return objectTypes.includes(fromObj) || objectTypes.includes(toObj);
    });
  };
  const getCardinalityIcon = cardinality => {
    if (cardinality === 'ONE_TO_ONE') {
      return <OneToOneIcon />;
    }
    return <OneToManyIcon />;
  };
  const renderAssociationTypeCell = row => {
    const cardinalityLabel = row.cardinality === 'ONE_TO_ONE' ? 'one to one' : 'one to many';
    if (symbols && row.fromObj && row.toObj) {
      const fromLabel = row.isLabeled ? `${row.label} ${row.fromObj}` : row.fromObj;
      return <>
          <span style={{
        verticalAlign: 'middle'
      }}>{fromLabel}</span>
          {' '}
          <span className="associations-table-icon" role="img" aria-label={cardinalityLabel}>{getCardinalityIcon(row.cardinality)}</span>
          {' '}
          <span style={{
        verticalAlign: 'middle'
      }}>{row.toObj}</span>
        </>;
    }
    return <>
        <span style={{
      verticalAlign: 'middle'
    }}>{linkifyLabel(row.label)}</span>
        {' '}
        <span className="associations-table-icon" role="img" aria-label={cardinalityLabel}>{getCardinalityIcon(row.cardinality)}</span>
      </>;
  };
  const cap = s => s.charAt(0).toUpperCase() + s.slice(1);
  const TableHeader = ({title, tooltip}) => <th>
      <Tooltip tip={tooltip}>
        <span className="associations-table-th-label">{title}<InfoIcon /></span>
      </Tooltip>
    </th>;
  const ObjectCell = ({objectKey, rowSpan}) => {
    const meta = objectMetadata?.[objectKey];
    const label = cap(meta?.displayName || objectKey);
    const linkUrl = meta?.linkUrl;
    const objectId = meta?.objectId;
    return <td rowSpan={rowSpan} className="associations-table-object-cell">
        <div className="associations-table-object-name">
          {linkUrl ? <a href={linkUrl}>{label}</a> : label}
        </div>
        {objectId && <div className="associations-table-object-id">
            <code>{objectId}</code>
          </div>}
      </td>;
  };
  const TargetGroupRows = ({targetGroup, targetIndex}) => {
    return targetGroup.allRows.map((row, rowIndex) => <tr key={row.id} className={`${targetIndex % 2 === 0 ? 'even' : 'odd'} ${rowIndex === 0 ? 'group-first' : ''} ${rowIndex === targetGroup.allRows.length - 1 ? 'group-last' : ''}`}>
        {rowIndex === 0 && <ObjectCell objectKey={targetGroup.targetObject} rowSpan={targetGroup.allRows.length} />}
        <td className="associations-table-type-cell">
          {renderAssociationTypeCell(row)}
        </td>
        <td><code>{row.typeId}</code></td>
      </tr>);
  };
  const getAssociationsBySourceObject = () => {
    const objectTypes = getObjectTypeArray();
    const groupedBySource = {};
    objectTypes.forEach(objType => {
      groupedBySource[objType] = [];
    });
    getFilteredAssociations().forEach(assoc => {
      const fromObj = normalizeObjectName(assoc.fromObject);
      const toObj = normalizeObjectName(assoc.toObject);
      const isSelf = fromObj === toObj;
      const fromDisplay = cap(objectMetadata?.[fromObj]?.displayName || fromObj);
      const toDisplay = cap(objectMetadata?.[toObj]?.displayName || toObj);
      const buildRowsForPerspective = (srcObj, tgtObj) => {
        const isSrcFrom = srcObj === fromObj;
        const srcDisplay = cap(objectMetadata?.[srcObj]?.displayName || srcObj);
        const tgtDisplay = cap(objectMetadata?.[tgtObj]?.displayName || tgtObj);
        const rows = [];
        if (isSelf) {
          rows.push({
            id: `${assoc.id}_base`,
            typeId: assoc.forwardId,
            label: `${fromDisplay} to ${fromDisplay}`,
            fromObj: fromDisplay,
            toObj: fromDisplay,
            cardinality: assoc.forwardCardinality,
            targetObject: tgtObj
          });
        } else {
          const fwdId = isSrcFrom ? assoc.forwardId : assoc.inverseId;
          const fwdCardinality = isSrcFrom ? assoc.forwardCardinality : assoc.inverseCardinality;
          const invId = isSrcFrom ? assoc.inverseId : assoc.forwardId;
          const invCardinality = isSrcFrom ? assoc.inverseCardinality : assoc.forwardCardinality;
          rows.push({
            id: `${assoc.id}_base_fwd`,
            typeId: fwdId,
            label: `${srcDisplay} to ${tgtDisplay}`,
            fromObj: srcDisplay,
            toObj: tgtDisplay,
            cardinality: fwdCardinality,
            targetObject: tgtObj
          });
          rows.push({
            id: `${assoc.id}_base_inv`,
            typeId: invId,
            label: `${tgtDisplay} to ${srcDisplay}`,
            fromObj: tgtDisplay,
            toObj: srcDisplay,
            cardinality: invCardinality,
            targetObject: tgtObj
          });
        }
        if (showPrimary) {
          assoc.labeledTypes.forEach(lt => {
            const fwdLabel = lt.label;
            const invLabel = lt.inverseLabel || lt.label;
            if (isSelf) {
              rows.push({
                id: `${assoc.id}_lt_${lt.forwardId}_fwd`,
                typeId: lt.forwardId,
                label: fwdLabel,
                fromObj: fromDisplay,
                toObj: fromDisplay,
                cardinality: lt.forwardCardinality,
                targetObject: tgtObj,
                isPrimary: lt.isPrimary,
                isLabeled: true
              });
              rows.push({
                id: `${assoc.id}_lt_${lt.forwardId}_inv`,
                typeId: lt.inverseId,
                label: invLabel,
                fromObj: fromDisplay,
                toObj: fromDisplay,
                cardinality: lt.inverseCardinality,
                targetObject: tgtObj,
                isPrimary: lt.isPrimary,
                isLabeled: true
              });
            } else {
              const rowFwdLabel = isSrcFrom ? fwdLabel : invLabel;
              const rowFwdId = isSrcFrom ? lt.forwardId : lt.inverseId;
              const rowFwdCardinality = isSrcFrom ? lt.forwardCardinality : lt.inverseCardinality;
              const rowInvLabel = isSrcFrom ? invLabel : fwdLabel;
              const rowInvId = isSrcFrom ? lt.inverseId : lt.forwardId;
              const rowInvCardinality = isSrcFrom ? lt.inverseCardinality : lt.forwardCardinality;
              rows.push({
                id: `${assoc.id}_lt_${lt.forwardId}_fwd`,
                typeId: rowFwdId,
                label: rowFwdLabel,
                fromObj: isSrcFrom ? srcDisplay : tgtDisplay,
                toObj: isSrcFrom ? tgtDisplay : srcDisplay,
                cardinality: rowFwdCardinality,
                targetObject: tgtObj,
                isPrimary: lt.isPrimary,
                isLabeled: true
              });
              rows.push({
                id: `${assoc.id}_lt_${lt.forwardId}_inv`,
                typeId: rowInvId,
                label: rowInvLabel,
                fromObj: isSrcFrom ? tgtDisplay : srcDisplay,
                toObj: isSrcFrom ? srcDisplay : tgtDisplay,
                cardinality: rowInvCardinality,
                targetObject: tgtObj,
                isPrimary: lt.isPrimary,
                isLabeled: true
              });
            }
          });
        }
        return rows;
      };
      if (objectTypes.includes(fromObj)) {
        const rows = buildRowsForPerspective(fromObj, toObj);
        groupedBySource[fromObj].push({
          id: `${assoc.id}_from`,
          rows,
          targetObject: toObj
        });
      }
      if (objectTypes.includes(toObj) && !isSelf) {
        const rows = buildRowsForPerspective(toObj, fromObj);
        groupedBySource[toObj].push({
          id: `${assoc.id}_to`,
          rows,
          targetObject: fromObj
        });
      }
    });
    return Object.entries(groupedBySource).filter(([_, groups]) => groups.length > 0).map(([objType, groups]) => ({
      objectType: objType,
      groups
    }));
  };
  const mergeGroupsByTargetObject = sourceGroups => {
    return sourceGroups.map(sourceGroup => {
      const targetMap = {};
      sourceGroup.groups.forEach(group => {
        const targetObj = group.targetObject;
        if (!targetMap[targetObj]) {
          targetMap[targetObj] = {
            targetObject: targetObj,
            allRows: []
          };
        }
        targetMap[targetObj].allRows.push(...group.rows);
      });
      return {
        objectType: sourceGroup.objectType,
        targetGroups: Object.values(targetMap).sort((a, b) => {
          const aLabel = objectMetadata?.[a.targetObject]?.displayName || a.targetObject;
          const bLabel = objectMetadata?.[b.targetObject]?.displayName || b.targetObject;
          return aLabel.localeCompare(bLabel, 'en', {
            sensitivity: 'base'
          });
        })
      };
    });
  };
  const sourceObjectGroups = mergeGroupsByTargetObject(getAssociationsBySourceObject());
  return <div className="associations-table">
      {sourceObjectGroups.map((sourceGroup, tableIndex) => <div key={sourceGroup.objectType} className="associations-table-section">
          {tableIndex > 0 && <div className="associations-table-section-spacer"></div>}

          <div className="associations-table-container">
            <table className="associations-table-data">
              <thead>
                <tr>
                  <TableHeader title="Object" tooltip="The object type and its ID." />
                  <TableHeader title="Association type" tooltip={<div>
                        <p>The direction and label of the association, with arrows indicating the type of relationship.</p>
                        <div><OneToOneIcon /> : one-to-one</div>
                        <div><OneToManyIcon /> : one-to-many</div>
                      </div>} />
                  <TableHeader title="Type ID" tooltip="The `associationTypeId` value to include when making associations API requests. Use `HUBSPOT_DEFINED` as the `associationCategory` for these IDs." cta="See Associations API" href="" />
                </tr>
              </thead>
              <tbody>
                {sourceGroup.targetGroups.length === 0 ? <tr>
                    <td colSpan="3" className="associations-table-empty">
                      No associations found
                    </td>
                  </tr> : sourceGroup.targetGroups.map((targetGroup, targetIndex) => <TargetGroupRows key={targetGroup.targetObject} targetGroup={targetGroup} targetIndex={targetIndex} />)}
              </tbody>
            </table>
          </div>
        </div>)}
    </div>;
};

export const CopyCode = ({children, className = ''}) => {
  const idRef = useRef(`copy-code-${Math.random().toString(36).slice(2)}`);
  const statusId = `${idRef.current}-status`;
  const [isCopied, setIsCopied] = useState(false);
  const getTextContent = el => {
    if (typeof el === 'string' || typeof el === 'number') return String(el);
    if (el?.props) return el.props.children || '';
    if (Array.isArray(el)) return el.map(getTextContent).join('');
    return String(el);
  };
  const handleCopy = async () => {
    try {
      await navigator.clipboard.writeText(getTextContent(children));
      setIsCopied(true);
      const status = document.getElementById(statusId);
      if (status) status.textContent = 'Code copied to clipboard';
      setTimeout(() => {
        setIsCopied(false);
        const s = document.getElementById(statusId);
        if (s) s.textContent = '';
      }, 1500);
    } catch {
      const status = document.getElementById(statusId);
      if (status) status.textContent = 'Failed to copy code';
    }
  };
  return <span id={idRef.current} className={`copy-code${className ? ` ${className}` : ''}`}>
      <span className="code-text" onClick={handleCopy} onKeyDown={e => {
    if (e.key === 'Enter' || e.key === ' ') {
      e.preventDefault();
      handleCopy();
    }
  }} style={{
    cursor: 'pointer'
  }} role="button" tabIndex={0} aria-label={isCopied ? 'Code copied to clipboard' : 'Copy code to clipboard'}>
        {children}
        {isCopied ? <svg width="11" height="11" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" className="copy-success-icon" style={{
    marginLeft: '0px',
    verticalAlign: 'middle',
    display: 'inline-block'
  }}>
            <path d="M11.6666 3.5L5.24992 9.91667L2.33325 7" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
          </svg> : <Icon icon="copy" size="11" iconType="regular" aria-hidden="true" />}
      </span>
      <div id={statusId} className="sr-only" role="status" aria-live="polite" aria-atomic="true" />
    </span>;
};

export const Dropdown = ({value, onChange, onClick, open, onOpenChange, options, allLabel, buttonStyle = 'button', className}) => {
  const triggerLabel = value === 'all' ? allLabel ?? 'Select' : options.find(o => o.value === value)?.label ?? value;
  const handleSelect = (selectedValue, e) => {
    if (onClick) onClick(selectedValue, e);
    onChange(selectedValue);
    onOpenChange(false);
  };
  return <div className={`dropdown${className ? ` ${className}` : ''}`}>
      <button type="button" className={`dropdown-trigger dropdown-trigger--${buttonStyle}`} onClick={() => onOpenChange(!open)} onKeyDown={e => {
    if (e.key === 'Escape' && open) {
      e.preventDefault();
      onOpenChange(false);
    } else if (e.key === 'ArrowDown') {
      e.preventDefault();
      if (!open) onOpenChange(true); else e.currentTarget.nextElementSibling?.querySelector('button')?.focus();
    } else if (e.key === 'ArrowUp' && open) {
      e.preventDefault();
      const opts = e.currentTarget.nextElementSibling?.querySelectorAll('button');
      opts?.[opts.length - 1]?.focus();
    }
  }} aria-expanded={open} aria-haspopup="listbox">
        <span>{triggerLabel}</span>
        <span className="dropdown-caret" aria-hidden="true" />
      </button>
      {open && <div className="dropdown-menu" role="listbox">
          {allLabel && <button type="button" className={`dropdown-option${value === 'all' ? ' dropdown-option--selected' : ''}`} onClick={e => handleSelect('all', e)} onKeyDown={e => handleOptionKeyDown(e, () => onOpenChange(false))} role="option" aria-selected={value === 'all'}>
              {allLabel}
            </button>}
          {options.map(option => <button key={option.value} type="button" className={`dropdown-option${value === option.value ? ' dropdown-option--selected' : ''}`} onClick={e => handleSelect(option.value, e)} onKeyDown={e => handleOptionKeyDown(e, () => onOpenChange(false))} role="option" aria-selected={value === option.value}>
              {option.label}
            </button>)}
        </div>}
    </div>;
};

export const defaultTicketProperties = {
  "properties": [{
    "name": "closed_date",
    "label": "Close date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date the ticket was closed",
    "secondaryDisplayProperty": true,
    "json": {
      "name": "closed_date",
      "label": "Close date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date the ticket was closed",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "content",
    "label": "Ticket description",
    "type": "string",
    "fieldType": "textarea",
    "description": "Description of the ticket",
    "searchable": true,
    "json": {
      "name": "content",
      "label": "Ticket description",
      "type": "string",
      "fieldType": "textarea",
      "description": "Description of the ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": 1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "createdate",
    "label": "Create date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date the ticket was created",
    "secondaryDisplayProperty": true,
    "json": {
      "name": "createdate",
      "label": "Create date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date the ticket was created",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "first_agent_reply_date",
    "label": "First agent email response date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date of the first email response from an agent after a ticket was created",
    "json": {
      "name": "first_agent_reply_date",
      "label": "First agent email response date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date of the first email response from an agent after a ticket was created",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_added_to_waitlist_at",
    "label": "Added to waitlist at",
    "type": "string",
    "fieldType": "calculation_equation",
    "description": "Time the ticket was added to the waitlist",
    "json": {
      "name": "hs_added_to_waitlist_at",
      "label": "Added to waitlist at",
      "type": "string",
      "fieldType": "calculation_equation",
      "description": "Time the ticket was added to the waitlist",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "if bool(hs_in_waitlist) then timestamp(hs_in_waitlist) else ''",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_all_assigned_business_unit_ids",
    "label": "Brands",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "The brands this record is assigned to.",
    "json": {
      "name": "hs_all_assigned_business_unit_ids",
      "label": "Brands",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "The brands this record is assigned to.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_all_associated_contact_emails",
    "label": "All associated contact emails",
    "type": "string",
    "fieldType": "calculation_rollup",
    "description": "All associated contact emails",
    "searchable": true,
    "json": {
      "name": "hs_all_associated_contact_emails",
      "label": "All associated contact emails",
      "type": "string",
      "fieldType": "calculation_rollup",
      "description": "All associated contact emails",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_assigned_team_ids",
    "label": "Assigned Teams",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "The target main teams or the user's main team assigned to the ticket by automatic assignment.",
    "json": {
      "name": "hs_assigned_team_ids",
      "label": "Assigned Teams",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "The target main teams or the user's main team assigned to the ticket by automatic assignment.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_copied_at",
    "label": "Copied at",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date the ticket was copied",
    "json": {
      "name": "hs_copied_at",
      "label": "Copied at",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date the ticket was copied",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_copied_by_user",
    "label": "Copied by user",
    "type": "enumeration",
    "fieldType": "select",
    "description": "The user that split the ticket",
    "json": {
      "name": "hs_copied_by_user",
      "label": "Copied by user",
      "type": "enumeration",
      "fieldType": "select",
      "description": "The user that split the ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_copied_from_ticket",
    "label": "Copied ticket",
    "type": "enumeration",
    "fieldType": "radio",
    "description": "The ticket copied",
    "json": {
      "name": "hs_copied_from_ticket",
      "label": "Copied ticket",
      "type": "enumeration",
      "fieldType": "radio",
      "description": "The ticket copied",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_copied_ticket_source",
    "label": "Copied ticket source",
    "type": "enumeration",
    "fieldType": "radio",
    "description": "How the ticket was copied",
    "options": [{
      "label": "Automation",
      "value": "automation"
    }, {
      "label": "User",
      "value": "user"
    }],
    "json": {
      "name": "hs_copied_ticket_source",
      "label": "Copied ticket source",
      "type": "enumeration",
      "fieldType": "radio",
      "description": "How the ticket was copied",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Automation",
        "value": "automation",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "User",
        "value": "user",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_created_by_user_id",
    "label": "Created by user ID",
    "type": "number",
    "fieldType": "number",
    "description": "The user who created this record. This value is set automatically by HubSpot.",
    "json": {
      "name": "hs_created_by_user_id",
      "label": "Created by user ID",
      "type": "number",
      "fieldType": "number",
      "description": "The user who created this record. This value is set automatically by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_customer_agent_matched_segment",
    "label": "Customer Agent Matched Segment",
    "type": "enumeration",
    "fieldType": "calculation_rollup",
    "description": "The audience segment resolved by Customer Agent for workflow routing, synced from the associated conversation.",
    "json": {
      "name": "hs_customer_agent_matched_segment",
      "label": "Customer Agent Matched Segment",
      "type": "enumeration",
      "fieldType": "calculation_rollup",
      "description": "The audience segment resolved by Customer Agent for workflow routing, synced from the associated conversation.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_customer_agent_ticket_status",
    "label": "Customer Agent ticket status",
    "type": "enumeration",
    "fieldType": "calculation_rollup",
    "description": "Signifies if the Breeze Customer Agent has escalated an issue",
    "options": [{
      "label": "None",
      "value": "NONE"
    }, {
      "label": "Pending",
      "value": "PENDING"
    }, {
      "label": "Awaiting Human Assignment",
      "value": "ESCALATED"
    }, {
      "label": "Handed Off",
      "value": "HANDED_OFF"
    }, {
      "label": "Resolved",
      "value": "RESOLVED"
    }],
    "json": {
      "name": "hs_customer_agent_ticket_status",
      "label": "Customer Agent ticket status",
      "type": "enumeration",
      "fieldType": "calculation_rollup",
      "description": "Signifies if the Breeze Customer Agent has escalated an issue",
      "groupName": "ticketinformation",
      "options": [{
        "label": "None",
        "value": "NONE",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Pending",
        "value": "PENDING",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Awaiting Human Assignment",
        "value": "ESCALATED",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Handed Off",
        "value": "HANDED_OFF",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "Resolved",
        "value": "RESOLVED",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": false,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_cx_score_range",
    "label": "CX Score range",
    "type": "enumeration",
    "fieldType": "select",
    "options": [{
      "label": "Critical",
      "value": "critical"
    }, {
      "label": "Needs review",
      "value": "needs_review"
    }, {
      "label": "Neutral",
      "value": "neutral"
    }, {
      "label": "Good",
      "value": "good"
    }, {
      "label": "Exceptional",
      "value": "exceptional"
    }],
    "json": {
      "name": "hs_cx_score_range",
      "label": "CX Score range",
      "type": "enumeration",
      "fieldType": "select",
      "description": "",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Critical",
        "value": "critical",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Needs review",
        "value": "needs_review",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Neutral",
        "value": "neutral",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Good",
        "value": "good",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "Exceptional",
        "value": "exceptional",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_feedback_last_ces_follow_up",
    "label": "Last CES survey comment",
    "type": "string",
    "fieldType": "text",
    "description": "Last CES survey comment that this contact gave for this ticket",
    "json": {
      "name": "hs_feedback_last_ces_follow_up",
      "label": "Last CES survey comment",
      "type": "string",
      "fieldType": "text",
      "description": "Last CES survey comment that this contact gave for this ticket",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_feedback_last_ces_rating",
    "label": "Last CES survey rating",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Last CES survey rating that this contact gave for this ticket",
    "options": [{
      "label": "1",
      "value": "1"
    }, {
      "label": "2",
      "value": "2"
    }, {
      "label": "3",
      "value": "3"
    }, {
      "label": "4",
      "value": "4"
    }, {
      "label": "5",
      "value": "5"
    }, {
      "label": "6",
      "value": "6"
    }, {
      "label": "7",
      "value": "7"
    }],
    "json": {
      "name": "hs_feedback_last_ces_rating",
      "label": "Last CES survey rating",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Last CES survey rating that this contact gave for this ticket",
      "groupName": "ticket_activity",
      "options": [{
        "label": "1",
        "value": "1",
        "description": "",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "2",
        "value": "2",
        "description": "",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "3",
        "value": "3",
        "description": "",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "4",
        "value": "4",
        "description": "",
        "displayOrder": 4,
        "hidden": false
      }, {
        "label": "5",
        "value": "5",
        "description": "",
        "displayOrder": 5,
        "hidden": false
      }, {
        "label": "6",
        "value": "6",
        "description": "",
        "displayOrder": 6,
        "hidden": false
      }, {
        "label": "7",
        "value": "7",
        "description": "",
        "displayOrder": 7,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_feedback_last_nps_rating_number",
    "label": "Latest NPS survey rating",
    "type": "number",
    "fieldType": "calculation_rollup",
    "description": "Latest NPS rating rolled up from associated feedback submission",
    "json": {
      "name": "hs_feedback_last_nps_rating_number",
      "label": "Latest NPS survey rating",
      "type": "number",
      "fieldType": "calculation_rollup",
      "description": "Latest NPS rating rolled up from associated feedback submission",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_feedback_last_survey_date",
    "label": "Last CES survey date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The time that this contact last submitted a CES survey response. This is automatically set by HubSpot.",
    "json": {
      "name": "hs_feedback_last_survey_date",
      "label": "Last CES survey date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The time that this contact last submitted a CES survey response. This is automatically set by HubSpot.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_file_upload",
    "label": "File upload",
    "type": "string",
    "fieldType": "file",
    "description": "Files attached to a support form by a contact.",
    "json": {
      "name": "hs_file_upload",
      "label": "File upload",
      "type": "string",
      "fieldType": "file",
      "description": "Files attached to a support form by a contact.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_first_agent_message_sent_by",
    "label": "First responding rep",
    "type": "enumeration",
    "fieldType": "select",
    "description": "The agent that first responds to a ticket",
    "json": {
      "name": "hs_first_agent_message_sent_by",
      "label": "First responding rep",
      "type": "enumeration",
      "fieldType": "select",
      "description": "The agent that first responds to a ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_first_visitor_message_sentiment",
    "label": "First message sentiment",
    "type": "enumeration",
    "fieldType": "calculation_equation",
    "description": "Sentiment of the visitor's initial message (Positive, Neutral, or Negative), based on an AI-generated sentiment score. Scores of 60-100 are Positive, 41-59 are Neutral, and 0-40 are Negative.",
    "options": [{
      "label": "Positive",
      "value": "Positive"
    }, {
      "label": "Neutral",
      "value": "Neutral"
    }, {
      "label": "Negative",
      "value": "Negative"
    }],
    "json": {
      "name": "hs_first_visitor_message_sentiment",
      "label": "First message sentiment",
      "type": "enumeration",
      "fieldType": "calculation_equation",
      "description": "Sentiment of the visitor's initial message (Positive, Neutral, or Negative), based on an AI-generated sentiment score. Scores of 60-100 are Positive, 41-59 are Neutral, and 0-40 are Negative.",
      "groupName": "ticket_ai_enrichment",
      "options": [{
        "label": "Positive",
        "value": "Positive",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Neutral",
        "value": "Neutral",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Negative",
        "value": "Negative",
        "displayOrder": 2,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "if (hs_first_visitor_message_sentiment_score >= 0 and hs_first_visitor_message_sentiment_score <= 40) then 'Negative'\nelseif (hs_first_visitor_message_sentiment_score > 40 and hs_first_visitor_message_sentiment_score < 60) then 'Neutral' else 'Positive'",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_in_waitlist",
    "label": "In Waitlist",
    "type": "bool",
    "fieldType": "booleancheckbox",
    "description": "Is ticket in a waitlist, to be assigned when users are able to work the ticket",
    "options": [{
      "label": "Yes",
      "value": "true"
    }, {
      "label": "No",
      "value": "false"
    }],
    "json": {
      "name": "hs_in_waitlist",
      "label": "In Waitlist",
      "type": "bool",
      "fieldType": "booleancheckbox",
      "description": "Is ticket in a waitlist, to be assigned when users are able to work the ticket",
      "groupName": "ticket_activity",
      "options": [{
        "label": "Yes",
        "value": "true",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "No",
        "value": "false",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_is_one_touch_ticket",
    "label": "First contact resolution",
    "type": "bool",
    "fieldType": "booleancheckbox",
    "description": "was the ticket closed with just one agent message sent",
    "options": [{
      "label": "Yes",
      "value": "true"
    }, {
      "label": "No",
      "value": "false"
    }],
    "json": {
      "name": "hs_is_one_touch_ticket",
      "label": "First contact resolution",
      "type": "bool",
      "fieldType": "booleancheckbox",
      "description": "was the ticket closed with just one agent message sent",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Yes",
        "value": "true",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "No",
        "value": "false",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_closed_date",
    "label": "Last Closed Date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date when ticket was last closed",
    "json": {
      "name": "hs_last_closed_date",
      "label": "Last Closed Date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date when ticket was last closed",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_csat_comment",
    "label": "Last CSAT survey comment",
    "type": "string",
    "fieldType": "calculation_rollup",
    "description": "Last CSAT survey comment associated to this ticket",
    "json": {
      "name": "hs_last_csat_comment",
      "label": "Last CSAT survey comment",
      "type": "string",
      "fieldType": "calculation_rollup",
      "description": "Last CSAT survey comment associated to this ticket",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_csat_date",
    "label": "Last CSAT survey date",
    "type": "datetime",
    "fieldType": "calculation_rollup",
    "description": "The time that this contact last submitted a CSAT survey response.",
    "json": {
      "name": "hs_last_csat_date",
      "label": "Last CSAT survey date",
      "type": "datetime",
      "fieldType": "calculation_rollup",
      "description": "The time that this contact last submitted a CSAT survey response.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_csat_rating",
    "label": "Last CSAT survey rating",
    "type": "string",
    "fieldType": "calculation_rollup",
    "description": "Last CSAT rating rolled up from associated feedback submission",
    "json": {
      "name": "hs_last_csat_rating",
      "label": "Last CSAT survey rating",
      "type": "string",
      "fieldType": "calculation_rollup",
      "description": "Last CSAT rating rolled up from associated feedback submission",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_message_from_visitor",
    "label": "Last message from visitor",
    "type": "bool",
    "fieldType": "calculation_equation",
    "description": "Whether the last message came from visitor",
    "options": [{
      "label": "True",
      "value": "true"
    }, {
      "label": "False",
      "value": "false"
    }],
    "json": {
      "name": "hs_last_message_from_visitor",
      "label": "Last message from visitor",
      "type": "bool",
      "fieldType": "calculation_equation",
      "description": "Whether the last message came from visitor",
      "groupName": "ticketinformation",
      "options": [{
        "label": "True",
        "value": "true",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "False",
        "value": "false",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "if is_present(hs_last_message_received_at) then if if is_present(hs_last_message_sent_at) then hs_last_message_received_at > hs_last_message_sent_at else true then true else false else false",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_message_received_at",
    "label": "Last message received date",
    "type": "datetime",
    "fieldType": "calculation_rollup",
    "description": "The date of the last response from the visitor",
    "json": {
      "name": "hs_last_message_received_at",
      "label": "Last message received date",
      "type": "datetime",
      "fieldType": "calculation_rollup",
      "description": "The date of the last response from the visitor",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_message_sent_at",
    "label": "Last response date",
    "type": "datetime",
    "fieldType": "calculation_rollup",
    "description": "The date of the last response from an agent or bot",
    "json": {
      "name": "hs_last_message_sent_at",
      "label": "Last response date",
      "type": "datetime",
      "fieldType": "calculation_rollup",
      "description": "The date of the last response from an agent or bot",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_nps_survey_comment",
    "label": "Last NPS survey comment",
    "type": "string",
    "fieldType": "calculation_rollup",
    "description": "Last NPS survey comment associated to this ticket",
    "json": {
      "name": "hs_last_nps_survey_comment",
      "label": "Last NPS survey comment",
      "type": "string",
      "fieldType": "calculation_rollup",
      "description": "Last NPS survey comment associated to this ticket",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_last_visitor_message_sentiment",
    "label": "Last message sentiment",
    "type": "enumeration",
    "fieldType": "calculation_equation",
    "description": "Sentiment of the visitor's latest message (Positive, Neutral, or Negative), based on an AI-generated sentiment score. Scores of 60-100 are Positive, 41-59 are Neutral, and 0-40 are Negative.",
    "options": [{
      "label": "Positive",
      "value": "Positive"
    }, {
      "label": "Neutral",
      "value": "Neutral"
    }, {
      "label": "Negative",
      "value": "Negative"
    }],
    "json": {
      "name": "hs_last_visitor_message_sentiment",
      "label": "Last message sentiment",
      "type": "enumeration",
      "fieldType": "calculation_equation",
      "description": "Sentiment of the visitor's latest message (Positive, Neutral, or Negative), based on an AI-generated sentiment score. Scores of 60-100 are Positive, 41-59 are Neutral, and 0-40 are Negative.",
      "groupName": "ticket_ai_enrichment",
      "options": [{
        "label": "Positive",
        "value": "Positive",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Neutral",
        "value": "Neutral",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Negative",
        "value": "Negative",
        "displayOrder": 2,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "if (hs_last_visitor_message_sentiment_score >= 0 and hs_last_visitor_message_sentiment_score <= 40) then 'Negative'\nelseif (hs_last_visitor_message_sentiment_score > 40 and hs_last_visitor_message_sentiment_score < 60) then 'Neutral' else 'Positive'",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_lastactivitydate",
    "label": "Last activity date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The last time a note, call, email, meeting, or task was logged for a ticket. This is updated automatically by HubSpot.",
    "json": {
      "name": "hs_lastactivitydate",
      "label": "Last activity date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The last time a note, call, email, meeting, or task was logged for a ticket. This is updated automatically by HubSpot.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_lastcontacted",
    "label": "Last contacted date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The last time a call, chat conversation, LinkedIn message, postal mail, meeting, sales email, SMS, or WhatsApp message was logged for a ticket. This is set automatically by HubSpot based on user actions in the ticket record.",
    "json": {
      "name": "hs_lastcontacted",
      "label": "Last contacted date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The last time a call, chat conversation, LinkedIn message, postal mail, meeting, sales email, SMS, or WhatsApp message was logged for a ticket. This is set automatically by HubSpot based on user actions in the ticket record.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_lastmodifieddate",
    "label": "Last modified date",
    "type": "datetime",
    "fieldType": "date",
    "description": "Most recent timestamp of any property update for this ticket. This includes HubSpot internal properties, which can be visible or hidden. This property is updated automatically.",
    "json": {
      "name": "hs_lastmodifieddate",
      "label": "Last modified date",
      "type": "datetime",
      "fieldType": "date",
      "description": "Most recent timestamp of any property update for this ticket. This includes HubSpot internal properties, which can be visible or hidden. This property is updated automatically.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_latest_message_is_thread_comment",
    "label": "Latest message is thread comment",
    "type": "bool",
    "fieldType": "calculation_rollup",
    "description": "Is latest message a thread comment",
    "options": [{
      "label": "Yes",
      "value": "true"
    }, {
      "label": "No",
      "value": "false"
    }],
    "json": {
      "name": "hs_latest_message_is_thread_comment",
      "label": "Latest message is thread comment",
      "type": "bool",
      "fieldType": "calculation_rollup",
      "description": "Is latest message a thread comment",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Yes",
        "value": "true",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "No",
        "value": "false",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": false,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_merged_object_ids",
    "label": "Merged Ticket IDs",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "The list of Ticket record IDs that have been merged into this Ticket. This value is set automatically by HubSpot.",
    "json": {
      "name": "hs_merged_object_ids",
      "label": "Merged Ticket IDs",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "The list of Ticket record IDs that have been merged into this Ticket. This value is set automatically by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_nextactivitydate",
    "label": "Next activity date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date of the next upcoming activity for a ticket. This property is set automatically by HubSpot based on user action. This includes logging a future call, email, or meeting using the Log feature, as well as creating a future task or scheduling a future meeting. This is updated automatically by HubSpot.",
    "json": {
      "name": "hs_nextactivitydate",
      "label": "Next activity date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date of the next upcoming activity for a ticket. This property is set automatically by HubSpot based on user action. This includes logging a future call, email, or meeting using the Log feature, as well as creating a future task or scheduling a future meeting. This is updated automatically by HubSpot.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_num_associated_companies",
    "label": "Number of Associated Companies",
    "type": "number",
    "fieldType": "number",
    "description": "Number of companies associated with this ticket",
    "json": {
      "name": "hs_num_associated_companies",
      "label": "Number of Associated Companies",
      "type": "number",
      "fieldType": "number",
      "description": "Number of companies associated with this ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_num_times_contacted",
    "label": "Number of times contacted",
    "type": "number",
    "fieldType": "number",
    "description": "The number of times a call, email, or meeting was logged on the ticket",
    "json": {
      "name": "hs_num_times_contacted",
      "label": "Number of times contacted",
      "type": "number",
      "fieldType": "number",
      "description": "The number of times a call, email, or meeting was logged on the ticket",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_number_of_touches",
    "label": "Number of touches",
    "type": "number",
    "fieldType": "number",
    "json": {
      "name": "hs_number_of_touches",
      "label": "Number of touches",
      "type": "number",
      "fieldType": "number",
      "description": "",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_object_id",
    "label": "Record ID",
    "type": "number",
    "fieldType": "number",
    "description": "The unique ID for this record. This value is set automatically by HubSpot.",
    "json": {
      "name": "hs_object_id",
      "label": "Record ID",
      "type": "number",
      "fieldType": "number",
      "description": "The unique ID for this record. This value is set automatically by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_object_source_detail_1",
    "label": "Record source detail 1",
    "type": "string",
    "fieldType": "text",
    "description": "First level of detail on how this record was created.",
    "json": {
      "name": "hs_object_source_detail_1",
      "label": "Record source detail 1",
      "type": "string",
      "fieldType": "text",
      "description": "First level of detail on how this record was created.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_object_source_detail_2",
    "label": "Record source detail 2",
    "type": "string",
    "fieldType": "text",
    "description": "Second level of detail on how this record was created.",
    "json": {
      "name": "hs_object_source_detail_2",
      "label": "Record source detail 2",
      "type": "string",
      "fieldType": "text",
      "description": "Second level of detail on how this record was created.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_object_source_detail_3",
    "label": "Record source detail 3",
    "type": "string",
    "fieldType": "text",
    "description": "Third level of detail on how this record was created.",
    "json": {
      "name": "hs_object_source_detail_3",
      "label": "Record source detail 3",
      "type": "string",
      "fieldType": "text",
      "description": "Third level of detail on how this record was created.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_object_source_label",
    "label": "Record source",
    "type": "enumeration",
    "fieldType": "select",
    "description": "How this record was created.",
    "json": {
      "name": "hs_object_source_label",
      "label": "Record source",
      "type": "enumeration",
      "fieldType": "select",
      "description": "How this record was created.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_originating_channel_instance_id",
    "label": "Originating channel account",
    "type": "enumeration",
    "fieldType": "calculation_rollup",
    "description": "First channel account used when conversation was started",
    "json": {
      "name": "hs_originating_channel_instance_id",
      "label": "Originating channel account",
      "type": "enumeration",
      "fieldType": "calculation_rollup",
      "description": "First channel account used when conversation was started",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_originating_generic_channel_id",
    "label": "Originating channel type",
    "type": "enumeration",
    "fieldType": "calculation_rollup",
    "description": "The channel the conversation is in",
    "json": {
      "name": "hs_originating_generic_channel_id",
      "label": "Originating channel type",
      "type": "enumeration",
      "fieldType": "calculation_rollup",
      "description": "The channel the conversation is in",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_outbound_ticket",
    "label": "Outbound ticket",
    "type": "bool",
    "fieldType": "booleancheckbox",
    "description": "Was the ticket created by sending an outbound communication from an object record page?",
    "options": [{
      "label": "Yes",
      "value": "true"
    }, {
      "label": "No",
      "value": "false"
    }],
    "json": {
      "name": "hs_outbound_ticket",
      "label": "Outbound ticket",
      "type": "bool",
      "fieldType": "booleancheckbox",
      "description": "Was the ticket created by sending an outbound communication from an object record page?",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Yes",
        "value": "true",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "No",
        "value": "false",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_overall_visitor_messages_sentiment",
    "label": "Average ticket sentiment",
    "type": "enumeration",
    "fieldType": "calculation_equation",
    "description": "Overall sentiment of the ticket (Positive, Neutral, or Negative), determined by the average of AI-analyzed sentiment scores from all visitor messages. An average score of 60-100 is Positive, 41-59 is Neutral, and 0-40 is Negative.",
    "options": [{
      "label": "Positive",
      "value": "Positive"
    }, {
      "label": "Neutral",
      "value": "Neutral"
    }, {
      "label": "Negative",
      "value": "Negative"
    }],
    "json": {
      "name": "hs_overall_visitor_messages_sentiment",
      "label": "Average ticket sentiment",
      "type": "enumeration",
      "fieldType": "calculation_equation",
      "description": "Overall sentiment of the ticket (Positive, Neutral, or Negative), determined by the average of AI-analyzed sentiment scores from all visitor messages. An average score of 60-100 is Positive, 41-59 is Neutral, and 0-40 is Negative.",
      "groupName": "ticket_ai_enrichment",
      "options": [{
        "label": "Positive",
        "value": "Positive",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Neutral",
        "value": "Neutral",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Negative",
        "value": "Negative",
        "displayOrder": 2,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "if (hs_overall_visitor_messages_sentiment_score >= 0 and hs_overall_visitor_messages_sentiment_score <= 40) then 'Negative'\nelseif (hs_overall_visitor_messages_sentiment_score > 40 and hs_overall_visitor_messages_sentiment_score < 60) then 'Neutral' else 'Positive'",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_pipeline",
    "label": "Pipeline",
    "type": "enumeration",
    "fieldType": "select",
    "description": "The pipeline that contains this ticket",
    "json": {
      "name": "hs_pipeline",
      "label": "Pipeline",
      "type": "enumeration",
      "fieldType": "select",
      "description": "The pipeline that contains this ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_pipeline_stage",
    "label": "Ticket status",
    "type": "enumeration",
    "fieldType": "select",
    "description": "The pipeline stage that contains this ticket",
    "required": true,
    "secondaryDisplayProperty": true,
    "searchable": true,
    "json": {
      "name": "hs_pipeline_stage",
      "label": "Ticket status",
      "type": "enumeration",
      "fieldType": "select",
      "description": "The pipeline stage that contains this ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_predicted_cx_score",
    "label": "CX Score",
    "type": "number",
    "fieldType": "number",
    "json": {
      "name": "hs_predicted_cx_score",
      "label": "CX Score",
      "type": "number",
      "fieldType": "number",
      "description": "",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_predicted_cx_score_evidence",
    "label": "CX Score explanation",
    "type": "string",
    "fieldType": "textarea",
    "description": "Explanation for the ticket's CX Score",
    "json": {
      "name": "hs_predicted_cx_score_evidence",
      "label": "CX Score explanation",
      "type": "string",
      "fieldType": "textarea",
      "description": "Explanation for the ticket's CX Score",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_resolution",
    "label": "Resolution",
    "type": "enumeration",
    "fieldType": "radio",
    "description": "The action taken to resolve the ticket",
    "options": [{
      "label": "Issue fixed",
      "value": "ISSUE_FIXED"
    }, {
      "label": "Feature request tracked",
      "value": "FEATURE_REQUEST_TRACKED"
    }, {
      "label": "Refund applied",
      "value": "REFUND_APPLIED"
    }, {
      "label": "Sent knowledge document link",
      "value": "SENT_KNOWLEDGE_DOCUMENT_LINK"
    }],
    "json": {
      "name": "hs_resolution",
      "label": "Resolution",
      "type": "enumeration",
      "fieldType": "radio",
      "description": "The action taken to resolve the ticket",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Issue fixed",
        "value": "ISSUE_FIXED",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Feature request tracked",
        "value": "FEATURE_REQUEST_TRACKED",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Refund applied",
        "value": "REFUND_APPLIED",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Sent knowledge document link",
        "value": "SENT_KNOWLEDGE_DOCUMENT_LINK",
        "displayOrder": 3,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyOptions": false,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_shared_team_ids",
    "label": "Shared teams",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "Additional teams whose users can access the Ticket based on their permissions. This can be set manually or through Workflows or APIs.",
    "json": {
      "name": "hs_shared_team_ids",
      "label": "Shared teams",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "Additional teams whose users can access the Ticket based on their permissions. This can be set manually or through Workflows or APIs.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_shared_user_ids",
    "label": "Shared users",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "Additional users that can access the Ticket based on their permissions. This can be set manually or through Workflows and APIs.",
    "json": {
      "name": "hs_shared_user_ids",
      "label": "Shared users",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "Additional users that can access the Ticket based on their permissions. This can be set manually or through Workflows and APIs.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_sla_pause_status",
    "label": "SLA Pause Status",
    "type": "enumeration",
    "fieldType": "radio",
    "description": "Status describing if the SLAs on a ticket are paused.",
    "options": [{
      "label": "Paused",
      "value": "paused"
    }],
    "json": {
      "name": "hs_sla_pause_status",
      "label": "SLA Pause Status",
      "type": "enumeration",
      "fieldType": "radio",
      "description": "Status describing if the SLAs on a ticket are paused.",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Paused",
        "value": "paused",
        "displayOrder": 0,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_snoozed_for_portal",
    "label": "Portal-wide snooze",
    "type": "bool",
    "fieldType": "booleancheckbox",
    "description": "Indicates whether this ticket is snoozed for all users in your account. This value is automatically set by HubSpot.",
    "options": [{
      "label": "Yes",
      "value": "true"
    }, {
      "label": "No",
      "value": "false"
    }],
    "json": {
      "name": "hs_snoozed_for_portal",
      "label": "Portal-wide snooze",
      "type": "bool",
      "fieldType": "booleancheckbox",
      "description": "Indicates whether this ticket is snoozed for all users in your account. This value is automatically set by HubSpot.",
      "groupName": "ticket_activity",
      "options": [{
        "label": "Yes",
        "value": "true",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "No",
        "value": "false",
        "displayOrder": 1,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_source_url",
    "label": "Source url",
    "type": "string",
    "fieldType": "calculation_rollup",
    "description": "The url where the ticket initially started.",
    "json": {
      "name": "hs_source_url",
      "label": "Source url",
      "type": "string",
      "fieldType": "calculation_rollup",
      "description": "The url where the ticket initially started.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_summarized_ticket_owner_type",
    "label": "Summarized Ticket Owner Type",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Summarizes the mix of automated and human ownership involved in handling a ticket throughout its entire lifecycle.",
    "options": [{
      "label": "Human rep only",
      "value": "human_rep_only"
    }, {
      "label": "Customer Agent only",
      "value": "customer_agent_only"
    }, {
      "label": "Rule-based bot only",
      "value": "rule_based_bot_only"
    }, {
      "label": "Combination of human and automation",
      "value": "combination_of_human_and_automation"
    }, {
      "label": "Combination of automation",
      "value": "combination_of_automation"
    }],
    "json": {
      "name": "hs_summarized_ticket_owner_type",
      "label": "Summarized Ticket Owner Type",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Summarizes the mix of automated and human ownership involved in handling a ticket throughout its entire lifecycle.",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Human rep only",
        "value": "human_rep_only",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Customer Agent only",
        "value": "customer_agent_only",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Rule-based bot only",
        "value": "rule_based_bot_only",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Combination of human and automation",
        "value": "combination_of_human_and_automation",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "Combination of automation",
        "value": "combination_of_automation",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_tag_ids",
    "label": "Ticket Tags",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "List of tag ids applicable to a ticket. This property is set automatically by HubSpot.",
    "json": {
      "name": "hs_tag_ids",
      "label": "Ticket Tags",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "List of tag ids applicable to a ticket. This property is set automatically by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_ticket_category",
    "label": "Category",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "Main reason customer reached out for help",
    "searchable": true,
    "options": [{
      "label": "Product issue",
      "value": "PRODUCT_ISSUE"
    }, {
      "label": "Billing issue",
      "value": "BILLING_ISSUE"
    }, {
      "label": "Feature request",
      "value": "FEATURE_REQUEST"
    }, {
      "label": "General inquiry",
      "value": "GENERAL_INQUIRY"
    }],
    "json": {
      "name": "hs_ticket_category",
      "label": "Category",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "Main reason customer reached out for help",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Product issue",
        "value": "PRODUCT_ISSUE",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Billing issue",
        "value": "BILLING_ISSUE",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Feature request",
        "value": "FEATURE_REQUEST",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "General inquiry",
        "value": "GENERAL_INQUIRY",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": false,
        "readOnlyDefinition": false,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_ticket_id",
    "label": "Ticket ID",
    "type": "number",
    "fieldType": "calculation_equation",
    "description": "The unique id for this ticket. This unique id is automatically populated by HubSpot.",
    "searchable": true,
    "json": {
      "name": "hs_ticket_id",
      "label": "Ticket ID",
      "type": "number",
      "fieldType": "calculation_equation",
      "description": "The unique id for this ticket. This unique id is automatically populated by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "hs_object_id",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_ticket_language_ai_tag",
    "label": "Language",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Language identified by AI based on the visitor's messages within a ticket.",
    "options": [{
      "label": "Afrikaans",
      "value": "af"
    }, {
      "label": "Alsatian",
      "value": "als"
    }, {
      "label": "Amharic",
      "value": "am"
    }, {
      "label": "Aragonese",
      "value": "an"
    }, {
      "label": "Arabic",
      "value": "ar"
    }, {
      "label": "Egyptian Arabic",
      "value": "arz"
    }, {
      "label": "Assamese",
      "value": "as"
    }, {
      "label": "Asturian",
      "value": "ast"
    }, {
      "label": "Avaric",
      "value": "av"
    }, {
      "label": "Azerbaijani",
      "value": "az"
    }, {
      "label": "South Azerbaijani",
      "value": "azb"
    }, {
      "label": "Bashkir",
      "value": "ba"
    }, {
      "label": "Bavarian",
      "value": "bar"
    }, {
      "label": "Central Bikol",
      "value": "bcl"
    }, {
      "label": "Belarusian",
      "value": "be"
    }, {
      "label": "Bulgarian",
      "value": "bg"
    }, {
      "label": "Bhojpuri",
      "value": "bh"
    }, {
      "label": "Bengali",
      "value": "bn"
    }, {
      "label": "Tibetan",
      "value": "bo"
    }, {
      "label": "Bishnupriya",
      "value": "bpy"
    }, {
      "label": "Breton",
      "value": "br"
    }, {
      "label": "Bosnian",
      "value": "bs"
    }, {
      "label": "Buryat",
      "value": "bxr"
    }, {
      "label": "Catalan",
      "value": "ca"
    }, {
      "label": "Chavacano",
      "value": "cbk"
    }, {
      "label": "Chechen",
      "value": "ce"
    }, {
      "label": "Cebuano",
      "value": "ceb"
    }, {
      "label": "Central Kurdish",
      "value": "ckb"
    }, {
      "label": "Corsican",
      "value": "co"
    }, {
      "label": "Czech",
      "value": "cs"
    }, {
      "label": "Chuvash",
      "value": "cv"
    }, {
      "label": "Welsh",
      "value": "cy"
    }, {
      "label": "Danish",
      "value": "da"
    }, {
      "label": "German",
      "value": "de"
    }, {
      "label": "Zazaki",
      "value": "diq"
    }, {
      "label": "Lower Sorbian",
      "value": "dsb"
    }, {
      "label": "Doteli",
      "value": "dty"
    }, {
      "label": "Divehi",
      "value": "dv"
    }, {
      "label": "Greek",
      "value": "el"
    }, {
      "label": "Emilian",
      "value": "eml"
    }, {
      "label": "English",
      "value": "en"
    }, {
      "label": "Esperanto",
      "value": "eo"
    }, {
      "label": "Spanish",
      "value": "es"
    }, {
      "label": "Estonian",
      "value": "et"
    }, {
      "label": "Basque",
      "value": "eu"
    }, {
      "label": "Persian",
      "value": "fa"
    }, {
      "label": "Finnish",
      "value": "fi"
    }, {
      "label": "French",
      "value": "fr"
    }, {
      "label": "Northern Frisian",
      "value": "frr"
    }, {
      "label": "Western Frisian",
      "value": "fy"
    }, {
      "label": "Irish",
      "value": "ga"
    }, {
      "label": "Scottish Gaelic",
      "value": "gd"
    }, {
      "label": "Galician",
      "value": "gl"
    }, {
      "label": "Guarani",
      "value": "gn"
    }, {
      "label": "Goan Konkani",
      "value": "gom"
    }, {
      "label": "Gujarati",
      "value": "gu"
    }, {
      "label": "Manx",
      "value": "gv"
    }, {
      "label": "Hebrew",
      "value": "he"
    }, {
      "label": "Hindi",
      "value": "hi"
    }, {
      "label": "Fiji Hindi",
      "value": "hif"
    }, {
      "label": "Croatian",
      "value": "hr"
    }, {
      "label": "Upper Sorbian",
      "value": "hsb"
    }, {
      "label": "Haitian Creole",
      "value": "ht"
    }, {
      "label": "Hungarian",
      "value": "hu"
    }, {
      "label": "Armenian",
      "value": "hy"
    }, {
      "label": "Interlingua",
      "value": "ia"
    }, {
      "label": "Indonesian",
      "value": "id"
    }, {
      "label": "Interlingue",
      "value": "ie"
    }, {
      "label": "Ilocano",
      "value": "ilo"
    }, {
      "label": "Ido",
      "value": "io"
    }, {
      "label": "Icelandic",
      "value": "is"
    }, {
      "label": "Italian",
      "value": "it"
    }, {
      "label": "Japanese",
      "value": "ja"
    }, {
      "label": "Lojban",
      "value": "jbo"
    }, {
      "label": "Javanese",
      "value": "jv"
    }, {
      "label": "Georgian",
      "value": "ka"
    }, {
      "label": "Kazakh",
      "value": "kk"
    }, {
      "label": "Khmer",
      "value": "km"
    }, {
      "label": "Kannada",
      "value": "kn"
    }, {
      "label": "Korean",
      "value": "ko"
    }, {
      "label": "Karachay-Balkar",
      "value": "krc"
    }, {
      "label": "Kurdish",
      "value": "ku"
    }, {
      "label": "Komi",
      "value": "kv"
    }, {
      "label": "Cornish",
      "value": "kw"
    }, {
      "label": "Kyrgyz",
      "value": "ky"
    }, {
      "label": "Latin",
      "value": "la"
    }, {
      "label": "Luxembourgish",
      "value": "lb"
    }, {
      "label": "Lezghian",
      "value": "lez"
    }, {
      "label": "Limburgish",
      "value": "li"
    }, {
      "label": "Lombard",
      "value": "lmo"
    }, {
      "label": "Lao",
      "value": "lo"
    }, {
      "label": "Luri",
      "value": "lrc"
    }, {
      "label": "Lithuanian",
      "value": "lt"
    }, {
      "label": "Latvian",
      "value": "lv"
    }, {
      "label": "Maithili",
      "value": "mai"
    }, {
      "label": "Malagasy",
      "value": "mg"
    }, {
      "label": "Eastern Mari",
      "value": "mhr"
    }, {
      "label": "Minangkabau",
      "value": "min"
    }, {
      "label": "Macedonian",
      "value": "mk"
    }, {
      "label": "Malayalam",
      "value": "ml"
    }, {
      "label": "Mongolian",
      "value": "mn"
    }, {
      "label": "Marathi",
      "value": "mr"
    }, {
      "label": "Western Mari",
      "value": "mrj"
    }, {
      "label": "Malay",
      "value": "ms"
    }, {
      "label": "Maltese",
      "value": "mt"
    }, {
      "label": "Mirandese",
      "value": "mwl"
    }, {
      "label": "Burmese",
      "value": "my"
    }, {
      "label": "Erzya",
      "value": "myv"
    }, {
      "label": "Mazanderani",
      "value": "mzn"
    }, {
      "label": "Nahuatl",
      "value": "nah"
    }, {
      "label": "Neapolitan",
      "value": "nap"
    }, {
      "label": "Low Saxon",
      "value": "nds"
    }, {
      "label": "Nepali",
      "value": "ne"
    }, {
      "label": "Newar",
      "value": "new"
    }, {
      "label": "Dutch",
      "value": "nl"
    }, {
      "label": "Norwegian Nynorsk",
      "value": "nn"
    }, {
      "label": "Norwegian",
      "value": "no"
    }, {
      "label": "Occitan",
      "value": "oc"
    }, {
      "label": "Oriya",
      "value": "or"
    }, {
      "label": "Ossetian",
      "value": "os"
    }, {
      "label": "Punjabi",
      "value": "pa"
    }, {
      "label": "Kapampangan",
      "value": "pam"
    }, {
      "label": "Palatine German",
      "value": "pfl"
    }, {
      "label": "Polish",
      "value": "pl"
    }, {
      "label": "Piedmontese",
      "value": "pms"
    }, {
      "label": "Western Punjabi",
      "value": "pnb"
    }, {
      "label": "Pashto",
      "value": "ps"
    }, {
      "label": "Portuguese",
      "value": "pt"
    }, {
      "label": "Quechua",
      "value": "qu"
    }, {
      "label": "Romansh",
      "value": "rm"
    }, {
      "label": "Romanian",
      "value": "ro"
    }, {
      "label": "Russian",
      "value": "ru"
    }, {
      "label": "Rusyn",
      "value": "rue"
    }, {
      "label": "Sanskrit",
      "value": "sa"
    }, {
      "label": "Yakut",
      "value": "sah"
    }, {
      "label": "Sardinian",
      "value": "sc"
    }, {
      "label": "Sicilian",
      "value": "scn"
    }, {
      "label": "Scots",
      "value": "sco"
    }, {
      "label": "Sindhi",
      "value": "sd"
    }, {
      "label": "Serbo-Croatian",
      "value": "sh"
    }, {
      "label": "Sinhala",
      "value": "si"
    }, {
      "label": "Slovak",
      "value": "sk"
    }, {
      "label": "Slovenian",
      "value": "sl"
    }, {
      "label": "Somali",
      "value": "so"
    }, {
      "label": "Albanian",
      "value": "sq"
    }, {
      "label": "Serbian",
      "value": "sr"
    }, {
      "label": "Sundanese",
      "value": "su"
    }, {
      "label": "Swedish",
      "value": "sv"
    }, {
      "label": "Swahili",
      "value": "sw"
    }, {
      "label": "Tamil",
      "value": "ta"
    }, {
      "label": "Telugu",
      "value": "te"
    }, {
      "label": "Tajik",
      "value": "tg"
    }, {
      "label": "Thai",
      "value": "th"
    }, {
      "label": "Turkmen",
      "value": "tk"
    }, {
      "label": "Tagalog",
      "value": "tl"
    }, {
      "label": "Turkish",
      "value": "tr"
    }, {
      "label": "Tatar",
      "value": "tt"
    }, {
      "label": "Tuvan",
      "value": "tyv"
    }, {
      "label": "Uyghur",
      "value": "ug"
    }, {
      "label": "Ukrainian",
      "value": "uk"
    }, {
      "label": "Urdu",
      "value": "ur"
    }, {
      "label": "Uzbek",
      "value": "uz"
    }, {
      "label": "Venetian",
      "value": "vec"
    }, {
      "label": "Vietnamese",
      "value": "vi"
    }, {
      "label": "West Flemish",
      "value": "vls"
    }, {
      "label": "Walloon",
      "value": "wa"
    }, {
      "label": "Wolof",
      "value": "wo"
    }, {
      "label": "Yiddish",
      "value": "yi"
    }, {
      "label": "Yoruba",
      "value": "yo"
    }, {
      "label": "Chinese",
      "value": "zh"
    }, {
      "label": "Zulu",
      "value": "zu"
    }],
    "json": {
      "name": "hs_ticket_language_ai_tag",
      "label": "Language",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Language identified by AI based on the visitor's messages within a ticket.",
      "groupName": "ticket_ai_enrichment",
      "options": [{
        "label": "Afrikaans",
        "value": "af",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Alsatian",
        "value": "als",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Amharic",
        "value": "am",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Aragonese",
        "value": "an",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "Arabic",
        "value": "ar",
        "displayOrder": 4,
        "hidden": false
      }, {
        "label": "Egyptian Arabic",
        "value": "arz",
        "displayOrder": 5,
        "hidden": false
      }, {
        "label": "Assamese",
        "value": "as",
        "displayOrder": 6,
        "hidden": false
      }, {
        "label": "Asturian",
        "value": "ast",
        "displayOrder": 7,
        "hidden": false
      }, {
        "label": "Avaric",
        "value": "av",
        "displayOrder": 8,
        "hidden": false
      }, {
        "label": "Azerbaijani",
        "value": "az",
        "displayOrder": 9,
        "hidden": false
      }, {
        "label": "South Azerbaijani",
        "value": "azb",
        "displayOrder": 10,
        "hidden": false
      }, {
        "label": "Bashkir",
        "value": "ba",
        "displayOrder": 11,
        "hidden": false
      }, {
        "label": "Bavarian",
        "value": "bar",
        "displayOrder": 12,
        "hidden": false
      }, {
        "label": "Central Bikol",
        "value": "bcl",
        "displayOrder": 13,
        "hidden": false
      }, {
        "label": "Belarusian",
        "value": "be",
        "displayOrder": 14,
        "hidden": false
      }, {
        "label": "Bulgarian",
        "value": "bg",
        "displayOrder": 15,
        "hidden": false
      }, {
        "label": "Bhojpuri",
        "value": "bh",
        "displayOrder": 16,
        "hidden": false
      }, {
        "label": "Bengali",
        "value": "bn",
        "displayOrder": 17,
        "hidden": false
      }, {
        "label": "Tibetan",
        "value": "bo",
        "displayOrder": 18,
        "hidden": false
      }, {
        "label": "Bishnupriya",
        "value": "bpy",
        "displayOrder": 19,
        "hidden": false
      }, {
        "label": "Breton",
        "value": "br",
        "displayOrder": 20,
        "hidden": false
      }, {
        "label": "Bosnian",
        "value": "bs",
        "displayOrder": 21,
        "hidden": false
      }, {
        "label": "Buryat",
        "value": "bxr",
        "displayOrder": 22,
        "hidden": false
      }, {
        "label": "Catalan",
        "value": "ca",
        "displayOrder": 23,
        "hidden": false
      }, {
        "label": "Chavacano",
        "value": "cbk",
        "displayOrder": 24,
        "hidden": false
      }, {
        "label": "Chechen",
        "value": "ce",
        "displayOrder": 25,
        "hidden": false
      }, {
        "label": "Cebuano",
        "value": "ceb",
        "displayOrder": 26,
        "hidden": false
      }, {
        "label": "Central Kurdish",
        "value": "ckb",
        "displayOrder": 27,
        "hidden": false
      }, {
        "label": "Corsican",
        "value": "co",
        "displayOrder": 28,
        "hidden": false
      }, {
        "label": "Czech",
        "value": "cs",
        "displayOrder": 29,
        "hidden": false
      }, {
        "label": "Chuvash",
        "value": "cv",
        "displayOrder": 30,
        "hidden": false
      }, {
        "label": "Welsh",
        "value": "cy",
        "displayOrder": 31,
        "hidden": false
      }, {
        "label": "Danish",
        "value": "da",
        "displayOrder": 32,
        "hidden": false
      }, {
        "label": "German",
        "value": "de",
        "displayOrder": 33,
        "hidden": false
      }, {
        "label": "Zazaki",
        "value": "diq",
        "displayOrder": 34,
        "hidden": false
      }, {
        "label": "Lower Sorbian",
        "value": "dsb",
        "displayOrder": 35,
        "hidden": false
      }, {
        "label": "Doteli",
        "value": "dty",
        "displayOrder": 36,
        "hidden": false
      }, {
        "label": "Divehi",
        "value": "dv",
        "displayOrder": 37,
        "hidden": false
      }, {
        "label": "Greek",
        "value": "el",
        "displayOrder": 38,
        "hidden": false
      }, {
        "label": "Emilian",
        "value": "eml",
        "displayOrder": 39,
        "hidden": false
      }, {
        "label": "English",
        "value": "en",
        "displayOrder": 40,
        "hidden": false
      }, {
        "label": "Esperanto",
        "value": "eo",
        "displayOrder": 41,
        "hidden": false
      }, {
        "label": "Spanish",
        "value": "es",
        "displayOrder": 42,
        "hidden": false
      }, {
        "label": "Estonian",
        "value": "et",
        "displayOrder": 43,
        "hidden": false
      }, {
        "label": "Basque",
        "value": "eu",
        "displayOrder": 44,
        "hidden": false
      }, {
        "label": "Persian",
        "value": "fa",
        "displayOrder": 45,
        "hidden": false
      }, {
        "label": "Finnish",
        "value": "fi",
        "displayOrder": 46,
        "hidden": false
      }, {
        "label": "French",
        "value": "fr",
        "displayOrder": 47,
        "hidden": false
      }, {
        "label": "Northern Frisian",
        "value": "frr",
        "displayOrder": 48,
        "hidden": false
      }, {
        "label": "Western Frisian",
        "value": "fy",
        "displayOrder": 49,
        "hidden": false
      }, {
        "label": "Irish",
        "value": "ga",
        "displayOrder": 50,
        "hidden": false
      }, {
        "label": "Scottish Gaelic",
        "value": "gd",
        "displayOrder": 51,
        "hidden": false
      }, {
        "label": "Galician",
        "value": "gl",
        "displayOrder": 52,
        "hidden": false
      }, {
        "label": "Guarani",
        "value": "gn",
        "displayOrder": 53,
        "hidden": false
      }, {
        "label": "Goan Konkani",
        "value": "gom",
        "displayOrder": 54,
        "hidden": false
      }, {
        "label": "Gujarati",
        "value": "gu",
        "displayOrder": 55,
        "hidden": false
      }, {
        "label": "Manx",
        "value": "gv",
        "displayOrder": 56,
        "hidden": false
      }, {
        "label": "Hebrew",
        "value": "he",
        "displayOrder": 57,
        "hidden": false
      }, {
        "label": "Hindi",
        "value": "hi",
        "displayOrder": 58,
        "hidden": false
      }, {
        "label": "Fiji Hindi",
        "value": "hif",
        "displayOrder": 59,
        "hidden": false
      }, {
        "label": "Croatian",
        "value": "hr",
        "displayOrder": 60,
        "hidden": false
      }, {
        "label": "Upper Sorbian",
        "value": "hsb",
        "displayOrder": 61,
        "hidden": false
      }, {
        "label": "Haitian Creole",
        "value": "ht",
        "displayOrder": 62,
        "hidden": false
      }, {
        "label": "Hungarian",
        "value": "hu",
        "displayOrder": 63,
        "hidden": false
      }, {
        "label": "Armenian",
        "value": "hy",
        "displayOrder": 64,
        "hidden": false
      }, {
        "label": "Interlingua",
        "value": "ia",
        "displayOrder": 65,
        "hidden": false
      }, {
        "label": "Indonesian",
        "value": "id",
        "displayOrder": 66,
        "hidden": false
      }, {
        "label": "Interlingue",
        "value": "ie",
        "displayOrder": 67,
        "hidden": false
      }, {
        "label": "Ilocano",
        "value": "ilo",
        "displayOrder": 68,
        "hidden": false
      }, {
        "label": "Ido",
        "value": "io",
        "displayOrder": 69,
        "hidden": false
      }, {
        "label": "Icelandic",
        "value": "is",
        "displayOrder": 70,
        "hidden": false
      }, {
        "label": "Italian",
        "value": "it",
        "displayOrder": 71,
        "hidden": false
      }, {
        "label": "Japanese",
        "value": "ja",
        "displayOrder": 72,
        "hidden": false
      }, {
        "label": "Lojban",
        "value": "jbo",
        "displayOrder": 73,
        "hidden": false
      }, {
        "label": "Javanese",
        "value": "jv",
        "displayOrder": 74,
        "hidden": false
      }, {
        "label": "Georgian",
        "value": "ka",
        "displayOrder": 75,
        "hidden": false
      }, {
        "label": "Kazakh",
        "value": "kk",
        "displayOrder": 76,
        "hidden": false
      }, {
        "label": "Khmer",
        "value": "km",
        "displayOrder": 77,
        "hidden": false
      }, {
        "label": "Kannada",
        "value": "kn",
        "displayOrder": 78,
        "hidden": false
      }, {
        "label": "Korean",
        "value": "ko",
        "displayOrder": 79,
        "hidden": false
      }, {
        "label": "Karachay-Balkar",
        "value": "krc",
        "displayOrder": 80,
        "hidden": false
      }, {
        "label": "Kurdish",
        "value": "ku",
        "displayOrder": 81,
        "hidden": false
      }, {
        "label": "Komi",
        "value": "kv",
        "displayOrder": 82,
        "hidden": false
      }, {
        "label": "Cornish",
        "value": "kw",
        "displayOrder": 83,
        "hidden": false
      }, {
        "label": "Kyrgyz",
        "value": "ky",
        "displayOrder": 84,
        "hidden": false
      }, {
        "label": "Latin",
        "value": "la",
        "displayOrder": 85,
        "hidden": false
      }, {
        "label": "Luxembourgish",
        "value": "lb",
        "displayOrder": 86,
        "hidden": false
      }, {
        "label": "Lezghian",
        "value": "lez",
        "displayOrder": 87,
        "hidden": false
      }, {
        "label": "Limburgish",
        "value": "li",
        "displayOrder": 88,
        "hidden": false
      }, {
        "label": "Lombard",
        "value": "lmo",
        "displayOrder": 89,
        "hidden": false
      }, {
        "label": "Lao",
        "value": "lo",
        "displayOrder": 90,
        "hidden": false
      }, {
        "label": "Luri",
        "value": "lrc",
        "displayOrder": 91,
        "hidden": false
      }, {
        "label": "Lithuanian",
        "value": "lt",
        "displayOrder": 92,
        "hidden": false
      }, {
        "label": "Latvian",
        "value": "lv",
        "displayOrder": 93,
        "hidden": false
      }, {
        "label": "Maithili",
        "value": "mai",
        "displayOrder": 94,
        "hidden": false
      }, {
        "label": "Malagasy",
        "value": "mg",
        "displayOrder": 95,
        "hidden": false
      }, {
        "label": "Eastern Mari",
        "value": "mhr",
        "displayOrder": 96,
        "hidden": false
      }, {
        "label": "Minangkabau",
        "value": "min",
        "displayOrder": 97,
        "hidden": false
      }, {
        "label": "Macedonian",
        "value": "mk",
        "displayOrder": 98,
        "hidden": false
      }, {
        "label": "Malayalam",
        "value": "ml",
        "displayOrder": 99,
        "hidden": false
      }, {
        "label": "Mongolian",
        "value": "mn",
        "displayOrder": 100,
        "hidden": false
      }, {
        "label": "Marathi",
        "value": "mr",
        "displayOrder": 101,
        "hidden": false
      }, {
        "label": "Western Mari",
        "value": "mrj",
        "displayOrder": 102,
        "hidden": false
      }, {
        "label": "Malay",
        "value": "ms",
        "displayOrder": 103,
        "hidden": false
      }, {
        "label": "Maltese",
        "value": "mt",
        "displayOrder": 104,
        "hidden": false
      }, {
        "label": "Mirandese",
        "value": "mwl",
        "displayOrder": 105,
        "hidden": false
      }, {
        "label": "Burmese",
        "value": "my",
        "displayOrder": 106,
        "hidden": false
      }, {
        "label": "Erzya",
        "value": "myv",
        "displayOrder": 107,
        "hidden": false
      }, {
        "label": "Mazanderani",
        "value": "mzn",
        "displayOrder": 108,
        "hidden": false
      }, {
        "label": "Nahuatl",
        "value": "nah",
        "displayOrder": 109,
        "hidden": false
      }, {
        "label": "Neapolitan",
        "value": "nap",
        "displayOrder": 110,
        "hidden": false
      }, {
        "label": "Low Saxon",
        "value": "nds",
        "displayOrder": 111,
        "hidden": false
      }, {
        "label": "Nepali",
        "value": "ne",
        "displayOrder": 112,
        "hidden": false
      }, {
        "label": "Newar",
        "value": "new",
        "displayOrder": 113,
        "hidden": false
      }, {
        "label": "Dutch",
        "value": "nl",
        "displayOrder": 114,
        "hidden": false
      }, {
        "label": "Norwegian Nynorsk",
        "value": "nn",
        "displayOrder": 115,
        "hidden": false
      }, {
        "label": "Norwegian",
        "value": "no",
        "displayOrder": 116,
        "hidden": false
      }, {
        "label": "Occitan",
        "value": "oc",
        "displayOrder": 117,
        "hidden": false
      }, {
        "label": "Oriya",
        "value": "or",
        "displayOrder": 118,
        "hidden": false
      }, {
        "label": "Ossetian",
        "value": "os",
        "displayOrder": 119,
        "hidden": false
      }, {
        "label": "Punjabi",
        "value": "pa",
        "displayOrder": 120,
        "hidden": false
      }, {
        "label": "Kapampangan",
        "value": "pam",
        "displayOrder": 121,
        "hidden": false
      }, {
        "label": "Palatine German",
        "value": "pfl",
        "displayOrder": 122,
        "hidden": false
      }, {
        "label": "Polish",
        "value": "pl",
        "displayOrder": 123,
        "hidden": false
      }, {
        "label": "Piedmontese",
        "value": "pms",
        "displayOrder": 124,
        "hidden": false
      }, {
        "label": "Western Punjabi",
        "value": "pnb",
        "displayOrder": 125,
        "hidden": false
      }, {
        "label": "Pashto",
        "value": "ps",
        "displayOrder": 126,
        "hidden": false
      }, {
        "label": "Portuguese",
        "value": "pt",
        "displayOrder": 127,
        "hidden": false
      }, {
        "label": "Quechua",
        "value": "qu",
        "displayOrder": 128,
        "hidden": false
      }, {
        "label": "Romansh",
        "value": "rm",
        "displayOrder": 129,
        "hidden": false
      }, {
        "label": "Romanian",
        "value": "ro",
        "displayOrder": 130,
        "hidden": false
      }, {
        "label": "Russian",
        "value": "ru",
        "displayOrder": 131,
        "hidden": false
      }, {
        "label": "Rusyn",
        "value": "rue",
        "displayOrder": 132,
        "hidden": false
      }, {
        "label": "Sanskrit",
        "value": "sa",
        "displayOrder": 133,
        "hidden": false
      }, {
        "label": "Yakut",
        "value": "sah",
        "displayOrder": 134,
        "hidden": false
      }, {
        "label": "Sardinian",
        "value": "sc",
        "displayOrder": 135,
        "hidden": false
      }, {
        "label": "Sicilian",
        "value": "scn",
        "displayOrder": 136,
        "hidden": false
      }, {
        "label": "Scots",
        "value": "sco",
        "displayOrder": 137,
        "hidden": false
      }, {
        "label": "Sindhi",
        "value": "sd",
        "displayOrder": 138,
        "hidden": false
      }, {
        "label": "Serbo-Croatian",
        "value": "sh",
        "displayOrder": 139,
        "hidden": false
      }, {
        "label": "Sinhala",
        "value": "si",
        "displayOrder": 140,
        "hidden": false
      }, {
        "label": "Slovak",
        "value": "sk",
        "displayOrder": 141,
        "hidden": false
      }, {
        "label": "Slovenian",
        "value": "sl",
        "displayOrder": 142,
        "hidden": false
      }, {
        "label": "Somali",
        "value": "so",
        "displayOrder": 143,
        "hidden": false
      }, {
        "label": "Albanian",
        "value": "sq",
        "displayOrder": 144,
        "hidden": false
      }, {
        "label": "Serbian",
        "value": "sr",
        "displayOrder": 145,
        "hidden": false
      }, {
        "label": "Sundanese",
        "value": "su",
        "displayOrder": 146,
        "hidden": false
      }, {
        "label": "Swedish",
        "value": "sv",
        "displayOrder": 147,
        "hidden": false
      }, {
        "label": "Swahili",
        "value": "sw",
        "displayOrder": 148,
        "hidden": false
      }, {
        "label": "Tamil",
        "value": "ta",
        "displayOrder": 149,
        "hidden": false
      }, {
        "label": "Telugu",
        "value": "te",
        "displayOrder": 150,
        "hidden": false
      }, {
        "label": "Tajik",
        "value": "tg",
        "displayOrder": 151,
        "hidden": false
      }, {
        "label": "Thai",
        "value": "th",
        "displayOrder": 152,
        "hidden": false
      }, {
        "label": "Turkmen",
        "value": "tk",
        "displayOrder": 153,
        "hidden": false
      }, {
        "label": "Tagalog",
        "value": "tl",
        "displayOrder": 154,
        "hidden": false
      }, {
        "label": "Turkish",
        "value": "tr",
        "displayOrder": 155,
        "hidden": false
      }, {
        "label": "Tatar",
        "value": "tt",
        "displayOrder": 156,
        "hidden": false
      }, {
        "label": "Tuvan",
        "value": "tyv",
        "displayOrder": 157,
        "hidden": false
      }, {
        "label": "Uyghur",
        "value": "ug",
        "displayOrder": 158,
        "hidden": false
      }, {
        "label": "Ukrainian",
        "value": "uk",
        "displayOrder": 159,
        "hidden": false
      }, {
        "label": "Urdu",
        "value": "ur",
        "displayOrder": 160,
        "hidden": false
      }, {
        "label": "Uzbek",
        "value": "uz",
        "displayOrder": 161,
        "hidden": false
      }, {
        "label": "Venetian",
        "value": "vec",
        "displayOrder": 162,
        "hidden": false
      }, {
        "label": "Vietnamese",
        "value": "vi",
        "displayOrder": 163,
        "hidden": false
      }, {
        "label": "West Flemish",
        "value": "vls",
        "displayOrder": 164,
        "hidden": false
      }, {
        "label": "Walloon",
        "value": "wa",
        "displayOrder": 165,
        "hidden": false
      }, {
        "label": "Wolof",
        "value": "wo",
        "displayOrder": 166,
        "hidden": false
      }, {
        "label": "Yiddish",
        "value": "yi",
        "displayOrder": 167,
        "hidden": false
      }, {
        "label": "Yoruba",
        "value": "yo",
        "displayOrder": 168,
        "hidden": false
      }, {
        "label": "Chinese",
        "value": "zh",
        "displayOrder": 169,
        "hidden": false
      }, {
        "label": "Zulu",
        "value": "zu",
        "displayOrder": 170,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_ticket_owner_type",
    "label": "Ticket Owner Type",
    "type": "enumeration",
    "fieldType": "checkbox",
    "description": "Identifies each individual type of owner that handled a ticket throughout its entire lifecycle.",
    "options": [{
      "label": "Human rep",
      "value": "human_rep"
    }, {
      "label": "Customer Agent",
      "value": "customer_agent"
    }, {
      "label": "Rule-based bot",
      "value": "rule_based_bot"
    }],
    "json": {
      "name": "hs_ticket_owner_type",
      "label": "Ticket Owner Type",
      "type": "enumeration",
      "fieldType": "checkbox",
      "description": "Identifies each individual type of owner that handled a ticket throughout its entire lifecycle.",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Human rep",
        "value": "human_rep",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Customer Agent",
        "value": "customer_agent",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Rule-based bot",
        "value": "rule_based_bot",
        "displayOrder": 2,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_ticket_priority",
    "label": "Priority",
    "type": "enumeration",
    "fieldType": "select",
    "description": "The level of attention needed on the ticket",
    "options": [{
      "label": "Low",
      "value": "LOW"
    }, {
      "label": "Medium",
      "value": "MEDIUM"
    }, {
      "label": "High",
      "value": "HIGH"
    }, {
      "label": "Urgent",
      "value": "URGENT"
    }],
    "json": {
      "name": "hs_ticket_priority",
      "label": "Priority",
      "type": "enumeration",
      "fieldType": "select",
      "description": "The level of attention needed on the ticket",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Low",
        "value": "LOW",
        "description": "A low priority ticket",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Medium",
        "value": "MEDIUM",
        "description": "A medium priority ticket",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "High",
        "value": "HIGH",
        "description": "A high priority ticket",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "Urgent",
        "value": "URGENT",
        "description": "An urgent priority ticket",
        "displayOrder": 3,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyOptions": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_ticket_reopened_at",
    "label": "Ticket reopen date",
    "type": "datetime",
    "fieldType": "date",
    "description": "Date when the ticket was re-opened",
    "json": {
      "name": "hs_ticket_reopened_at",
      "label": "Ticket reopen date",
      "type": "datetime",
      "fieldType": "date",
      "description": "Date when the ticket was re-opened",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_close_in_operating_hours",
    "label": "Time to close in SLA hours",
    "type": "number",
    "fieldType": "number",
    "description": "The time between when the ticket was created and closed. This time calculation accounts for the goals set up for your SLAs.",
    "json": {
      "name": "hs_time_to_close_in_operating_hours",
      "label": "Time to close in SLA hours",
      "type": "number",
      "fieldType": "number",
      "description": "The time between when the ticket was created and closed. This time calculation accounts for the goals set up for your SLAs.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_close_sla_at",
    "label": "Time to Close SLA Due Date",
    "type": "datetime",
    "fieldType": "date",
    "description": "When the ticket falls out of Time to Close SLA.",
    "json": {
      "name": "hs_time_to_close_sla_at",
      "label": "Time to Close SLA Due Date",
      "type": "datetime",
      "fieldType": "date",
      "description": "When the ticket falls out of Time to Close SLA.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_close_sla_status",
    "label": "Time to Close SLA Ticket Status",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Current Time to Close SLA status of ticket",
    "options": [{
      "label": "Overdue",
      "value": "1"
    }, {
      "label": "Due Soon",
      "value": "2"
    }, {
      "label": "Active SLA",
      "value": "0"
    }, {
      "label": "SLA completed late",
      "value": "4"
    }, {
      "label": "SLA completed on time",
      "value": "3"
    }],
    "json": {
      "name": "hs_time_to_close_sla_status",
      "label": "Time to Close SLA Ticket Status",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Current Time to Close SLA status of ticket",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Overdue",
        "value": "1",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Due Soon",
        "value": "2",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Active SLA",
        "value": "0",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "SLA completed late",
        "value": "4",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "SLA completed on time",
        "value": "3",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_first_rep_assignment",
    "label": "Time to first rep assignment",
    "type": "number",
    "fieldType": "number",
    "json": {
      "name": "hs_time_to_first_rep_assignment",
      "label": "Time to first rep assignment",
      "type": "number",
      "fieldType": "number",
      "description": "",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_first_response_in_operating_hours",
    "label": "Time to first response in SLA hours",
    "type": "number",
    "fieldType": "number",
    "description": "The time between the ticket create date and the first agent reply. This time calculation accounts for the goals set up for your SLAs.",
    "json": {
      "name": "hs_time_to_first_response_in_operating_hours",
      "label": "Time to first response in SLA hours",
      "type": "number",
      "fieldType": "number",
      "description": "The time between the ticket create date and the first agent reply. This time calculation accounts for the goals set up for your SLAs.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_first_response_sla_at",
    "label": "Time to First Response SLA Due Date",
    "type": "datetime",
    "fieldType": "date",
    "description": "When the ticket falls out of the Time to First Response SLA",
    "json": {
      "name": "hs_time_to_first_response_sla_at",
      "label": "Time to First Response SLA Due Date",
      "type": "datetime",
      "fieldType": "date",
      "description": "When the ticket falls out of the Time to First Response SLA",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_first_response_sla_status",
    "label": "Time to First Response SLA Status",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Current Time to First Response SLA status",
    "options": [{
      "label": "Overdue",
      "value": "1"
    }, {
      "label": "Due Soon",
      "value": "2"
    }, {
      "label": "Active SLA",
      "value": "0"
    }, {
      "label": "SLA completed late",
      "value": "4"
    }, {
      "label": "SLA completed on time",
      "value": "3"
    }],
    "json": {
      "name": "hs_time_to_first_response_sla_status",
      "label": "Time to First Response SLA Status",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Current Time to First Response SLA status",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Overdue",
        "value": "1",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Due Soon",
        "value": "2",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Active SLA",
        "value": "0",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "SLA completed late",
        "value": "4",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "SLA completed on time",
        "value": "3",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_next_response_sla_at",
    "label": "Time to Next Response SLA Due Date",
    "type": "datetime",
    "fieldType": "date",
    "description": "When the ticket falls out of Time to Next Response SLA",
    "json": {
      "name": "hs_time_to_next_response_sla_at",
      "label": "Time to Next Response SLA Due Date",
      "type": "datetime",
      "fieldType": "date",
      "description": "When the ticket falls out of Time to Next Response SLA",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_time_to_next_response_sla_status",
    "label": "Time to Next Response SLA Status",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Current Time to Next Response SLA status",
    "options": [{
      "label": "Overdue",
      "value": "1"
    }, {
      "label": "Due Soon",
      "value": "2"
    }, {
      "label": "Active SLA",
      "value": "0"
    }, {
      "label": "SLA completed late",
      "value": "4"
    }, {
      "label": "SLA completed on time",
      "value": "3"
    }],
    "json": {
      "name": "hs_time_to_next_response_sla_status",
      "label": "Time to Next Response SLA Status",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Current Time to Next Response SLA status",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Overdue",
        "value": "1",
        "displayOrder": 0,
        "hidden": false
      }, {
        "label": "Due Soon",
        "value": "2",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Active SLA",
        "value": "0",
        "displayOrder": 2,
        "hidden": false
      }, {
        "label": "SLA completed late",
        "value": "4",
        "displayOrder": 3,
        "hidden": false
      }, {
        "label": "SLA completed on time",
        "value": "3",
        "displayOrder": 4,
        "hidden": false
      }],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_updated_by_user_id",
    "label": "Updated by user ID",
    "type": "number",
    "fieldType": "number",
    "description": "The user who last updated this record. This value is set automatically by HubSpot.",
    "json": {
      "name": "hs_updated_by_user_id",
      "label": "Updated by user ID",
      "type": "number",
      "fieldType": "number",
      "description": "The user who last updated this record. This value is set automatically by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_cumulative_time_in_{stageId}",
    "label": "Cumulative time in \"New (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The cumulative time in seconds spent by the ticket  in the 'New' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_cumulative_time_in_1",
      "label": "Cumulative time in \"New (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The cumulative time in seconds spent by the ticket  in the 'New' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_cumulative_time_in_{stageId}",
    "label": "Cumulative time in \"Waiting on contact (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The cumulative time in seconds spent by the ticket  in the 'Waiting on contact' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_cumulative_time_in_2",
      "label": "Cumulative time in \"Waiting on contact (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The cumulative time in seconds spent by the ticket  in the 'Waiting on contact' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_cumulative_time_in_{stageId}",
    "label": "Cumulative time in \"Waiting on us (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The cumulative time in seconds spent by the ticket  in the 'Waiting on us' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_cumulative_time_in_3",
      "label": "Cumulative time in \"Waiting on us (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The cumulative time in seconds spent by the ticket  in the 'Waiting on us' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_cumulative_time_in_{stageId}",
    "label": "Cumulative time in \"Closed (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The cumulative time in seconds spent by the ticket  in the 'Closed' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_cumulative_time_in_4",
      "label": "Cumulative time in \"Closed (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The cumulative time in seconds spent by the ticket  in the 'Closed' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_entered_{stageId}",
    "label": "Date entered \"New (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket entered the 'New' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_entered_1",
      "label": "Date entered \"New (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket entered the 'New' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_entered_{stageId}",
    "label": "Date entered \"Waiting on contact (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket entered the 'Waiting on contact' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_entered_2",
      "label": "Date entered \"Waiting on contact (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket entered the 'Waiting on contact' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_entered_{stageId}",
    "label": "Date entered \"Waiting on us (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket entered the 'Waiting on us' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_entered_3",
      "label": "Date entered \"Waiting on us (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket entered the 'Waiting on us' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_entered_{stageId}",
    "label": "Date entered \"Closed (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket entered the 'Closed' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_entered_4",
      "label": "Date entered \"Closed (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket entered the 'Closed' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_entered_current_stage",
    "label": "Date entered current stage",
    "type": "datetime",
    "fieldType": "calculation_equation",
    "description": "The date this object entered its current pipeline stage",
    "json": {
      "name": "hs_v2_date_entered_current_stage",
      "label": "Date entered current stage",
      "type": "datetime",
      "fieldType": "calculation_equation",
      "description": "The date this object entered its current pipeline stage",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "string_to_number(timestamp(hs_pipeline_stage))",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_exited_{stageId}",
    "label": "Date exited \"New (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket exited the 'New' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_exited_1",
      "label": "Date exited \"New (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket exited the 'New' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_exited_{stageId}",
    "label": "Date exited \"Waiting on contact (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket exited the 'Waiting on contact' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_exited_2",
      "label": "Date exited \"Waiting on contact (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket exited the 'Waiting on contact' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_exited_{stageId}",
    "label": "Date exited \"Waiting on us (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket exited the 'Waiting on us' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_exited_3",
      "label": "Date exited \"Waiting on us (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket exited the 'Waiting on us' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_date_exited_{stageId}",
    "label": "Date exited \"Closed (Support Pipeline)\"",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date and time when the ticket exited the 'Closed' stage, 'Support Pipeline' pipeline",
    "json": {
      "name": "hs_v2_date_exited_4",
      "label": "Date exited \"Closed (Support Pipeline)\"",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date and time when the ticket exited the 'Closed' stage, 'Support Pipeline' pipeline",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_latest_time_in_{stageId}",
    "label": "Latest time in \"New (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The total time in seconds spent by the ticket in the 'New' stage, 'Support Pipeline' pipeline since it last entered this stage",
    "json": {
      "name": "hs_v2_latest_time_in_1",
      "label": "Latest time in \"New (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The total time in seconds spent by the ticket in the 'New' stage, 'Support Pipeline' pipeline since it last entered this stage",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_latest_time_in_{stageId}",
    "label": "Latest time in \"Waiting on contact (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The total time in seconds spent by the ticket in the 'Waiting on contact' stage, 'Support Pipeline' pipeline since it last entered this stage",
    "json": {
      "name": "hs_v2_latest_time_in_2",
      "label": "Latest time in \"Waiting on contact (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The total time in seconds spent by the ticket in the 'Waiting on contact' stage, 'Support Pipeline' pipeline since it last entered this stage",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_latest_time_in_{stageId}",
    "label": "Latest time in \"Waiting on us (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The total time in seconds spent by the ticket in the 'Waiting on us' stage, 'Support Pipeline' pipeline since it last entered this stage",
    "json": {
      "name": "hs_v2_latest_time_in_3",
      "label": "Latest time in \"Waiting on us (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The total time in seconds spent by the ticket in the 'Waiting on us' stage, 'Support Pipeline' pipeline since it last entered this stage",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_latest_time_in_{stageId}",
    "label": "Latest time in \"Closed (Support Pipeline)\"",
    "type": "number",
    "fieldType": "number",
    "description": "The total time in seconds spent by the ticket in the 'Closed' stage, 'Support Pipeline' pipeline since it last entered this stage",
    "json": {
      "name": "hs_v2_latest_time_in_4",
      "label": "Latest time in \"Closed (Support Pipeline)\"",
      "type": "number",
      "fieldType": "number",
      "description": "The total time in seconds spent by the ticket in the 'Closed' stage, 'Support Pipeline' pipeline since it last entered this stage",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hs_v2_time_in_current_stage",
    "label": "Time in current stage",
    "type": "datetime",
    "fieldType": "calculation_equation",
    "description": "The time this object has spent in the current pipeline stage",
    "json": {
      "name": "hs_v2_time_in_current_stage",
      "label": "Time in current stage",
      "type": "datetime",
      "fieldType": "calculation_equation",
      "description": "The time this object has spent in the current pipeline stage",
      "groupName": "ticketstages",
      "options": [],
      "displayOrder": -1,
      "calculated": true,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "hs_v2_date_entered_current_stage",
      "dateDisplayHint": "time_since",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hubspot_owner_assigneddate",
    "label": "Owner assigned date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The most recent timestamp of when an owner was assigned to this record. This value is set automatically by HubSpot.",
    "json": {
      "name": "hubspot_owner_assigneddate",
      "label": "Owner assigned date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The most recent timestamp of when an owner was assigned to this record. This value is set automatically by HubSpot.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hubspot_owner_id",
    "label": "Ticket owner",
    "type": "enumeration",
    "fieldType": "select",
    "description": "User the ticket is assigned to. Assign additional users to a ticket record by creating a custom user property.",
    "secondaryDisplayProperty": true,
    "json": {
      "name": "hubspot_owner_id",
      "label": "Ticket owner",
      "type": "enumeration",
      "fieldType": "select",
      "description": "User the ticket is assigned to. Assign additional users to a ticket record by creating a custom user property.",
      "groupName": "ticketinformation",
      "options": [],
      "referencedObjectType": "OWNER",
      "displayOrder": 6,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "hubspot_team_id",
    "label": "HubSpot team",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Primary team of the ticket owner. This property is set automatically by HubSpot.",
    "json": {
      "name": "hubspot_team_id",
      "label": "HubSpot team",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Primary team of the ticket owner. This property is set automatically by HubSpot.",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": 7,
      "calculated": false,
      "externalOptions": true,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "last_reply_date",
    "label": "Last customer reply date",
    "type": "datetime",
    "fieldType": "date",
    "description": "The date of the last customer response",
    "json": {
      "name": "last_reply_date",
      "label": "Last customer reply date",
      "type": "datetime",
      "fieldType": "date",
      "description": "The date of the last customer response",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "num_notes",
    "label": "Number of Sales Activities",
    "type": "number",
    "fieldType": "number",
    "description": "The number of times a call, chat conversation, LinkedIn message, postal mail, meeting, note, sales email, SMS, task, or WhatsApp message was logged for a ticket record. This is set automatically by HubSpot based on user actions in the ticket record.",
    "json": {
      "name": "num_notes",
      "label": "Number of Sales Activities",
      "type": "number",
      "fieldType": "number",
      "description": "The number of times a call, chat conversation, LinkedIn message, postal mail, meeting, note, sales email, SMS, task, or WhatsApp message was logged for a ticket record. This is set automatically by HubSpot based on user actions in the ticket record.",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": 6,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "source_type",
    "label": "Source",
    "type": "enumeration",
    "fieldType": "select",
    "description": "Channel where ticket was originally submitted",
    "options": [{
      "label": "Chat",
      "value": "CHAT"
    }, {
      "label": "Email",
      "value": "EMAIL"
    }, {
      "label": "Form",
      "value": "FORM"
    }, {
      "label": "Phone",
      "value": "PHONE"
    }],
    "json": {
      "name": "source_type",
      "label": "Source",
      "type": "enumeration",
      "fieldType": "select",
      "description": "Channel where ticket was originally submitted",
      "groupName": "ticketinformation",
      "options": [{
        "label": "Chat",
        "value": "CHAT",
        "description": "Tickets created via live chat, Messenger, and bots",
        "displayOrder": 1,
        "hidden": false
      }, {
        "label": "Email",
        "value": "EMAIL",
        "description": "Emails received on your support mailbox",
        "displayOrder": 5,
        "hidden": false
      }, {
        "label": "Form",
        "value": "FORM",
        "description": "Tickets created through a form submission",
        "displayOrder": 7,
        "hidden": false
      }, {
        "label": "Phone",
        "value": "PHONE",
        "description": "Tickets created via phone",
        "displayOrder": 8,
        "hidden": false
      }],
      "displayOrder": 2,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyOptions": false,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "subject",
    "label": "Ticket name",
    "type": "string",
    "fieldType": "text",
    "description": "Short summary of ticket",
    "primaryDisplayProperty": true,
    "searchable": true,
    "json": {
      "name": "subject",
      "label": "Ticket name",
      "type": "string",
      "fieldType": "text",
      "description": "Short summary of ticket",
      "groupName": "ticketinformation",
      "options": [],
      "displayOrder": 0,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": false
      },
      "formField": true,
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "time_to_close",
    "label": "Time to close",
    "type": "number",
    "fieldType": "calculation_equation",
    "description": "The time between when the ticket was created and closed",
    "json": {
      "name": "time_to_close",
      "label": "Time to close",
      "type": "number",
      "fieldType": "calculation_equation",
      "description": "The time between when the ticket was created and closed",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "(closed_date - createdate)",
      "dataSensitivity": "non_sensitive"
    }
  }, {
    "name": "time_to_first_agent_reply",
    "label": "Time to first agent email reply",
    "type": "number",
    "fieldType": "number",
    "description": "The time from the ticket create date to the first agent email reply",
    "json": {
      "name": "time_to_first_agent_reply",
      "label": "Time to first agent email reply",
      "type": "number",
      "fieldType": "number",
      "description": "The time from the ticket create date to the first agent email reply",
      "groupName": "ticket_activity",
      "options": [],
      "displayOrder": -1,
      "calculated": false,
      "externalOptions": false,
      "hasUniqueValue": false,
      "hidden": false,
      "hubspotDefined": true,
      "modificationMetadata": {
        "archivable": true,
        "readOnlyDefinition": true,
        "readOnlyValue": true
      },
      "formField": false,
      "calculationFormula": "if first_agent_reply_date >= createdate then (first_agent_reply_date - createdate) endif",
      "dataSensitivity": "non_sensitive"
    }
  }]
};

export const PropertyRow = ({property, fieldTypeLabel, isOpen, onToggle, onCopyLink, hoveredProperty, selectedProperty, visibleJson, onSetHovered, onSetVisibleJson}) => {
  const formatDataType = type => {
    const formatted = type.replace(/_/g, ' ');
    return formatted.charAt(0).toUpperCase() + formatted.slice(1);
  };
  const isHighlighted = selectedProperty === property.name || hoveredProperty === property.name;
  return <>
      <dt id={property.name} className="property-definition-term" onMouseEnter={() => onSetHovered(property.name)} onMouseLeave={() => onSetHovered(null)}>
        <div className={`property-link-icon icon icon--link ${isHighlighted ? 'selected' : ''}`} onClick={e => {
    e.stopPropagation();
    onCopyLink(property.name);
  }} role="button" tabIndex={0} aria-label={`Copy link to ${property.name} property`} onKeyDown={e => {
    if (e.key === 'Enter' || e.key === ' ') {
      e.preventDefault();
      e.stopPropagation();
      onCopyLink(property.name);
    }
  }} />

        <div className={`property-chevron icon icon--chevron ${isOpen ? 'open' : ''}`} onClick={() => onToggle(property.name)} role="button" tabIndex={0} aria-label={`${isOpen ? 'Collapse' : 'Expand'} ${property.name} property`} onKeyDown={e => {
    if (e.key === 'Enter' || e.key === ' ') {
      e.preventDefault();
      onToggle(property.name);
    }
  }} />

        <div className="property-definition-content">
          <button onClick={() => onToggle(property.name)} aria-expanded={isOpen} type="button" className="property-label-button" aria-label={`${isOpen ? 'Collapse' : 'Expand'} ${property.label}`}>
            <span className="property-label">{property.label}</span>
          </button>
          <CopyCode><code>{property.name}</code></CopyCode>
          {property.json && isOpen && <button onClick={e => {
    e.stopPropagation();
    onSetVisibleJson(property.name);
  }} className={`view-json-button ${isHighlighted ? 'selected' : ''}`} type="button" aria-expanded={visibleJson[property.name] || false} style={{
    marginLeft: 'auto'
  }}>
              <Icon icon="code" size="14" iconType="regular" aria-hidden="true" /> {visibleJson[property.name] ? 'Hide JSON' : 'Show JSON'}
            </button>}
        </div>
      </dt>

      {isOpen && <dd className="property-definition-description" onMouseEnter={() => onSetHovered(property.name)} onMouseLeave={() => onSetHovered(null)}>
          <div className="property-definition-row">
            <span className="property-data-type" style={{
    backgroundColor: 'unset'
  }}>
              <strong>Data type: </strong> {formatDataType(property.type)}
            </span>
            <span className="property-field-type">
              <strong>Display type:</strong>
              <span> {fieldTypeLabel}</span>
            </span>
          </div>

          <div className="property-definition-row property-description-text">
            {property.description}
          </div>

          {property.options?.length > 0 && <div className="property-definition-row">
              <OptionsList options={property.options} />
            </div>}

          {property.json && visibleJson[property.name] && <div className="property-json-viewer" style={{
    marginTop: '1rem'
  }}>
              <CodeBlock language="json">
                {JSON.stringify(property.json, null, 2)}
              </CodeBlock>
            </div>}
        </dd>}
    </>;
};

export const OptionsList = ({options}) => {
  const list = <ul className="property-options-list">
      {options.map((option, idx) => <li key={idx}>{option.label} (<code>{option.value}</code>)</li>)}
    </ul>;
  return options.length > 10 ? <Expandable title={`${options.length} options`}>{list}</Expandable> : list;
};

export const DefaultPropertyListing = ({data, placeholder = 'Search properties'}) => {
  const FIELD_TYPE_LABELS = {
    text: 'Single-line text',
    textarea: 'Multi-line text',
    phonenumber: 'Phone number',
    booleancheckbox: 'Single checkbox',
    checkbox: 'Multiple checkboxes',
    select: 'Dropdown select',
    radio: 'Radio select',
    date: 'Date picker',
    datetime: 'Date and time picker',
    number: 'Number',
    calculation_equation: 'Equation',
    calculation_rollup: 'Rollup'
  };
  const formatDataType = type => {
    const formatted = type.replace(/_/g, ' ');
    return formatted.charAt(0).toUpperCase() + formatted.slice(1);
  };
  const properties = data?.properties || [];
  const [mounted, setMounted] = useState(false);
  const [searchTerm, setSearchTerm] = useState('');
  const [debouncedSearchTerm, setDebouncedSearchTerm] = useState('');
  const [openStates, setOpenStates] = useState({});
  const [selectedType, setSelectedType] = useState('all');
  const [selectedFieldType, setSelectedFieldType] = useState('all');
  const [activeDropdown, setActiveDropdown] = useState(null);
  const [selectedProperty, setSelectedProperty] = useState(null);
  const [hoveredProperty, setHoveredProperty] = useState(null);
  const [visibleJson, setVisibleJson] = useState({});
  const listRef = useRef(null);
  const allExpanded = properties.every(p => openStates[p.name] !== false);
  useEffect(() => setMounted(true), []);
  useEffect(() => {
    if (!mounted || !window.location.hash) return;
    const targetId = window.location.hash.substring(1);
    setTimeout(() => {
      const el = document.getElementById(targetId);
      if (el) {
        el.scrollIntoView({
          behavior: 'smooth',
          block: 'start'
        });
        setSelectedProperty(targetId);
      }
    }, 100);
  }, [mounted]);
  useEffect(() => {
    if (!mounted) return;
    const timer = setTimeout(() => setDebouncedSearchTerm(searchTerm), 300);
    return () => clearTimeout(timer);
  }, [searchTerm, mounted]);
  useEffect(() => {
    if (!mounted) return;
    const handleClickOutside = e => {
      if (!e.target.closest('.dropdown')) setActiveDropdown(null);
    };
    document.addEventListener('click', handleClickOutside);
    return () => document.removeEventListener('click', handleClickOutside);
  }, [mounted]);
  const availableTypes = useMemo(() => [...new Set(properties.filter(p => selectedFieldType === 'all' || FIELD_TYPE_LABELS[p.fieldType] === selectedFieldType).map(p => p.type).filter(Boolean))].sort(), [properties, selectedFieldType]);
  const availableFieldTypes = useMemo(() => [...new Set(properties.filter(p => selectedType === 'all' || p.type === selectedType).map(p => FIELD_TYPE_LABELS[p.fieldType]).filter(Boolean))].sort(), [properties, selectedType]);
  const filteredProperties = useMemo(() => {
    if (!mounted) return [];
    const searchLower = debouncedSearchTerm.toLowerCase();
    return properties.filter(prop => {
      const matchesSearch = !debouncedSearchTerm || (prop.name?.toLowerCase().includes(searchLower) || prop.label?.toLowerCase().includes(searchLower) || prop.description?.toLowerCase().includes(searchLower));
      const matchesType = selectedType === 'all' || prop.type === selectedType;
      const matchesFieldType = selectedFieldType === 'all' || FIELD_TYPE_LABELS[prop.fieldType] === selectedFieldType;
      return matchesSearch && matchesType && matchesFieldType;
    });
  }, [properties, debouncedSearchTerm, selectedType, selectedFieldType, mounted]);
  const toggleProperty = useCallback(name => {
    setOpenStates(prev => ({
      ...prev,
      [name]: prev[name] !== false ? false : true
    }));
  }, []);
  const toggleAllProperties = useCallback(() => {
    const expand = !allExpanded;
    setOpenStates(Object.fromEntries(properties.map(p => [p.name, expand])));
  }, [allExpanded, properties]);
  const copyAnchorLink = useCallback(async propertyName => {
    const url = `${window.location.origin}${window.location.pathname}#${propertyName}`;
    setSelectedProperty(propertyName);
    try {
      await navigator.clipboard.writeText(url);
      const el = document.getElementById(propertyName);
      if (el) {
        const container = listRef.current;
        if (container) {
          const scrollOffset = el.getBoundingClientRect().top - container.getBoundingClientRect().top + container.scrollTop - 20;
          container.scrollTo({
            top: scrollOffset,
            behavior: 'smooth'
          });
        }
        setTimeout(() => el.focus({
          preventScroll: true
        }), 500);
      }
      history.replaceState(null, null, `#${propertyName}`);
    } catch {}
  }, []);
  const handleSetVisibleJson = useCallback(name => {
    setVisibleJson(prev => ({
      ...prev,
      [name]: !prev[name]
    }));
  }, []);
  if (!mounted) return null;
  return <div id="property-definitions" className="property-definitions-wrapper">
      <div className="property-definitions-search-row">
        <div className="property-definitions-search">
          <label htmlFor="property-search" className="sr-only">{placeholder}</label>
          <input id="property-search" type="text" placeholder={placeholder} value={searchTerm} onChange={e => setSearchTerm(e.target.value)} maxLength={75} className="property-definitions-input" aria-label={placeholder} />
          <span className="property-definitions-input-icon" aria-hidden="true">
            <Icon icon="magnifying-glass" size="16" />
          </span>
        </div>
        <div className="property-definitions-results-count" role="status" aria-live="polite">
          {filteredProperties.length} {filteredProperties.length === 1 ? 'property' : 'properties'}
        </div>
      </div>

      <div className="property-definitions-filter-row">
        <Dropdown className="property-type-filter" value={selectedType} open={activeDropdown === 'type'} onOpenChange={isOpen => setActiveDropdown(isOpen ? 'type' : null)} onChange={v => setSelectedType(v)} allLabel="All data types" options={availableTypes.map(type => ({
    value: type,
    label: formatDataType(type)
  }))} buttonStyle="link" />
        <Dropdown className="property-field-type-filter" value={selectedFieldType} open={activeDropdown === 'fieldType'} onOpenChange={isOpen => setActiveDropdown(isOpen ? 'fieldType' : null)} onChange={v => setSelectedFieldType(v)} allLabel="All display types" options={availableFieldTypes.map(ft => ({
    value: ft,
    label: ft
  }))} buttonStyle="link" />
        <button onClick={toggleAllProperties} className="collapse-all-button" type="button" aria-label={allExpanded ? 'Collapse all properties' : 'Expand all properties'}>
          {allExpanded ? 'Collapse all' : 'Expand all'}
        </button>
      </div>

      <dl className="property-definitions-list" ref={listRef} style={{
    maxHeight: '800px',
    overflowY: 'scroll',
    minHeight: '200px'
  }}>
        {filteredProperties.length > 0 ? filteredProperties.map(property => <div key={property.name} className="property-row">
              <PropertyRow property={property} fieldTypeLabel={FIELD_TYPE_LABELS[property.fieldType] ?? property.fieldType} isOpen={openStates[property.name] !== false} onToggle={toggleProperty} onCopyLink={copyAnchorLink} hoveredProperty={hoveredProperty} selectedProperty={selectedProperty} visibleJson={visibleJson} onSetHovered={setHoveredProperty} onSetVisibleJson={handleSetVisibleJson} />
            </div>) : <div className="property-definitions-empty">
            {!debouncedSearchTerm.trim() && (selectedType !== 'all' || selectedFieldType !== 'all') ? 'No properties found matching the selected filters.' : `No properties found matching "${searchTerm}"`}
          </div>}
      </dl>
    </div>;
};

export const ObjectDefinitionCard = ({objectName, singularName, pluralName, objectId, fullyQualifiedName, allowsCustomProperties, allowsSensitiveProperties, hasPipelines, description, requiredProperties = [], searchableProperties = [], primaryDisplayProperty, secondaryDisplayProperties = [], children}) => {
  const AttributeLabel = ({icon, tooltip, cta, href, label}) => {
    const tooltipProps = {
      tip: tooltip
    };
    if (cta) tooltipProps.cta = cta;
    if (href) tooltipProps.href = href;
    return <Tooltip {...tooltipProps}>
        <div className="object-property-label tooltip underline decoration-dotted decoration-2 underline-offset-4 decoration-gray-400 dark:decoration-gray-500">
          {icon}
          {label}
        </div>
      </Tooltip>;
  };
  const normalizeProperty = prop => {
    if (typeof prop === 'string') {
      return {
        label: prop,
        name: prop
      };
    }
    return prop;
  };
  const PropertyTable = ({properties}) => {
    const propsArray = Array.isArray(properties) ? properties : [properties];
    const filteredProps = propsArray.filter(prop => {
      if (typeof prop === 'string') return prop.trim().length > 0;
      if (typeof prop === 'object' && prop !== null) {
        return prop.label || prop.name;
      }
      return false;
    });
    const handlePropertyClick = (e, propertyName) => {
      e.preventDefault();
      const targetElement = document.getElementById(propertyName);
      if (targetElement) {
        targetElement.scrollIntoView({
          behavior: 'smooth',
          block: 'start'
        });
        window.location.hash = propertyName;
        setTimeout(() => {
          targetElement.focus({
            preventScroll: true
          });
        }, 500);
      } else {
        window.location.hash = propertyName;
        const checkAndScroll = (attempts = 0, maxAttempts = 20) => {
          const element = document.getElementById(propertyName);
          if (element) {
            setTimeout(() => {
              element.scrollIntoView({
                behavior: 'smooth',
                block: 'start'
              });
              setTimeout(() => {
                element.focus({
                  preventScroll: true
                });
              }, 500);
            }, 150);
          } else if (attempts < maxAttempts) {
            setTimeout(() => checkAndScroll(attempts + 1, maxAttempts), 100);
          }
        };
        setTimeout(() => checkAndScroll(), 100);
      }
    };
    if (filteredProps.length === 0) return null;
    return <table className="property-summary-table">
        <caption className="sr-only">Properties list</caption>
        <thead>
          <tr>
            <th>Label</th>
            <th>Name</th>
          </tr>
        </thead>
        <tbody>
          {filteredProps.map((prop, idx) => {
      const {label, name} = normalizeProperty(prop);
      return <tr key={name || idx}>
                <td>
                  <a href={`#${name}`} className="property-table-link" onClick={e => handlePropertyClick(e, name)}>
                    {label}
                  </a>
                </td>
                <td>
                  <code>{name}</code>
                </td>
              </tr>;
    })}
        </tbody>
      </table>;
  };
  return <div className="object-definition-card-container rounded-2xl border border-gray-950/10 dark:border-white/10 w-full" data-object-type={singularName} data-object-id={objectId} data-allows-custom-properties={allowsCustomProperties} data-allows-sensitive-properties={allowsSensitiveProperties} data-has-pipelines={hasPipelines} role="region" aria-label={`${objectName} object summary`}>
      <div className="object-definition-header" data-section="header">
        <div className="object-definition-title-row">
          <strong className="object-definition-name">{objectName}</strong>
          <p className="object-definition-description">{description}</p>
        </div>
        <div className="summary-row header-row" data-section="identification">
          <div data-property="object-id">
            <strong>Object ID:</strong>
            <code>{objectId}</code>
          </div>
          <div data-property="fully-qualified-name">
            <strong>Fully qualified name (FQN):</strong>
            <code>{fullyQualifiedName}</code>
          </div>
        </div>
      </div>
      <div className="object-definition-tabs">
        <Tabs>
          <Tab title="Overview">
            <div className="object-definition-overview">
              <strong className="object-definition-section-heading">Features</strong>
              <div className="summary-row" data-section="capabilities" role="list" aria-label="Object capabilities">
                {hasPipelines !== undefined && <div data-property="pipelines" data-value={hasPipelines} role="listitem">
                    {hasPipelines ? <span className="prop-icon prop-icon--check" aria-hidden="true" /> : <span className="prop-icon prop-icon--x" aria-hidden="true" />}
                    <span>{hasPipelines ? 'Has' : "Doesn't have"} pipelines</span>
                  </div>}
                <div data-property="custom-properties" data-value={allowsCustomProperties} role="listitem">
                  {allowsCustomProperties ? <span className="prop-icon prop-icon--check" aria-hidden="true" /> : <span className="prop-icon prop-icon--x" aria-hidden="true" />}
                  <span>{allowsCustomProperties ? 'Allows' : "Doesn't allow"} custom properties</span>
                </div>
                <div data-property="sensitive-properties" data-value={allowsSensitiveProperties} role="listitem">
                  {allowsSensitiveProperties ? <span className="prop-icon prop-icon--check" aria-hidden="true" /> : <span className="prop-icon prop-icon--x" aria-hidden="true" />}
                  <span>{allowsSensitiveProperties ? 'Allows' : "Doesn't allow"} sensitive properties</span>
                </div>
              </div>

              <strong className="object-definition-section-heading">Key properties</strong>
              <section className="object-properties-list" data-section="details" aria-label="Key properties">
                <AttributeLabel icon={<span className="prop-icon prop-icon--required" aria-hidden="true" />} tooltip={`Properties required for creating a ${singularName.toLowerCase()}.`} label="Required properties" />
                <div className="object-property-value">
                  {requiredProperties.length > 0 ? <PropertyTable properties={requiredProperties} /> : 'None'}
                </div>

                <AttributeLabel icon={<span className="prop-icon prop-icon--display-property" aria-hidden="true" />} tooltip={`The main display label in the UI for ${pluralName.toLowerCase()}.`} label="Primary display property" />
                <div className="object-property-value">
                  <PropertyTable properties={primaryDisplayProperty} />
                </div>

                <AttributeLabel icon={<span className="prop-icon prop-icon--display-property" aria-hidden="true" />} tooltip={`Additional properties that are used as labels in the UI for ${pluralName.toLowerCase()}.`} label="Secondary display properties" />
                <div className="object-property-value">
                  {secondaryDisplayProperties.length > 0 ? <PropertyTable properties={secondaryDisplayProperties} /> : 'None'}
                </div>

                <AttributeLabel icon={<span className="prop-icon prop-icon--search" aria-hidden="true" />} tooltip={`Properties that can be used to search for ${pluralName.toLowerCase()}.`} cta="Learn more about CRM search" href="/api-reference/search/guide" label="Searchable properties" />
                <div className="object-property-value">
                  {searchableProperties.length > 0 ? <PropertyTable properties={searchableProperties} /> : 'None'}
                </div>
              </section>
            </div>
          </Tab>
          {children}
        </Tabs>
      </div>
    </div>;
};

<ObjectDefinitionCard
  objectName="Ticket"
  singularName="Ticket"
  pluralName="Tickets"
  objectId="0-5"
  fullyQualifiedName="TICKET"
  allowsCustomProperties={true}
  allowsSensitiveProperties={true}
  hasPipelines={true}
  description="Where customer questions and support requests are tracked and resolved."
  requiredProperties={[
{label: "Ticket status", name: "hs_pipeline_stage"}
]}
  primaryDisplayProperty={{label: "Ticket name", name: "subject"}}
  secondaryDisplayProperties={[
{label: "Create date", name: "createdate"},
{label: "Close date", name: "closed_date"},
{label: "Ticket owner", name: "hubspot_owner_id"},
{label: "Ticket status", name: "hs_pipeline_stage"}
]}
  searchableProperties={[
{ label: "Category", name: "hs_ticket_category" },
{ label: "Ticket ID", name: "hs_ticket_id" },
{ label: "All associated contact first names", name: "hs_all_associated_contact_firstnames" },
{ label: "All associated contact mobile phones", name: "hs_all_associated_contact_mobilephones" },
{ label: "All associated contact phones", name: "hs_all_associated_contact_phones" },
{ label: "Ticket name", name: "subject" },
{ label: "All associated contact companies", name: "hs_all_associated_contact_companies" },
{ label: "Ticket status", name: "hs_pipeline_stage" },
{ label: "All associated contact last names", name: "hs_all_associated_contact_lastnames" },
{ label: "Ticket description", name: "content" },
{ label: "All associated contact emails", name: "hs_all_associated_contact_emails" }
]}
>
  <Tab title="Properties">
    Below are the available default properties that can be set for each ticket. To retrieve the complete list of ticket properties available in your specific account, including any custom properties, make a `GET` request to `/crm/properties/2026-03/tickets`. See the [Properties API documentation](/api-reference/latest/crm/properties/guide) for full details.

    <Note>
      Note that your account's available properties may vary based on:

      * Your HubSpot subscription level and enabled features.
      * Custom properties added by your organization.
      * Account age (older accounts may have slightly different property variations).
    </Note>

    <DefaultPropertyListing data={defaultTicketProperties} />
  </Tab>

  <Tab title="Associations">
    <AssociationsTable data={associationsData} objectMetadata={objectMetadata} objectType="ticket" />
  </Tab>
</ObjectDefinitionCard>
