{
  "ash" : {
    "generateResource" : "Y"
  },
  "attributes" : [
    {
      "allowsNull" : "N",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "_rowid",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "alertObjectID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "N",
      "ash" : {
        "ashName" : "alert_type",
        "ashType" : "Daylite.Activities.AlertObject.Type",
        "includeInResource" : "Y"
      },
      "columnName" : "alertTypeCode",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "alertTypeCode",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "createDate",
      "externalType" : "datetime",
      "name" : "createDate",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSDate"
    },
    {
      "allowsNull" : "N",
      "ash" : {
        "ashName" : "read?",
        "ashType" : ":boolean_integer",
        "includeInResource" : "Y"
      },
      "columnName" : "isReadCode",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "isReadCode",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "allowsNull" : "N",
      "ash" : {
        "ashName" : "shown?",
        "ashType" : ":boolean_integer",
        "includeInResource" : "Y"
      },
      "columnName" : "isShownCode",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "isShownCode",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "ashName" : "message",
        "includeInResource" : "Y"
      },
      "columnName" : "messageBlob",
      "externalType" : "text",
      "internalInfo" : {
        "_nameInObjectStore" : "message"
      },
      "name" : "messageBlob",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "ashName" : "reason_key",
        "includeInResource" : "N"
      },
      "columnName" : "reasonString",
      "externalType" : "char",
      "internalInfo" : {
        "_nameInObjectStore" : "reason"
      },
      "name" : "reasonString",
      "purpose" : "Deprecated. As of 2024 this was never read by the app or backend.",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : "0"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "receivingUserID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "receivingUserID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "sendingUserID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "sendingUserID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "ashName" : "user_info",
        "ashType" : ":plist",
        "includeInResource" : "Y"
      },
      "columnName" : "userInfoStorage",
      "externalType" : "object",
      "name" : "userInfoStorage",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSData"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "projectID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "projectID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "opportunityID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "opportunityID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "timeblockID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "timeblockID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "taskID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "taskID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "ash" : {
        "ashName" : "dismissed?",
        "ashType" : ":boolean_integer",
        "includeInResource" : "Y"
      },
      "columnName" : "dismissed",
      "defaultValue" : "0",
      "externalType" : "int",
      "isIndexed" : "Y",
      "name" : "dismissed",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "ash" : {
        "ashName" : "hidden?",
        "ashType" : ":boolean_integer",
        "includeInResource" : "Y"
      },
      "columnName" : "hidden",
      "defaultValue" : "0",
      "externalType" : "int",
      "isIndexed" : "Y",
      "name" : "hidden",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 0,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "deletionUserID",
      "externalType" : "int",
      "isIndexed" : "Y",
      "name" : "deletionUserID",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 0,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "deletionDate",
      "externalType" : "datetime",
      "isIndexed" : "Y",
      "name" : "deletionDate",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSDate"
    },
    {
      "addedInModelVersion" : 0,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "deletionIdentifier",
      "externalType" : "char",
      "isIndexed" : "Y",
      "name" : "deletionIdentifier",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : 255
    },
    {
      "addedInModelVersion" : 1152,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "url",
      "externalType" : "char",
      "name" : "url",
      "purpose" : "Represents the URL of a web link to open when the user interacts with the notification\n\nMust be set when the alert type is URLAlert",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : 2048
    },
    {
      "addedInModelVersion" : 1152,
      "ash" : {
        "ashName" : "authorized?",
        "ashType" : ":boolean_integer",
        "includeInResource" : "Y"
      },
      "columnName" : "authorized",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "authorized",
      "purpose" : "Determines whether the app adds a one-time auth token to the query params before opening.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 1152,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "title",
      "externalType" : "char",
      "name" : "title",
      "purpose" : "The alert's pre-localized title to display in the Notification List.\n\nThe title attribute's use is determined by the alert type.\n\nMust be non-null for URLAlerts (currently the only use case for the attribute)",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : 255
    },
    {
      "addedInModelVersion" : 1152,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "body",
      "externalType" : "char",
      "name" : "body",
      "purpose" : "The alert's pre-localized markdown-aware body to display in the Notification List; supports multiple lines.\n\nThe title attribute's use is determined by the alert type.\n\nOptional for URLAlerts (currently the only use case for the attribute)",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : 8192
    },
    {
      "addedInModelVersion" : 1152,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "primaryActionTitle",
      "externalType" : "char",
      "name" : "primaryActionTitle",
      "purpose" : "The alert's pre-localized title for its primary action button, such as opening a URL.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : 255
    },
    {
      "addedInModelVersion" : 1152,
      "allowsNull" : "N",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "section",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "section",
      "purpose" : "An identifier that determines which notification section the alert appears in.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "EnumInteger",
      "valueEnum" : "AlertObjectSection"
    }
  ],
  "className" : "GWAlertObject",
  "classProperties" : [
    "alertObjectID",
    "alertTypeCode",
    "createDate",
    "isReadCode",
    "isShownCode",
    "messageBlob",
    "reasonString",
    "receivingUserID",
    "sendingUserID",
    "userInfoStorage",
    "projectID",
    "opportunityID",
    "timeblockID",
    "taskID",
    "dismissed",
    "hidden",
    "deletionUserID",
    "deletionDate",
    "deletionIdentifier",
    "url",
    "authorized",
    "title",
    "body",
    "primaryActionTitle",
    "section",
    "receivingUser",
    "sendingUser",
    "project",
    "opportunity",
    "timeblock",
    "task"
  ],
  "domain" : "Activities",
  "enums" : [
    {
      "addedInModelVersion" : 1,
      "items" : [
        {
          "addedInModelVersion" : 1001,
          "name" : "Unknown",
          "purpose" : "Not part of original `MCAlertType` enum, but required to satisify the default column value.",
          "value" : 0
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "Delegation",
          "value" : 1000
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "MeetingInvitation",
          "value" : 1001
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "MeetingResponse",
          "value" : 1002
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "Reminder",
          "value" : 1003
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "DelegationUpdate",
          "value" : 1004
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "MeetingUpdate",
          "value" : 1005
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "MeetingDeletion",
          "value" : 1006
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "DelegationDeletion",
          "value" : 1007
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "MeetingUninvited",
          "value" : 1008
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "ExternalInvitationResponse",
          "value" : 1009
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "ExternalInvitationDeliveryFailure",
          "value" : 1010
        },
        {
          "addedInModelVersion" : 1100,
          "name" : "TimeblockVideoConferenceSchedulingError",
          "purpose" : "When a `TimeblockVideoConferenceLocation` cannot be scheduled, its state is set to `Failed` and this alert is created for the timeblock owner, and if different, the user whose configuration was used for the `TimeblockVideoConferenceLocation`.",
          "value" : 1011
        }
      ],
      "name" : "AlertObjectType",
      "type" : 1
    },
    {
      "addedInModelVersion" : 1152,
      "items" : [
        {
          "addedInModelVersion" : 1152,
          "name" : "Unknown",
          "value" : 0
        },
        {
          "addedInModelVersion" : 1152,
          "name" : "Billing",
          "value" : 1
        },
        {
          "addedInModelVersion" : 1152,
          "name" : "Support",
          "value" : 2
        },
        {
          "addedInModelVersion" : 1152,
          "name" : "Integrations",
          "value" : 3
        }
      ],
      "name" : "AlertObjectSection",
      "type" : 1
    }
  ],
  "externalName" : "AlertObject",
  "fetchSpecificationDictionary" : {

  },
  "isDatabasePreference" : false,
  "isTrashable" : true,
  "name" : "AlertObject",
  "primaryKeyAttributes" : [
    "alertObjectID"
  ],
  "record" : {
    "allowsRecord" : "Y",
    "isDirectlyUpdatable" : "Y"
  },
  "relationships" : [
    {
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "User",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "userID",
          "sourceAttribute" : "receivingUserID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "receivingUser",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "User",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "userID",
          "sourceAttribute" : "sendingUserID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "sendingUser",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "Project",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "projectID",
          "sourceAttribute" : "projectID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "project",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "Opportunity",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "opportunityID",
          "sourceAttribute" : "opportunityID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "opportunity",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "Timeblock",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "timeblockID",
          "sourceAttribute" : "timeblockID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "timeblock",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "Task",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "taskID",
          "sourceAttribute" : "taskID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "task",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    }
  ],
  "supportsPermissions" : false,
  "uniqueIdentifier" : "4"
}