[
  {
    "object": "Account",
    "note": "Company-level intelligence. Best-external-contact fields identify who at this company your team is best connected to, and through whom.",
    "fields": [
      {
        "label": "Rings Emails All Time",
        "apiName": "ringsai__All_Time_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged across all time"
      },
      {
        "label": "Rings Meetings All Time",
        "apiName": "ringsai__All_Time_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged across all time"
      },
      {
        "label": "Rings City",
        "apiName": "ringsai__City__c",
        "type": "Text(100)",
        "description": "Company headquarters city from Rings"
      },
      {
        "label": "Rings Company Best Ext 1 (Contact)",
        "apiName": "ringsai__Company_Best_Ext_1_Contact__c",
        "type": "Lookup(Contact)",
        "description": "The #1 strongest external person at this company by pairwise PathPower"
      },
      {
        "label": "Rings Company Best Ext 1 PathPower",
        "apiName": "ringsai__Company_Best_Ext_1_PathPower__c",
        "type": "Picklist",
        "picklistValues": ["WEAK", "STRONG", "VERY_STRONG", "STRONGEST"],
        "description": "PathPower label for the best internal path to the #1 external person"
      },
      {
        "label": "Rings Company Best Ext 1 Role at Company",
        "apiName": "ringsai__Company_Best_Ext_1_Role__c",
        "type": "Picklist",
        "picklistValues": ["EMPLOYEE", "INVESTOR", "ADVISOR", "BOARD_MEMBER"],
        "description": "Affiliation of the #1 external person at their company"
      },
      {
        "label": "Rings Company Best Ext 1 Title",
        "apiName": "ringsai__Company_Best_Ext_1_Title__c",
        "type": "Text(255)",
        "description": "Denormalized job title of the #1 external person for faster reporting"
      },
      {
        "label": "Rings Company Best Ext 1 Top Int 1 User",
        "apiName": "ringsai__Company_Best_Ext_1_Top_Int_1_User__c",
        "type": "Lookup(User)",
        "description": "Internal teammate ranked #1 by relationship quality to the #1 external person"
      },
      {
        "label": "Rings Company Best Ext 1 Top Int 2 User",
        "apiName": "ringsai__Company_Best_Ext_1_Top_Int_2_User__c",
        "type": "Lookup(User)",
        "description": "Internal teammate ranked #2 by relationship quality to the #1 external person"
      },
      {
        "label": "Rings Company Best Ext 2 (Contact)",
        "apiName": "ringsai__Company_Best_Ext_2_Contact__c",
        "type": "Lookup(Contact)",
        "description": "The #2 strongest external person at this company by pairwise PathPower"
      },
      {
        "label": "Rings Company Best Ext 2 PathPower",
        "apiName": "ringsai__Company_Best_Ext_2_PathPower__c",
        "type": "Picklist",
        "picklistValues": ["WEAK", "STRONG", "VERY_STRONG", "STRONGEST"],
        "description": "PathPower label for the best internal path to the #2 external person"
      },
      {
        "label": "Rings Company Best Ext 2 Role at Company",
        "apiName": "ringsai__Company_Best_Ext_2_Role__c",
        "type": "Picklist",
        "picklistValues": ["EMPLOYEE", "INVESTOR", "ADVISOR", "BOARD_MEMBER"],
        "description": "Affiliation of the #2 external person at their company"
      },
      {
        "label": "Rings Company Best Ext 2 Title",
        "apiName": "ringsai__Company_Best_Ext_2_Title__c",
        "type": "Text(255)",
        "description": "Denormalized job title of the #2 external person for faster reporting"
      },
      {
        "label": "Rings Company Best Ext 2 Top Int 1 User",
        "apiName": "ringsai__Company_Best_Ext_2_Top_Int_1_User__c",
        "type": "Lookup(User)",
        "description": "Internal teammate ranked #1 by relationship quality to the #2 external person"
      },
      {
        "label": "Rings Company Best Ext 2 Top Int 2 User",
        "apiName": "ringsai__Company_Best_Ext_2_Top_Int_2_User__c",
        "type": "Lookup(User)",
        "description": "Internal teammate ranked #2 by relationship quality to the #2 external person"
      },
      {
        "label": "Rings Company Lists",
        "apiName": "ringsai__Company_Lists__c",
        "type": "Long Text(32768)",
        "description": "Semicolon-separated list names the company is on"
      },
      {
        "label": "Rings Company Total PathPower Score",
        "apiName": "ringsai__Company_Total_PathPower_Score__c",
        "type": "Number (formula)",
        "description": "Numeric rank of Company_Total_PathPower__c (1=WEAK, 2=MODERATE, 3=STRONG, 4=VERY_STRONG, 5=STRONGEST). Populated by formula so list views can sort by connection strength correctly \u2014 the picklist itself sorts alphabetically."
      },
      {
        "label": "Rings Company Total PathPower",
        "apiName": "ringsai__Company_Total_PathPower__c",
        "type": "Picklist",
        "picklistValues": ["WEAK", "STRONG", "VERY_STRONG", "STRONGEST"],
        "description": "Company-level PathPower label"
      },
      {
        "label": "Rings Country",
        "apiName": "ringsai__Country_Code__c",
        "type": "Text(100)",
        "description": "Country from Rings"
      },
      {
        "label": "Rings Days Since Last Interaction",
        "apiName": "ringsai__Days_Since_Last_Contact__c",
        "type": "Number (formula)",
        "description": "Days since the last interaction \u2014 email or meeting (calculated from Rings Last Interaction)"
      },
      {
        "label": "Rings Description",
        "apiName": "ringsai__Description__c",
        "type": "Long Text(32000)",
        "description": "Company description from Rings"
      },
      {
        "label": "Rings Emails Last 12 Months",
        "apiName": "ringsai__Last_12_Months_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 12 months window"
      },
      {
        "label": "Rings Meetings Last 12 Months",
        "apiName": "ringsai__Last_12_Months_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 12 months window"
      },
      {
        "label": "Rings Emails Last 3 Months",
        "apiName": "ringsai__Last_3_Months_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 3 months window"
      },
      {
        "label": "Rings Meetings Last 3 Months",
        "apiName": "ringsai__Last_3_Months_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings attended in the last 3 months window"
      },
      {
        "label": "Rings Emails Last 6 Months",
        "apiName": "ringsai__Last_6_Months_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 6 months window"
      },
      {
        "label": "Rings Meetings Last 6 Months",
        "apiName": "ringsai__Last_6_Months_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 6 months window"
      },
      {
        "label": "Rings Last Interaction",
        "apiName": "ringsai__Last_Interaction_At__c",
        "type": "DateTime",
        "description": "Most recent Rings engagement for this company"
      },
      {
        "label": "Rings Last Synced",
        "apiName": "ringsai__Last_Synced_At__c",
        "type": "DateTime",
        "description": "Timestamp of the last successful Rings data sync for this record"
      },
      {
        "label": "Rings LinkedIn URL",
        "apiName": "ringsai__LinkedIn_URL__c",
        "type": "Url",
        "description": "Company LinkedIn URL from Rings"
      },
      {
        "label": "Rings Logo",
        "apiName": "ringsai__Logo_URL__c",
        "type": "Url",
        "description": "Company logo image URL from Rings"
      },
      {
        "label": "Rings Match Status",
        "apiName": "ringsai__Match_Status__c",
        "type": "Picklist",
        "picklistValues": ["Matched", "No Match", "Overridden"],
        "description": "Indicates how this record was matched to Rings AI. Overridden means a user manually selected the match."
      },
      {
        "label": "Rings Name",
        "apiName": "ringsai__Name__c",
        "type": "Text(255)",
        "description": "Company name from Rings"
      },
      {
        "label": "Rings Next Meeting",
        "apiName": "ringsai__Next_Meeting_At__c",
        "type": "DateTime",
        "description": "Next scheduled meeting for this account"
      },
      {
        "label": "Rings ID",
        "apiName": "ringsai__Rings_Record_Id__c",
        "type": "Text(36)",
        "description": "Unique Rings identifier for this company"
      },
      {
        "label": "Rings State",
        "apiName": "ringsai__State__c",
        "type": "Text(100)",
        "description": "Company headquarters state/region from Rings"
      },
      {
        "label": "Rings Top Email User Last 3 Months",
        "apiName": "ringsai__Top_Email_User_Last_3_Months__c",
        "type": "Lookup(User)",
        "description": "Internal user with most emails in the last 3 months window"
      },
      {
        "label": "Rings Top Meeting User Last 3 Months",
        "apiName": "ringsai__Top_Meeting_User_Last_3_Months__c",
        "type": "Lookup(User)",
        "description": "Internal user with most meetings in the last 3 months window"
      },
      {
        "label": "Rings Website",
        "apiName": "ringsai__Website__c",
        "type": "Url",
        "description": "Company website from Rings"
      },
      {
        "label": "Rings Company Best Ext 1 Top Int 1 Name",
        "apiName": "ringsai__Company_Best_Ext_1_Top_Int_1_Name__c",
        "type": "Text(255)",
        "description": "Name of the internal teammate ranked #1 by relationship quality to the #1 external person, as returned by Rings. Populated even when that person has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Company Best Ext 1 Top Int 2 Name",
        "apiName": "ringsai__Company_Best_Ext_1_Top_Int_2_Name__c",
        "type": "Text(255)",
        "description": "Name of the internal teammate ranked #2 by relationship quality to the #1 external person, as returned by Rings. Populated even when that person has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Company Best Ext 2 Top Int 1 Name",
        "apiName": "ringsai__Company_Best_Ext_2_Top_Int_1_Name__c",
        "type": "Text(255)",
        "description": "Name of the internal teammate ranked #1 by relationship quality to the #2 external person, as returned by Rings. Populated even when that person has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Company Best Ext 2 Top Int 2 Name",
        "apiName": "ringsai__Company_Best_Ext_2_Top_Int_2_Name__c",
        "type": "Text(255)",
        "description": "Name of the internal teammate ranked #2 by relationship quality to the #2 external person, as returned by Rings. Populated even when that person has no Salesforce user mapping, which is when the matching lookup field is blank."
      }
    ]
  },
  {
    "object": "Contact",
    "note": "Person-level intelligence. Strongest Int Rel 1/2 are the routing-grade fields \u2014 see the Admin Guide's \"Choosing a Best User Field.\"",
    "fields": [
      {
        "label": "Rings Company",
        "apiName": "ringsai__Company_Name__c",
        "type": "Text(255)",
        "description": "Company name from Rings (denormalized)"
      },
      {
        "label": "Rings Days Since Last Interaction",
        "apiName": "ringsai__Days_Since_Last_Contact__c",
        "type": "Number (formula)",
        "description": "Days since last email or meeting (calculated from Rings Last Contact)"
      },
      {
        "label": "Rings Days Since Last Job Change",
        "apiName": "ringsai__Days_Since_Last_Job_Change__c",
        "type": "Number (formula)",
        "description": "Number of days since title or company change (whichever is more recent)"
      },
      {
        "label": "Rings Email (Last Used) Date",
        "apiName": "ringsai__Email_Last_Seen_At__c",
        "type": "DateTime",
        "description": "Date the Rings Email (Last Used) address was last used. Paired with that field the way Rings Email (Second to Last Used) Date is paired with its own address."
      },
      {
        "label": "Rings Email (Last Used)",
        "apiName": "ringsai__Email__c",
        "type": "Email",
        "description": "Most recent email address seen for this person in Rings communications"
      },
      {
        "label": "Rings Emails Count All Time",
        "apiName": "ringsai__Emails_Count_All_Time__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged across all time"
      },
      {
        "label": "Rings Emails Count Last 12 Months",
        "apiName": "ringsai__Emails_Count_Last_12_Months__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 12 months window"
      },
      {
        "label": "Rings Emails Count Last 3 Months",
        "apiName": "ringsai__Emails_Count_Last_3_Months__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 3 months window"
      },
      {
        "label": "Rings Emails Count Last 6 Months",
        "apiName": "ringsai__Emails_Count_Last_6_Months__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 6 months window"
      },
      {
        "label": "Rings Title",
        "apiName": "ringsai__Job_Title__c",
        "type": "Text(255)",
        "description": "Job title from Rings"
      },
      {
        "label": "Rings Last Interaction",
        "apiName": "ringsai__Last_Interaction_At__c",
        "type": "DateTime",
        "description": "Most recent Rings engagement for this person"
      },
      {
        "label": "Rings Last Synced",
        "apiName": "ringsai__Last_Synced_At__c",
        "type": "DateTime",
        "description": "Timestamp of the last successful Rings data sync for this record"
      },
      {
        "label": "Rings LinkedIn",
        "apiName": "ringsai__LinkedIn_URL__c",
        "type": "Url",
        "description": "LinkedIn profile URL from Rings"
      },
      {
        "label": "Rings Match Status",
        "apiName": "ringsai__Match_Status__c",
        "type": "Picklist",
        "picklistValues": ["Matched", "No Match", "Overridden"],
        "description": "Indicates how this record was matched to Rings AI. Overridden means a user manually selected the match."
      },
      {
        "label": "Rings Meetings Count All Time",
        "apiName": "ringsai__Meetings_Count_All_Time__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged across all time"
      },
      {
        "label": "Rings Meetings Count Last 12 Months",
        "apiName": "ringsai__Meetings_Count_Last_12_Months__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 12 months window"
      },
      {
        "label": "Rings Meetings Count Last 3 Months",
        "apiName": "ringsai__Meetings_Count_Last_3_Months__c",
        "type": "Number(18,0)",
        "description": "Total meetings attended in the last 3 months window"
      },
      {
        "label": "Rings Meetings Count Last 6 Months",
        "apiName": "ringsai__Meetings_Count_Last_6_Months__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 6 months window"
      },
      {
        "label": "Rings Name",
        "apiName": "ringsai__Name__c",
        "type": "Text(255)",
        "description": "Full name from Rings"
      },
      {
        "label": "Rings Next Meeting",
        "apiName": "ringsai__Next_Meeting_At__c",
        "type": "DateTime",
        "description": "Next scheduled meeting with this contact"
      },
      {
        "label": "Rings Person Bio",
        "apiName": "ringsai__Person_Bio__c",
        "type": "Long Text(32768)",
        "description": "Freeform bio/summary for personalization"
      },
      {
        "label": "Rings Person Primary Company Updated At",
        "apiName": "ringsai__Person_Company_Updated_At__c",
        "type": "DateTime",
        "description": "Timestamp when Primary Company last changed (Rings-calculated)"
      },
      {
        "label": "Rings Person Location City",
        "apiName": "ringsai__Person_Location_City__c",
        "type": "Text(100)",
        "description": "Explicit city surface; may mirror MailingCity"
      },
      {
        "label": "Rings Person Location Country",
        "apiName": "ringsai__Person_Location_Country__c",
        "type": "Text(100)",
        "description": "Explicit country surface; may mirror MailingCountry"
      },
      {
        "label": "Rings Person Location State",
        "apiName": "ringsai__Person_Location_State__c",
        "type": "Text(100)",
        "description": "Explicit state/region surface; may mirror MailingState"
      },
      {
        "label": "Rings Person Title Updated At",
        "apiName": "ringsai__Person_Title_Updated_At__c",
        "type": "DateTime",
        "description": "Timestamp when Primary Title last changed (Rings-calculated)"
      },
      {
        "label": "Rings Person Total PathPower Score",
        "apiName": "ringsai__Person_Total_PathPower_Score__c",
        "type": "Number (formula)",
        "description": "Numeric rank of Person_Total_PathPower__c (1=WEAK, 2=MODERATE, 3=STRONG, 4=VERY_STRONG, 5=STRONGEST). Populated by formula so list views can sort by connection strength correctly \u2014 the picklist itself sorts alphabetically."
      },
      {
        "label": "Rings Person Total PathPower",
        "apiName": "ringsai__Person_Total_PathPower__c",
        "type": "Picklist",
        "picklistValues": ["WEAK", "STRONG", "VERY_STRONG", "STRONGEST"],
        "description": "Total PathPower the company has with the target person"
      },
      {
        "label": "Rings Lists",
        "apiName": "ringsai__Rings_Lists__c",
        "type": "Long Text(32768)",
        "description": "Semicolon-separated list names the person is on"
      },
      {
        "label": "Rings ID",
        "apiName": "ringsai__Rings_Record_Id__c",
        "type": "Text(36)",
        "description": "Unique Rings identifier for this person"
      },
      {
        "label": "Rings Email (Second to Last Used) Date",
        "apiName": "ringsai__Second_To_Last_Email_Used_Date__c",
        "type": "DateTime",
        "description": "Timestamp for second most recent email use"
      },
      {
        "label": "Rings Email (Second to Last Used)",
        "apiName": "ringsai__Second_To_Last_Email_Used__c",
        "type": "Email",
        "description": "Second most recent email successfully used"
      },
      {
        "label": "Rings Strongest Int Rel 1 Last Engaged",
        "apiName": "ringsai__Strongest_Int_Rel_1_Last_At__c",
        "type": "DateTime",
        "description": "Most recent engagement time for #1"
      },
      {
        "label": "Rings Strongest Int Relationship 1 Score",
        "apiName": "ringsai__Strongest_Int_Rel_1_Score__c",
        "type": "Number(3,0)",
        "description": "Estimated relationship score (0-100) for #1"
      },
      {
        "label": "Rings Strongest Int Relationship 1 User",
        "apiName": "ringsai__Strongest_Int_Rel_1_User__c",
        "type": "Lookup(User)",
        "description": "#1 best-connected internal user for this contact"
      },
      {
        "label": "Rings Strongest Int Relationship 1 Name",
        "apiName": "ringsai__Strongest_Int_Rel_1_Name__c",
        "type": "Text(255)",
        "description": "Name of the teammate with the #1 strongest relationship to this person, as returned by Rings. Populated even when that teammate has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Strongest Int Rel 2 Last Engaged",
        "apiName": "ringsai__Strongest_Int_Rel_2_Last_At__c",
        "type": "DateTime",
        "description": "Most recent engagement time for #2"
      },
      {
        "label": "Rings Strongest Int Relationship 2 Score",
        "apiName": "ringsai__Strongest_Int_Rel_2_Score__c",
        "type": "Number(3,0)",
        "description": "Estimated relationship score (0-100) for #2"
      },
      {
        "label": "Rings Strongest Int Relationship 2 User",
        "apiName": "ringsai__Strongest_Int_Rel_2_User__c",
        "type": "Lookup(User)",
        "description": "#2 best-connected internal user for this contact"
      },
      {
        "label": "Rings Strongest Int Relationship 2 Name",
        "apiName": "ringsai__Strongest_Int_Rel_2_Name__c",
        "type": "Text(255)",
        "description": "Name of the teammate with the #2 strongest relationship to this person, as returned by Rings. Populated even when that teammate has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Top Email User Last 3 Months",
        "apiName": "ringsai__Top_Email_User_Last_3_Months__c",
        "type": "Lookup(User)",
        "description": "Internal user with most emails in the last 3 months window"
      },
      {
        "label": "Rings Top Meeting User Last 3 Months",
        "apiName": "ringsai__Top_Meeting_User_Last_3_Months__c",
        "type": "Lookup(User)",
        "description": "Internal user with most meetings in the last 3 months window"
      },
      {
        "label": "Rings Top User Meetings Last 3 Months",
        "apiName": "ringsai__Top_Meeting_User_Meetings_Last_3_Months__c",
        "type": "Number(18,0)",
        "description": "Meeting count for the top meeting user (Top_Meeting_User_Last_3_Months__c) in the last 3 months window"
      }
    ]
  },
  {
    "object": "Lead",
    "note": "Identical field set to Contact \u2014 a Lead that converts carries the same shape of Rings data.",
    "fields": [
      {
        "label": "Rings Company",
        "apiName": "ringsai__Company_Name__c",
        "type": "Text(255)",
        "description": "Company name from Rings (denormalized)"
      },
      {
        "label": "Rings Days Since Last Interaction",
        "apiName": "ringsai__Days_Since_Last_Contact__c",
        "type": "Number (formula)",
        "description": "Days since last email or meeting (calculated from Rings Last Contact)"
      },
      {
        "label": "Rings Days Since Last Job Change",
        "apiName": "ringsai__Days_Since_Last_Job_Change__c",
        "type": "Number (formula)",
        "description": "Number of days since title or company change (whichever is more recent)"
      },
      {
        "label": "Rings Email (Last Used) Date",
        "apiName": "ringsai__Email_Last_Seen_At__c",
        "type": "DateTime",
        "description": "Date the Rings Email (Last Used) address was last used. Paired with that field the way Rings Email (Second to Last Used) Date is paired with its own address."
      },
      {
        "label": "Rings Email (Last Used)",
        "apiName": "ringsai__Email__c",
        "type": "Email",
        "description": "Most recent email address seen for this person in Rings communications"
      },
      {
        "label": "Rings Emails Count All Time",
        "apiName": "ringsai__Emails_Count_All_Time__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged across all time"
      },
      {
        "label": "Rings Emails Count Last 12 Months",
        "apiName": "ringsai__Emails_Count_Last_12_Months__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 12 months window"
      },
      {
        "label": "Rings Emails Count Last 3 Months",
        "apiName": "ringsai__Emails_Count_Last_3_Months__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 3 months window"
      },
      {
        "label": "Rings Emails Count Last 6 Months",
        "apiName": "ringsai__Emails_Count_Last_6_Months__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 6 months window"
      },
      {
        "label": "Rings Title",
        "apiName": "ringsai__Job_Title__c",
        "type": "Text(255)",
        "description": "Job title from Rings"
      },
      {
        "label": "Rings Last Interaction",
        "apiName": "ringsai__Last_Interaction_At__c",
        "type": "DateTime",
        "description": "Most recent Rings engagement for this person"
      },
      {
        "label": "Rings Last Synced",
        "apiName": "ringsai__Last_Synced_At__c",
        "type": "DateTime",
        "description": "Timestamp of the last successful Rings data sync for this record"
      },
      {
        "label": "Rings LinkedIn",
        "apiName": "ringsai__LinkedIn_URL__c",
        "type": "Url",
        "description": "LinkedIn profile URL from Rings"
      },
      {
        "label": "Rings Match Status",
        "apiName": "ringsai__Match_Status__c",
        "type": "Picklist",
        "picklistValues": ["Matched", "No Match", "Overridden"],
        "description": "Indicates how this record was matched to Rings AI. Overridden means a user manually selected the match."
      },
      {
        "label": "Rings Meetings Count All Time",
        "apiName": "ringsai__Meetings_Count_All_Time__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged across all time"
      },
      {
        "label": "Rings Meetings Count Last 12 Months",
        "apiName": "ringsai__Meetings_Count_Last_12_Months__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 12 months window"
      },
      {
        "label": "Rings Meetings Count Last 3 Months",
        "apiName": "ringsai__Meetings_Count_Last_3_Months__c",
        "type": "Number(18,0)",
        "description": "Total meetings attended in the last 3 months window"
      },
      {
        "label": "Rings Meetings Count Last 6 Months",
        "apiName": "ringsai__Meetings_Count_Last_6_Months__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 6 months window"
      },
      {
        "label": "Rings Name",
        "apiName": "ringsai__Name__c",
        "type": "Text(255)",
        "description": "Full name from Rings"
      },
      {
        "label": "Rings Next Meeting",
        "apiName": "ringsai__Next_Meeting_At__c",
        "type": "DateTime",
        "description": "Next scheduled meeting with this contact"
      },
      {
        "label": "Rings Person Bio",
        "apiName": "ringsai__Person_Bio__c",
        "type": "Long Text(32768)",
        "description": "Freeform bio/summary for personalization"
      },
      {
        "label": "Rings Person Primary Company Updated At",
        "apiName": "ringsai__Person_Company_Updated_At__c",
        "type": "DateTime",
        "description": "Timestamp when Primary Company last changed (Rings-calculated)"
      },
      {
        "label": "Rings Person Location City",
        "apiName": "ringsai__Person_Location_City__c",
        "type": "Text(100)",
        "description": "Explicit city surface; may mirror MailingCity"
      },
      {
        "label": "Rings Person Location Country",
        "apiName": "ringsai__Person_Location_Country__c",
        "type": "Text(100)",
        "description": "Explicit country surface; may mirror MailingCountry"
      },
      {
        "label": "Rings Person Location State",
        "apiName": "ringsai__Person_Location_State__c",
        "type": "Text(100)",
        "description": "Explicit state/region surface; may mirror MailingState"
      },
      {
        "label": "Rings Person Title Updated At",
        "apiName": "ringsai__Person_Title_Updated_At__c",
        "type": "DateTime",
        "description": "Timestamp when Primary Title last changed (Rings-calculated)"
      },
      {
        "label": "Rings Person Total PathPower Score",
        "apiName": "ringsai__Person_Total_PathPower_Score__c",
        "type": "Number (formula)",
        "description": "Numeric rank of Person_Total_PathPower__c (1=WEAK, 2=MODERATE, 3=STRONG, 4=VERY_STRONG, 5=STRONGEST). Populated by formula so list views can sort by connection strength correctly \u2014 the picklist itself sorts alphabetically."
      },
      {
        "label": "Rings Person Total PathPower",
        "apiName": "ringsai__Person_Total_PathPower__c",
        "type": "Picklist",
        "picklistValues": ["WEAK", "STRONG", "VERY_STRONG", "STRONGEST"],
        "description": "Total PathPower the company has with the target person"
      },
      {
        "label": "Rings Lists",
        "apiName": "ringsai__Rings_Lists__c",
        "type": "Long Text(32768)",
        "description": "Semicolon-separated list names the person is on"
      },
      {
        "label": "Rings ID",
        "apiName": "ringsai__Rings_Record_Id__c",
        "type": "Text(36)",
        "description": "Unique Rings identifier for this person"
      },
      {
        "label": "Rings Email (Second to Last Used) Date",
        "apiName": "ringsai__Second_To_Last_Email_Used_Date__c",
        "type": "DateTime",
        "description": "Timestamp for second most recent email use"
      },
      {
        "label": "Rings Email (Second to Last Used)",
        "apiName": "ringsai__Second_To_Last_Email_Used__c",
        "type": "Email",
        "description": "Second most recent email successfully used"
      },
      {
        "label": "Rings Strongest Int Rel 1 Last Engaged",
        "apiName": "ringsai__Strongest_Int_Rel_1_Last_At__c",
        "type": "DateTime",
        "description": "Most recent engagement time for #1"
      },
      {
        "label": "Rings Strongest Int Relationship 1 Score",
        "apiName": "ringsai__Strongest_Int_Rel_1_Score__c",
        "type": "Number(3,0)",
        "description": "Estimated relationship score (0-100) for #1"
      },
      {
        "label": "Rings Strongest Int Relationship 1 User",
        "apiName": "ringsai__Strongest_Int_Rel_1_User__c",
        "type": "Lookup(User)",
        "description": "#1 best-connected internal user for this contact"
      },
      {
        "label": "Rings Strongest Int Relationship 1 Name",
        "apiName": "ringsai__Strongest_Int_Rel_1_Name__c",
        "type": "Text(255)",
        "description": "Name of the teammate with the #1 strongest relationship to this person, as returned by Rings. Populated even when that teammate has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Strongest Int Rel 2 Last Engaged",
        "apiName": "ringsai__Strongest_Int_Rel_2_Last_At__c",
        "type": "DateTime",
        "description": "Most recent engagement time for #2"
      },
      {
        "label": "Rings Strongest Int Relationship 2 Score",
        "apiName": "ringsai__Strongest_Int_Rel_2_Score__c",
        "type": "Number(3,0)",
        "description": "Estimated relationship score (0-100) for #2"
      },
      {
        "label": "Rings Strongest Int Relationship 2 User",
        "apiName": "ringsai__Strongest_Int_Rel_2_User__c",
        "type": "Lookup(User)",
        "description": "#2 best-connected internal user for this contact"
      },
      {
        "label": "Rings Strongest Int Relationship 2 Name",
        "apiName": "ringsai__Strongest_Int_Rel_2_Name__c",
        "type": "Text(255)",
        "description": "Name of the teammate with the #2 strongest relationship to this person, as returned by Rings. Populated even when that teammate has no Salesforce user mapping, which is when the matching lookup field is blank."
      },
      {
        "label": "Rings Top Email User Last 3 Months",
        "apiName": "ringsai__Top_Email_User_Last_3_Months__c",
        "type": "Lookup(User)",
        "description": "Internal user with most emails in the last 3 months window"
      },
      {
        "label": "Rings Top Meeting User Last 3 Months",
        "apiName": "ringsai__Top_Meeting_User_Last_3_Months__c",
        "type": "Lookup(User)",
        "description": "Internal user with most meetings in the last 3 months window"
      },
      {
        "label": "Rings Top User Meetings Last 3 Months",
        "apiName": "ringsai__Top_Meeting_User_Meetings_Last_3_Months__c",
        "type": "Number(18,0)",
        "description": "Meeting count for the top meeting user (Top_Meeting_User_Last_3_Months__c) in the last 3 months window"
      }
    ]
  },
  {
    "object": "Opportunity",
    "note": "Mirrors the parent Account's company-level engagement data. Note that Rings ID is not unique here \u2014 opportunities at the same company share one company UUID.",
    "fields": [
      {
        "label": "Rings Emails All Time",
        "apiName": "ringsai__All_Time_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged across all time"
      },
      {
        "label": "Rings Meetings All Time",
        "apiName": "ringsai__All_Time_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged across all time"
      },
      {
        "label": "Rings City",
        "apiName": "ringsai__City__c",
        "type": "Text(100)",
        "description": "Company headquarters city from Rings"
      },
      {
        "label": "Rings Company Total PathPower Score",
        "apiName": "ringsai__Company_Total_PathPower_Score__c",
        "type": "Number (formula)",
        "description": "Numeric rank of Company_Total_PathPower__c (1=WEAK, 2=MODERATE, 3=STRONG, 4=VERY_STRONG, 5=STRONGEST). Populated by formula so list views can sort by connection strength correctly \u2014 the picklist itself sorts alphabetically."
      },
      {
        "label": "Rings Company Total PathPower",
        "apiName": "ringsai__Company_Total_PathPower__c",
        "type": "Picklist",
        "picklistValues": ["WEAK", "STRONG", "VERY_STRONG", "STRONGEST"],
        "description": "Company-level PathPower label for this opportunity's company"
      },
      {
        "label": "Rings Country",
        "apiName": "ringsai__Country_Code__c",
        "type": "Text(100)",
        "description": "Country from Rings"
      },
      {
        "label": "Rings Days Since Last Interaction",
        "apiName": "ringsai__Days_Since_Last_Contact__c",
        "type": "Number (formula)",
        "description": "Days since the last interaction \u2014 email or meeting (calculated from Rings Last Interaction)"
      },
      {
        "label": "Rings Description",
        "apiName": "ringsai__Description__c",
        "type": "Long Text(32000)",
        "description": "Company description from Rings"
      },
      {
        "label": "Rings Emails Last 12 Months",
        "apiName": "ringsai__Last_12_Months_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 12 months window"
      },
      {
        "label": "Rings Meetings Last 12 Months",
        "apiName": "ringsai__Last_12_Months_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 12 months window"
      },
      {
        "label": "Rings Emails Last 3 Months",
        "apiName": "ringsai__Last_3_Months_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 3 months window"
      },
      {
        "label": "Rings Meetings Last 3 Months",
        "apiName": "ringsai__Last_3_Months_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 3 months window"
      },
      {
        "label": "Rings Emails Last 6 Months",
        "apiName": "ringsai__Last_6_Months_Emails__c",
        "type": "Number(18,0)",
        "description": "Total emails exchanged in the last 6 months window"
      },
      {
        "label": "Rings Meetings Last 6 Months",
        "apiName": "ringsai__Last_6_Months_Meetings__c",
        "type": "Number(18,0)",
        "description": "Total meetings exchanged in the last 6 months window"
      },
      {
        "label": "Rings Last Interaction",
        "apiName": "ringsai__Last_Interaction_At__c",
        "type": "DateTime",
        "description": "Most recent Rings engagement for this company"
      },
      {
        "label": "Rings Last Synced",
        "apiName": "ringsai__Last_Synced_At__c",
        "type": "DateTime",
        "description": "Timestamp of the last successful Rings data sync for this record"
      },
      {
        "label": "Rings LinkedIn URL",
        "apiName": "ringsai__LinkedIn_URL__c",
        "type": "Url",
        "description": "Company LinkedIn URL from Rings"
      },
      {
        "label": "Rings Logo",
        "apiName": "ringsai__Logo_URL__c",
        "type": "Url",
        "description": "Company logo image URL from Rings"
      },
      {
        "label": "Rings Match Status",
        "apiName": "ringsai__Match_Status__c",
        "type": "Picklist",
        "picklistValues": ["Matched", "No Match", "Overridden"],
        "description": "Indicates how this record was matched to Rings AI. Overridden means a user manually selected the match."
      },
      {
        "label": "Rings Company Name",
        "apiName": "ringsai__Name__c",
        "type": "Text(255)",
        "description": "Company name from Rings"
      },
      {
        "label": "Rings Next Meeting",
        "apiName": "ringsai__Next_Meeting_At__c",
        "type": "DateTime",
        "description": "Next scheduled meeting with this opportunity's company"
      },
      {
        "label": "Rings ID",
        "apiName": "ringsai__Rings_Record_Id__c",
        "type": "Text(36)",
        "description": "Rings identifier for this opportunity's company. Not unique \u2014 multiple opportunities at the same company share one Rings company UUID."
      },
      {
        "label": "Rings State",
        "apiName": "ringsai__State__c",
        "type": "Text(100)",
        "description": "Company headquarters state/region from Rings"
      },
      {
        "label": "Rings Website",
        "apiName": "ringsai__Website__c",
        "type": "Url",
        "description": "Company website from Rings"
      }
    ]
  },
  {
    "object": "General Settings",
    "note": "Custom setting backing the Rings AI Settings page. Protected \u2014 not directly editable by users.",
    "fields": [
      {
        "label": "Interaction Display Limit",
        "apiName": "ringsai__Activity_Display_Limit__c",
        "type": "Number(18,0)",
        "description": "Maximum number of activities to display"
      },
      {
        "label": "App Enabled",
        "apiName": "ringsai__App_Enabled__c",
        "type": "Checkbox",
        "description": "Global switch to enable or disable the entire Rings AI app. When disabled, all scheduled jobs, API calls, and features are turned off."
      },
      {
        "label": "Bulk Sync Enabled",
        "apiName": "ringsai__Bulk_Sync_Enabled__c",
        "type": "Checkbox",
        "description": "Master switch for the bulk match-and-sync job. When off, RingsMatchAndSyncBatch short-circuits regardless of per-object toggles. The per-object Sync_X_Enabled__c flags control scope; this controls whether bulk sync runs at all."
      },
      {
        "label": "Bulk Sync Hour",
        "apiName": "ringsai__Bulk_Sync_Hour__c",
        "type": "Number(2,0)",
        "description": "Hour of the day (0-23, org timezone) the scheduled bulk match-and-sync job runs. Ignored when Sync Frequency = Hourly."
      },
      {
        "label": "Cache TTL (seconds)",
        "apiName": "ringsai__Cache_TTL__c",
        "type": "Number(18,0)",
        "description": "Cache time-to-live in seconds"
      },
      {
        "label": "Enable AI Summary",
        "apiName": "ringsai__Enable_AI_Summary__c",
        "type": "Checkbox",
        "description": "Enable/disable AI Summary component"
      },
      {
        "label": "Enable Interaction Timeline",
        "apiName": "ringsai__Enable_Activity_Timeline__c",
        "type": "Checkbox",
        "description": "Enable/disable Activity Timeline component"
      },
      {
        "label": "Enable Relationship Path",
        "apiName": "ringsai__Enable_Relationship_Path__c",
        "type": "Checkbox",
        "description": "Enable/disable Relationship Path component"
      },
      {
        "label": "Enable Verbose Logging",
        "apiName": "ringsai__Enable_Verbose_Logging__c",
        "type": "Checkbox",
        "description": "When enabled, logs all API calls (not just errors and key events)"
      },
      {
        "label": "API Environment",
        "apiName": "ringsai__Environment__c",
        "type": "Text(20)",
        "description": "Which Rings API environment the app talks to. Sandbox and Production select their matching Named Credential; both currently point at the production API host. Also drives the Open in Rings deep link."
      },
      {
        "label": "Last Company Sync At",
        "apiName": "ringsai__Last_Company_Sync_At__c",
        "type": "DateTime",
        "description": "Watermark for incremental company sync. The next run pulls companies modified after this timestamp."
      },
      {
        "label": "Last Person Sync At",
        "apiName": "ringsai__Last_Person_Sync_At__c",
        "type": "DateTime",
        "description": "Watermark for incremental person sync. The next run pulls persons modified after this timestamp."
      },
      {
        "label": "Log Retention Days",
        "apiName": "ringsai__Log_Retention_Days__c",
        "type": "Number(4,0)",
        "description": "Number of days to retain audit logs. Set to 0 to disable auto-deletion (warning: logs will accumulate indefinitely)."
      },
      {
        "label": "Max Records Per Sync Run",
        "apiName": "ringsai__Max_Records_Per_Sync_Run__c",
        "type": "Number(18,0)",
        "description": "Maximum number of records to process per scheduled sync run. Limits resource usage for large datasets. Capped at 100,000; blank or 0 uses the default of 10,000."
      },
      {
        "label": "Sync Account Enabled",
        "apiName": "ringsai__Sync_Account_Enabled__c",
        "type": "Checkbox",
        "description": "Enable syncing Account records with Rings API"
      },
      {
        "label": "Sync Contact Enabled",
        "apiName": "ringsai__Sync_Contact_Enabled__c",
        "type": "Checkbox",
        "description": "Enable syncing Contact records with Rings API"
      },
      {
        "label": "Sync Frequency",
        "apiName": "ringsai__Sync_Frequency__c",
        "type": "Text(20)",
        "description": "Field synchronization frequency (Hourly, Daily, Weekly)"
      },
      {
        "label": "Sync Lead Enabled",
        "apiName": "ringsai__Sync_Lead_Enabled__c",
        "type": "Checkbox",
        "description": "Enable syncing Lead records with Rings API"
      },
      {
        "label": "Sync Opportunity Enabled",
        "apiName": "ringsai__Sync_Opportunity_Enabled__c",
        "type": "Checkbox",
        "description": "Enable syncing Opportunity records with Rings API"
      },
      {
        "label": "Use Mock AI Summary",
        "apiName": "ringsai__Use_Mock_AI_Summary__c",
        "type": "Checkbox",
        "description": "Use mock data for AI Summary while real endpoint is unavailable"
      },
      {
        "label": "Use Mock Interaction History",
        "apiName": "ringsai__Use_Mock_Activity_History__c",
        "type": "Checkbox",
        "description": "Use mock data for Activity History while real endpoint is unavailable"
      },
      {
        "label": "Use Mock Relationship Paths",
        "apiName": "ringsai__Use_Mock_Relationship_Paths__c",
        "type": "Checkbox",
        "description": "Use mock data for Relationship Paths while real endpoint is unavailable"
      }
    ]
  },
  {
    "object": "Rings User Mapping",
    "note": "Links a Salesforce User to their Rings identity. Without a mapping, relationship paths and top-user fields stay blank for that person.",
    "fields": [
      {
        "label": "Rings Person UUID",
        "apiName": "ringsai__Rings_Person_UUID__c",
        "type": "Text(80)",
        "description": "The Rings person UUID associated with this user. Used to resolve internal users from recommended paths."
      },
      {
        "label": "Rings User Email",
        "apiName": "ringsai__Rings_User_Email__c",
        "type": "Text(255)",
        "description": "Email of the mapped Rings user, captured at mapping time for admin display."
      },
      {
        "label": "Rings User Name",
        "apiName": "ringsai__Rings_User_Name__c",
        "type": "Text(255)",
        "description": "Display name of the mapped Rings user, captured at mapping time for admin display."
      },
      {
        "label": "Rings User UUID",
        "apiName": "ringsai__Rings_User_UUID__c",
        "type": "Text(80)",
        "description": "Rings tenant-user UUID. Sent as the x-rings-user-id header so API responses are scoped to this user."
      },
      {
        "label": "Salesforce User",
        "apiName": "ringsai__User__c",
        "type": "Lookup(User)",
        "description": "The Salesforce user this mapping belongs to. One mapping per user."
      }
    ]
  },
  {
    "object": "API Log",
    "note": "The app's own log object. First stop when data didn't populate.",
    "fields": [
      {
        "label": "Endpoint",
        "apiName": "ringsai__Endpoint__c",
        "type": "Text(255)",
        "description": "API endpoint path that was called"
      },
      {
        "label": "Error Message",
        "apiName": "ringsai__Error_Message__c",
        "type": "Long Text(32768)",
        "description": "Error or exception message"
      },
      {
        "label": "Method",
        "apiName": "ringsai__Method__c",
        "type": "Text(10)",
        "description": "HTTP method (GET, POST, etc.)"
      },
      {
        "label": "Object Type",
        "apiName": "ringsai__Object_Type__c",
        "type": "Text(40)",
        "description": "Salesforce object type (Contact, Lead, Account, Opportunity)"
      },
      {
        "label": "Record Id",
        "apiName": "ringsai__Record_Id__c",
        "type": "Text(18)",
        "description": "Salesforce record ID related to this log entry"
      },
      {
        "label": "Response Time",
        "apiName": "ringsai__Response_Time__c",
        "type": "Number(10,0)",
        "description": "Response time in milliseconds"
      },
      {
        "label": "Severity",
        "apiName": "ringsai__Severity__c",
        "type": "Picklist",
        "picklistValues": ["ERROR", "WARN", "INFO"],
        "description": "Log severity level"
      },
      {
        "label": "Source Class",
        "apiName": "ringsai__Source_Class__c",
        "type": "Text(255)",
        "description": "Apex class that generated this log entry"
      },
      {
        "label": "Stack Trace",
        "apiName": "ringsai__Stack_Trace__c",
        "type": "Long Text(32768)",
        "description": "Exception stack trace for debugging"
      },
      {
        "label": "Status Code",
        "apiName": "ringsai__Status_Code__c",
        "type": "Number(3,0)",
        "description": "HTTP status code returned from API"
      },
      {
        "label": "Success",
        "apiName": "ringsai__Success__c",
        "type": "Checkbox",
        "description": "Indicates if API call was successful"
      }
    ]
  },
  {
    "object": "Rings List",
    "note": "One record per Rings list, maintained automatically by the sync. Filter and report on list membership through Rings List Member.",
    "fields": [
      {
        "label": "List Name",
        "apiName": "Name",
        "type": "Text(80)",
        "description": "The Rings list's name"
      },
      {
        "label": "Rings List UUID",
        "apiName": "ringsai__Rings_List_UUID__c",
        "type": "Text(36)",
        "description": "Unique Rings identifier for this list; the sync's upsert key"
      }
    ]
  },
  {
    "object": "Rings List Member",
    "note": "One record per list/record pair \u2014 the filterable, reportable form of list membership. Exactly one of Account/Contact/Lead is set per row.",
    "fields": [
      {
        "label": "Rings List",
        "apiName": "ringsai__Rings_List__c",
        "type": "Lookup(Rings List)",
        "description": "The Rings list this membership row belongs to (master-detail)"
      },
      {
        "label": "Account",
        "apiName": "ringsai__Account__c",
        "type": "Lookup(Account)",
        "description": "The Account that is a member of the list"
      },
      {
        "label": "Contact",
        "apiName": "ringsai__Contact__c",
        "type": "Lookup(Contact)",
        "description": "The Contact that is a member of the list"
      },
      {
        "label": "Lead",
        "apiName": "ringsai__Lead__c",
        "type": "Lookup(Lead)",
        "description": "The Lead that is a member of the list"
      },
      {
        "label": "Member Key",
        "apiName": "ringsai__Member_Key__c",
        "type": "Text(60)",
        "description": "List UUID + record Id; the sync's idempotency key"
      }
    ]
  }
]
