import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
class EmploymentType(str, Enum):
FULL_TIME = 'FullTime'
PART_TIME = 'PartTime'
CASUAL = 'Casual'
CONTRACT = 'Contract'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AuditBase:
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created_by: Optional[str] = None
modified_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
modified_by: Optional[str] = None
deleted_date: Optional[datetime.datetime] = None
deleted_by: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Job(AuditBase):
id: int = 0
title: Optional[str] = None
employment_type: Optional[EmploymentType] = None
company: Optional[str] = None
location: Optional[str] = None
salary_range_lower: int = 0
salary_range_upper: int = 0
description: Optional[str] = None
applications: List[JobApplication] = field(default_factory=list)
closing: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AppUser:
id: Optional[str] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
display_name: Optional[str] = None
profile_url: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JobApplicationComment(AuditBase):
id: int = 0
# @References(typeof(AppUser))
app_user_id: Optional[str] = None
app_user: Optional[AppUser] = None
# @References(typeof(JobApplication))
job_application_id: int = 0
comment: Optional[str] = None
class JobApplicationStatus(str, Enum):
APPLIED = 'Applied'
PHONE_SCREENING = 'PhoneScreening'
PHONE_SCREENING_COMPLETED = 'PhoneScreeningCompleted'
INTERVIEW = 'Interview'
INTERVIEW_COMPLETED = 'InterviewCompleted'
OFFER = 'Offer'
DISQUALIFIED = 'Disqualified'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JobApplicationAttachment:
id: int = 0
# @References(typeof(JobApplication))
job_application_id: int = 0
file_name: Optional[str] = None
file_path: Optional[str] = None
content_type: Optional[str] = None
content_length: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JobApplicationEvent(AuditBase):
id: int = 0
# @References(typeof(JobApplication))
job_application_id: int = 0
# @References(typeof(AppUser))
app_user_id: Optional[str] = None
app_user: Optional[AppUser] = None
description: Optional[str] = None
status: Optional[JobApplicationStatus] = None
event_date: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PhoneScreen(AuditBase):
id: int = 0
# @References(typeof(AppUser))
app_user_id: Optional[str] = None
app_user: Optional[AppUser] = None
# @References(typeof(JobApplication))
job_application_id: int = 0
application_status: Optional[JobApplicationStatus] = None
notes: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Interview(AuditBase):
id: int = 0
booking_time: datetime.datetime = datetime.datetime(1, 1, 1)
# @References(typeof(JobApplication))
job_application_id: int = 0
# @References(typeof(AppUser))
app_user_id: Optional[str] = None
app_user: Optional[AppUser] = None
application_status: Optional[JobApplicationStatus] = None
notes: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JobOffer(AuditBase):
id: int = 0
salary_offer: int = 0
currency: Optional[str] = None
# @References(typeof(JobApplication))
job_application_id: int = 0
# @References(typeof(AppUser))
app_user_id: Optional[str] = None
app_user: Optional[AppUser] = None
notes: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class JobApplication:
id: int = 0
# @References(typeof(Job))
job_id: int = 0
# @References(typeof(Contact))
contact_id: int = 0
position: Optional[Job] = None
applicant: Optional[Contact] = None
comments: List[JobApplicationComment] = field(default_factory=list)
applied_date: datetime.datetime = datetime.datetime(1, 1, 1)
application_status: Optional[JobApplicationStatus] = None
attachments: List[JobApplicationAttachment] = field(default_factory=list)
events: List[JobApplicationEvent] = field(default_factory=list)
phone_screen: Optional[PhoneScreen] = None
interview: Optional[Interview] = None
job_offer: Optional[JobOffer] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Contact:
id: int = 0
# @Computed()
display_name: Optional[str] = None
profile_url: Optional[str] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
salary_expectation: Optional[int] = None
job_type: Optional[str] = None
availability_weeks: int = 0
preferred_work_type: Optional[EmploymentType] = None
preferred_location: Optional[str] = None
email: Optional[str] = None
phone: Optional[str] = None
skills: Optional[List[str]] = None
about: Optional[str] = None
applications: List[JobApplication] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UpdateContact(IPatchDb[Contact]):
id: int = 0
# @Validate(Validator="NotEmpty")
first_name: Optional[str] = None
# @Validate(Validator="NotEmpty")
last_name: Optional[str] = None
profile_url: Optional[str] = None
salary_expectation: Optional[int] = None
# @Validate(Validator="NotEmpty")
job_type: Optional[str] = None
availability_weeks: Optional[int] = None
preferred_work_type: Optional[EmploymentType] = None
preferred_location: Optional[str] = None
# @Validate(Validator="NotEmpty")
email: Optional[str] = None
phone: Optional[str] = None
skills: Optional[List[str]] = None
about: Optional[str] = None
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsv/reply/UpdateContact HTTP/1.1
Host: blazor-gallery.servicestack.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
id: 0,
firstName: String,
lastName: String,
profileUrl: String,
salaryExpectation: 0,
jobType: String,
availabilityWeeks: 0,
preferredWorkType: FullTime,
preferredLocation: String,
email: String,
phone: String,
skills:
[
String
],
about: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ], closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ] }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ], closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ], closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String, applications: [ { id: 0, jobId: 0, contactId: 0, position: { id: 0, title: String, employmentType: FullTime, company: String, location: String, salaryRangeLower: 0, salaryRangeUpper: 0, description: String, closing: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, applicant: { id: 0, displayName: String String, profileUrl: String, firstName: String, lastName: String, salaryExpectation: 0, jobType: String, availabilityWeeks: 0, preferredWorkType: FullTime, preferredLocation: String, email: String, phone: String, skills: [ String ], about: String }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ] }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ] }, comments: [ { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, comment: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], appliedDate: 0001-01-01, applicationStatus: Applied, attachments: [ { id: 0, jobApplicationId: 0, fileName: String, filePath: String, contentType: String, contentLength: 0 } ], events: [ { id: 0, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, description: String, status: Applied, eventDate: 0001-01-01, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } ], phoneScreen: { id: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, jobApplicationId: 0, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, interview: { id: 0, bookingTime: 0001-01-01, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, applicationStatus: Applied, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String }, jobOffer: { id: 0, salaryOffer: 0, currency: String, jobApplicationId: 0, appUserId: String, appUser: { id: String, firstName: String, lastName: String, displayName: String, profileUrl: String }, notes: String, createdDate: 0001-01-01, createdBy: String, modifiedDate: 0001-01-01, modifiedBy: String, deletedDate: 0001-01-01, deletedBy: String } } ] }