{
  "ash" : {
    "generateResource" : "Y"
  },
  "attributes" : [
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "createDate",
      "externalType" : "datetime",
      "name" : "createDate",
      "purpose" : "The date & time of when the `MeetingInvite` status was changed while process a users response.\n\nFor internal meeting invites, this is when the invitee user responds to the invitation.\n\nFor external meeting invites, this is when the backend processes the user's response. The ``externalSource`` property represents what kind of response was processed.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSDate"
    },
    {
      "allowsNull" : "N",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "_rowid",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "meetingHistoryID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "note",
      "externalType" : "char",
      "name" : "note",
      "purpose" : "A comment provided by the invitee when they responded to the invitation.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSString",
      "width" : "0"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "timeblockID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "timeblockID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "allowsNull" : "N",
      "ash" : {
        "ashName" : "type",
        "ashType" : "Daylite.Meetings.MeetingHistory.Type",
        "includeInResource" : "Y"
      },
      "columnName" : "typeCode",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "typeCode",
      "purpose" : "The type of response, indicating if the invitee accepted, declined, or responded with tentative.\n\nRaw value from `MeetingHistoryType`",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "userID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "userID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "l"
    },
    {
      "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" : 1001,
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "inviteType",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "inviteType",
      "purpose" : "The type of meeting invitation (internal, external), including which version of external invites.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "EnumInteger",
      "valueEnum" : "MeetingInvite.MeetingInviteType",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 1001,
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "externalSource",
      "defaultValue" : "0",
      "externalType" : "int",
      "name" : "externalSource",
      "purpose" : "The source of the `MeetingInvite` status change for an external invite.",
      "record" : {
        "allowsRecord" : "Y",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "EnumInteger",
      "valueEnum" : "MeetingHistoryExternalSource",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 1001,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "externalInvitationRecipientID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "externalInvitationRecipientID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 1001,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "contactID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "contactID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 1001,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "enteredByUserID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "enteredByUserID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    },
    {
      "addedInModelVersion" : 1001,
      "allowsNull" : "Y",
      "ash" : {
        "includeInResource" : "Y"
      },
      "columnName" : "meetingInviteID",
      "externalType" : "longlong",
      "isIndexed" : "Y",
      "name" : "meetingInviteID",
      "record" : {
        "allowsRecord" : "N",
        "isInternal" : "N",
        "isUpdatable" : "Y"
      },
      "valueClassName" : "NSNumber",
      "valueType" : "i"
    }
  ],
  "className" : "GWMeetingHistory",
  "classProperties" : [
    "createDate",
    "meetingHistoryID",
    "note",
    "timeblockID",
    "typeCode",
    "userID",
    "deletionUserID",
    "deletionDate",
    "deletionIdentifier",
    "inviteType",
    "externalSource",
    "externalInvitationRecipientID",
    "contactID",
    "enteredByUserID",
    "meetingInviteID",
    "timeblock",
    "user",
    "externalInvitationRecipient",
    "contact",
    "enteredByUser",
    "meetingInvite"
  ],
  "domain" : "Meetings",
  "enums" : [
    {
      "addedInModelVersion" : 1001,
      "items" : [
        {
          "addedInModelVersion" : 1001,
          "name" : "None",
          "purpose" : "No response.",
          "value" : 0
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "ICSResponse",
          "purpose" : "The invitee responded by emailing an ICS file, likely through a calendar app.",
          "value" : 1
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "WebResponse",
          "purpose" : "The invitee responded through the generated web page for the meeting invite, or through the inline HTML within an email invitation.",
          "value" : 2
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "ManualEntry",
          "purpose" : "A Daylite user manually updated the `MeetingInvite` status.\n\n- See Also: ``enteredByUser``, which is set to the user that manually updated the status.",
          "value" : 3
        }
      ],
      "name" : "MeetingHistoryExternalSource",
      "purpose" : "The source for a response to an external meeting invitation.",
      "type" : 1
    },
    {
      "addedInModelVersion" : 1001,
      "items" : [
        {
          "addedInModelVersion" : 1001,
          "name" : "Unknown",
          "purpose" : "Default value.",
          "value" : 0
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "Accept",
          "purpose" : "Indicates that the invitee accepted the invitation.\n\nOriginally defined in code as `GWMeetingHistoryAcceptType`.",
          "value" : 1
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "Reject",
          "purpose" : "Indicates that the invitee declined the invitation.\n\nOriginally defined in code as `GWMeetingHistoryRejectType`.",
          "value" : 2
        },
        {
          "addedInModelVersion" : 1001,
          "name" : "Tentative",
          "purpose" : "Indicates that the invitee responded with a tentative response.",
          "value" : 3
        }
      ],
      "name" : "MeetingHistoryType",
      "purpose" : "A response type from the invitee.\n\nOriginally defined in code as `GWMeetingHistoryType`.",
      "type" : 1
    }
  ],
  "externalName" : "MeetingHistory",
  "fetchSpecificationDictionary" : {

  },
  "isDatabasePreference" : false,
  "isTrashable" : true,
  "name" : "MeetingHistory",
  "primaryKeyAttributes" : [
    "meetingHistoryID"
  ],
  "purpose" : "An artifact for tracking responses to internal and Backend-based external meeting invites.",
  "record" : {
    "allowsRecord" : "Y",
    "isDirectlyUpdatable" : "Y"
  },
  "relationships" : [
    {
      "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" : "User",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "userID",
          "sourceAttribute" : "userID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "user",
      "purpose" : "The `User` for an internal invite.",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "addedInModelVersion" : 1001,
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "ExternalInvitationRecipient",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "externalInvitationRecipientID",
          "sourceAttribute" : "externalInvitationRecipientID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "externalInvitationRecipient",
      "purpose" : "The external invitation recipient that represents the email and ICS file that the invitee responded to.\n\nFor external invites only.",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "addedInModelVersion" : 1001,
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "Contact",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "contactID",
          "sourceAttribute" : "contactID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "contact",
      "purpose" : "The `Contact` for an external invite.",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "addedInModelVersion" : 1001,
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "User",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "userID",
          "sourceAttribute" : "enteredByUserID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "enteredByUser",
      "purpose" : "The user that entered a manual response.\n\nThis relationship is set when ``externalSource`` is `.manual`.",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    },
    {
      "addedInModelVersion" : 1001,
      "ash" : {
        "includeInResource" : "Y"
      },
      "destination" : "MeetingInvite",
      "isToMany" : "N",
      "joins" : [
        {
          "destinationAttribute" : "meetingInviteID",
          "sourceAttribute" : "meetingInviteID"
        }
      ],
      "joinSemantic" : "EOInnerJoin",
      "name" : "meetingInvite",
      "purpose" : "The `MeetingInvite` that was responded to.",
      "record" : {
        "allowsRecord" : "Y",
        "isEmbedded" : "N",
        "isInternal" : "N",
        "propagatesUpdates" : "N"
      }
    }
  ],
  "supportsPermissions" : false,
  "uniqueIdentifier" : "56"
}