package recruiting // Activity is one recorded action by a recruiter. // // AutoCaptured is output only. It has no counterpart on LogActivityInput on purpose: the API cannot // express the claim, and the database discards it if anything tries. type Activity struct { ID string `json:"id"` ActorUserID string `json:"actor_user_id,omitempty"` ActorName string `json:"actor_name,omitempty"` Kind string `json:"kind"` Direction string `json:"direction"` Outcome string `json:"outcome"` CandidateID string `json:"candidate_id,omitempty"` CandidateName string `json:"candidate_name,omitempty"` ContactID string `json:"contact_id,omitempty"` RequisitionID string `json:"requisition_id,omitempty"` RequisitionTitle string `json:"requisition_title,omitempty"` ApplicationID string `json:"application_id,omitempty"` Body string `json:"body,omitempty"` AutoCaptured bool `json:"auto_captured"` OccurredAt string `json:"occurred_at"` CreatedAt string `json:"created_at"` } // LogActivityInput is what a human may record. Note the absence of auto_captured. type LogActivityInput struct { Kind string `json:"kind"` Direction string `json:"direction"` Outcome string `json:"outcome"` CandidateID string `json:"candidate_id"` ContactID string `json:"contact_id"` RequisitionID string `json:"requisition_id"` ApplicationID string `json:"application_id"` Body string `json:"body"` // OccurredAt allows yesterday's calls to be entered this morning. The database refuses a future // date, so backdating works and forward dating does not. OccurredAt string `json:"occurred_at"` } type ActivityFilter struct { Actor string CandidateID string RequisitionID string ApplicationID string Kind string Since string IncludeCaptured bool } type ActivityList struct { Activities []Activity `json:"activities"` Limit int `json:"limit"` Offset int `json:"offset"` Total int `json:"total"` } // RecruiterEffort is one person's window. Logged and Connects are reported separately because a hundred // dials with two conversations and a hundred conversations are different days, and one number reports // them identically. type RecruiterEffort struct { UserID string `json:"user_id,omitempty"` Name string `json:"name"` Logged int `json:"logged"` Connects int `json:"connects"` // ConnectRate is empty rather than "0.00" when nothing was logged, because a zero rate on no attempts // claims a failure that did not happen. ConnectRate string `json:"connect_rate,omitempty"` // Captured is what the platform recorded on their behalf, never pooled with logged effort. Captured int `json:"captured"` } type KindCount struct { Kind string `json:"kind"` Count int `json:"count"` } type ActivitySummaryView struct { Since string `json:"since"` TotalLogged int `json:"total_logged"` TotalConnects int `json:"total_connects"` TotalCaptured int `json:"total_captured"` ConnectRate string `json:"connect_rate,omitempty"` Recruiters []RecruiterEffort `json:"recruiters"` ByKind []KindCount `json:"by_kind"` } type CorrectNoteInput struct { Body string `json:"body"` }