# coding: utf-8

"""
    hrm-api

    Hiring Manager can view all the pending tasks and evaluate the interview if any pending interviews.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: phenom
"""

import pprint
import re  # noqa: F401

import six

class JobDetails(object):
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'company_name': 'str',
        'language': 'str',
        'apply_count': 'float',
        'job_requirements': 'str',
        'job_title': 'str',
        'job_code': 'str',
        'source': 'str',
        'updated_date': 'str',
        'posted_date': 'str',
        'is_ever_green_req': 'str',
        'job_family': 'str',
        'agency_list': 'list[object]',
        'ats': 'str',
        'preferred_languages': 'list[object]',
        'posted_by': 'JobDetailsPostedBy',
        'posting_status': 'str',
        'fit_score_meta_data': 'JobDetailsFitScoreMetaData',
        'relation_type': 'JobDetailsRelationType',
        'description_teaser': 'str',
        'description': 'str',
        'job_url_map': 'object',
        'visibility_type': 'str',
        'site_type': 'str',
        'is_private': 'bool',
        'internal_category_id': 'str',
        'language_code': 'str',
        'hiring_manager': 'JobDetailsHiringManager',
        'multi_category': 'list[JobDetailsMultiCategory]',
        'publish_to': 'list[JobDetailsPublishTo]',
        'locale': 'str',
        'display_career_site': 'bool',
        'assigned': 'list[JobDetailsAssigned]',
        'job_zone': 'str',
        'multi_location': 'list[JobDetailsMultiLocation]',
        'job_merge_score': 'float',
        'benefits': 'str',
        'job_id': 'str',
        'job_category': 'str',
        'job_experience': 'str',
        'status': 'str',
        'tenant_specific_additional_fields': 'list[JobDetailsTenantSpecificAdditionalFields]',
        'visibility_locale': 'list[str]',
        'default': 'bool',
        'is_deleted': 'bool',
        'country_code': 'str',
        'candidates_in_process': 'float',
        'candidates_to_be_evaluated': 'float',
        'candidates_to_be_offered': 'float',
        'candidates_reviewed': 'float',
        'pending_candidates': 'float',
        'candidates_evaluated': 'float',
        'number_of_candidates': 'float',
        'interview_scheduled_count': 'float',
        'candidates_to_be_reviewed': 'float',
        'user_role': 'str',
        'company': 'str',
        'hashkey': 'str',
        'apply_url': 'str',
        'onet': 'list[JobDetailsOnet]',
        'variations': 'list[JobDetailsVariations]',
        'hiring_team_list': 'list[JobDetailsHiringTeamList]',
        'department': 'str',
        'job_type': 'str',
        'visibility_site_type': 'list[str]',
        'is_confidential': 'bool',
        'skills_and_experience': 'str',
        'scrape_time': 'str',
        'created_date': 'str',
        'job_visibility': 'str',
        'job_location': 'str',
        'publish': 'bool',
        'is_critical': 'bool',
        'hiring_manager_list': 'list[JobDetailsHiringManagerList]',
        'candidates_video_evaluated': 'float',
        'candidates_to_be_video_evaluated': 'float',
        'review_criteria_refinement_disabled': 'bool'
    }

    attribute_map = {
        'company_name': 'companyName',
        'language': 'language',
        'apply_count': 'applyCount',
        'job_requirements': 'jobRequirements',
        'job_title': 'jobTitle',
        'job_code': 'jobCode',
        'source': 'source',
        'updated_date': 'updatedDate',
        'posted_date': 'postedDate',
        'is_ever_green_req': 'isEverGreenReq',
        'job_family': 'jobFamily',
        'agency_list': 'agencyList',
        'ats': 'ats',
        'preferred_languages': 'preferred_languages',
        'posted_by': 'postedBy',
        'posting_status': 'postingStatus',
        'fit_score_meta_data': 'fitScoreMetaData',
        'relation_type': 'relation_type',
        'description_teaser': 'descriptionTeaser',
        'description': 'description',
        'job_url_map': 'jobUrlMap',
        'visibility_type': 'visibilityType',
        'site_type': 'siteType',
        'is_private': 'isPrivate',
        'internal_category_id': 'internalCategoryId',
        'language_code': 'languageCode',
        'hiring_manager': 'hiringManager',
        'multi_category': 'multi_category',
        'publish_to': 'publishTo',
        'locale': 'locale',
        'display_career_site': 'displayCareerSite',
        'assigned': 'assigned',
        'job_zone': 'job_zone',
        'multi_location': 'multi_location',
        'job_merge_score': 'jobMergeScore',
        'benefits': 'benefits',
        'job_id': 'jobId',
        'job_category': 'jobCategory',
        'job_experience': 'job_experience',
        'status': 'status',
        'tenant_specific_additional_fields': 'tenantSpecific_additionalFields',
        'visibility_locale': 'visibilityLocale',
        'default': 'default',
        'is_deleted': 'isDeleted',
        'country_code': 'countryCode',
        'candidates_in_process': 'candidatesInProcess',
        'candidates_to_be_evaluated': 'candidatesToBeEvaluated',
        'candidates_to_be_offered': 'candidatesToBeOffered',
        'candidates_reviewed': 'candidatesReviewed',
        'pending_candidates': 'pendingCandidates',
        'candidates_evaluated': 'candidatesEvaluated',
        'number_of_candidates': 'numberOfCandidates',
        'interview_scheduled_count': 'interviewScheduledCount',
        'candidates_to_be_reviewed': 'candidatesToBeReviewed',
        'user_role': 'userRole',
        'company': 'company',
        'hashkey': 'hashkey',
        'apply_url': 'applyUrl',
        'onet': 'onet',
        'variations': 'variations',
        'hiring_team_list': 'hiringTeamList',
        'department': 'department',
        'job_type': 'jobType',
        'visibility_site_type': 'visibilitySiteType',
        'is_confidential': 'isConfidential',
        'skills_and_experience': 'skillsAndExperience',
        'scrape_time': 'scrapeTime',
        'created_date': 'createdDate',
        'job_visibility': 'jobVisibility',
        'job_location': 'jobLocation',
        'publish': 'publish',
        'is_critical': 'isCritical',
        'hiring_manager_list': 'hiringManagerList',
        'candidates_video_evaluated': 'candidatesVideoEvaluated',
        'candidates_to_be_video_evaluated': 'candidatesToBeVideoEvaluated',
        'review_criteria_refinement_disabled': 'reviewCriteriaRefinementDisabled'
    }

    def __init__(self, company_name=None, language=None, apply_count=None, job_requirements=None, job_title=None, job_code=None, source=None, updated_date=None, posted_date=None, is_ever_green_req=None, job_family=None, agency_list=None, ats=None, preferred_languages=None, posted_by=None, posting_status=None, fit_score_meta_data=None, relation_type=None, description_teaser=None, description=None, job_url_map=None, visibility_type=None, site_type=None, is_private=None, internal_category_id=None, language_code=None, hiring_manager=None, multi_category=None, publish_to=None, locale=None, display_career_site=None, assigned=None, job_zone=None, multi_location=None, job_merge_score=None, benefits=None, job_id=None, job_category=None, job_experience=None, status=None, tenant_specific_additional_fields=None, visibility_locale=None, default=None, is_deleted=None, country_code=None, candidates_in_process=None, candidates_to_be_evaluated=None, candidates_to_be_offered=None, candidates_reviewed=None, pending_candidates=None, candidates_evaluated=None, number_of_candidates=None, interview_scheduled_count=None, candidates_to_be_reviewed=None, user_role=None, company=None, hashkey=None, apply_url=None, onet=None, variations=None, hiring_team_list=None, department=None, job_type=None, visibility_site_type=None, is_confidential=None, skills_and_experience=None, scrape_time=None, created_date=None, job_visibility=None, job_location=None, publish=None, is_critical=None, hiring_manager_list=None, candidates_video_evaluated=None, candidates_to_be_video_evaluated=None, review_criteria_refinement_disabled=None):  # noqa: E501
        """JobDetails - a model defined in Swagger"""  # noqa: E501
        self._company_name = None
        self._language = None
        self._apply_count = None
        self._job_requirements = None
        self._job_title = None
        self._job_code = None
        self._source = None
        self._updated_date = None
        self._posted_date = None
        self._is_ever_green_req = None
        self._job_family = None
        self._agency_list = None
        self._ats = None
        self._preferred_languages = None
        self._posted_by = None
        self._posting_status = None
        self._fit_score_meta_data = None
        self._relation_type = None
        self._description_teaser = None
        self._description = None
        self._job_url_map = None
        self._visibility_type = None
        self._site_type = None
        self._is_private = None
        self._internal_category_id = None
        self._language_code = None
        self._hiring_manager = None
        self._multi_category = None
        self._publish_to = None
        self._locale = None
        self._display_career_site = None
        self._assigned = None
        self._job_zone = None
        self._multi_location = None
        self._job_merge_score = None
        self._benefits = None
        self._job_id = None
        self._job_category = None
        self._job_experience = None
        self._status = None
        self._tenant_specific_additional_fields = None
        self._visibility_locale = None
        self._default = None
        self._is_deleted = None
        self._country_code = None
        self._candidates_in_process = None
        self._candidates_to_be_evaluated = None
        self._candidates_to_be_offered = None
        self._candidates_reviewed = None
        self._pending_candidates = None
        self._candidates_evaluated = None
        self._number_of_candidates = None
        self._interview_scheduled_count = None
        self._candidates_to_be_reviewed = None
        self._user_role = None
        self._company = None
        self._hashkey = None
        self._apply_url = None
        self._onet = None
        self._variations = None
        self._hiring_team_list = None
        self._department = None
        self._job_type = None
        self._visibility_site_type = None
        self._is_confidential = None
        self._skills_and_experience = None
        self._scrape_time = None
        self._created_date = None
        self._job_visibility = None
        self._job_location = None
        self._publish = None
        self._is_critical = None
        self._hiring_manager_list = None
        self._candidates_video_evaluated = None
        self._candidates_to_be_video_evaluated = None
        self._review_criteria_refinement_disabled = None
        self.discriminator = None
        if company_name is not None:
            self.company_name = company_name
        if language is not None:
            self.language = language
        if apply_count is not None:
            self.apply_count = apply_count
        if job_requirements is not None:
            self.job_requirements = job_requirements
        if job_title is not None:
            self.job_title = job_title
        if job_code is not None:
            self.job_code = job_code
        if source is not None:
            self.source = source
        if updated_date is not None:
            self.updated_date = updated_date
        if posted_date is not None:
            self.posted_date = posted_date
        if is_ever_green_req is not None:
            self.is_ever_green_req = is_ever_green_req
        if job_family is not None:
            self.job_family = job_family
        if agency_list is not None:
            self.agency_list = agency_list
        if ats is not None:
            self.ats = ats
        if preferred_languages is not None:
            self.preferred_languages = preferred_languages
        if posted_by is not None:
            self.posted_by = posted_by
        if posting_status is not None:
            self.posting_status = posting_status
        if fit_score_meta_data is not None:
            self.fit_score_meta_data = fit_score_meta_data
        if relation_type is not None:
            self.relation_type = relation_type
        if description_teaser is not None:
            self.description_teaser = description_teaser
        if description is not None:
            self.description = description
        if job_url_map is not None:
            self.job_url_map = job_url_map
        if visibility_type is not None:
            self.visibility_type = visibility_type
        if site_type is not None:
            self.site_type = site_type
        if is_private is not None:
            self.is_private = is_private
        if internal_category_id is not None:
            self.internal_category_id = internal_category_id
        if language_code is not None:
            self.language_code = language_code
        if hiring_manager is not None:
            self.hiring_manager = hiring_manager
        if multi_category is not None:
            self.multi_category = multi_category
        if publish_to is not None:
            self.publish_to = publish_to
        if locale is not None:
            self.locale = locale
        if display_career_site is not None:
            self.display_career_site = display_career_site
        if assigned is not None:
            self.assigned = assigned
        if job_zone is not None:
            self.job_zone = job_zone
        if multi_location is not None:
            self.multi_location = multi_location
        if job_merge_score is not None:
            self.job_merge_score = job_merge_score
        if benefits is not None:
            self.benefits = benefits
        if job_id is not None:
            self.job_id = job_id
        if job_category is not None:
            self.job_category = job_category
        if job_experience is not None:
            self.job_experience = job_experience
        if status is not None:
            self.status = status
        if tenant_specific_additional_fields is not None:
            self.tenant_specific_additional_fields = tenant_specific_additional_fields
        if visibility_locale is not None:
            self.visibility_locale = visibility_locale
        if default is not None:
            self.default = default
        if is_deleted is not None:
            self.is_deleted = is_deleted
        if country_code is not None:
            self.country_code = country_code
        if candidates_in_process is not None:
            self.candidates_in_process = candidates_in_process
        if candidates_to_be_evaluated is not None:
            self.candidates_to_be_evaluated = candidates_to_be_evaluated
        if candidates_to_be_offered is not None:
            self.candidates_to_be_offered = candidates_to_be_offered
        if candidates_reviewed is not None:
            self.candidates_reviewed = candidates_reviewed
        if pending_candidates is not None:
            self.pending_candidates = pending_candidates
        if candidates_evaluated is not None:
            self.candidates_evaluated = candidates_evaluated
        if number_of_candidates is not None:
            self.number_of_candidates = number_of_candidates
        if interview_scheduled_count is not None:
            self.interview_scheduled_count = interview_scheduled_count
        if candidates_to_be_reviewed is not None:
            self.candidates_to_be_reviewed = candidates_to_be_reviewed
        if user_role is not None:
            self.user_role = user_role
        if company is not None:
            self.company = company
        if hashkey is not None:
            self.hashkey = hashkey
        if apply_url is not None:
            self.apply_url = apply_url
        if onet is not None:
            self.onet = onet
        if variations is not None:
            self.variations = variations
        if hiring_team_list is not None:
            self.hiring_team_list = hiring_team_list
        if department is not None:
            self.department = department
        if job_type is not None:
            self.job_type = job_type
        if visibility_site_type is not None:
            self.visibility_site_type = visibility_site_type
        if is_confidential is not None:
            self.is_confidential = is_confidential
        if skills_and_experience is not None:
            self.skills_and_experience = skills_and_experience
        if scrape_time is not None:
            self.scrape_time = scrape_time
        if created_date is not None:
            self.created_date = created_date
        if job_visibility is not None:
            self.job_visibility = job_visibility
        if job_location is not None:
            self.job_location = job_location
        if publish is not None:
            self.publish = publish
        if is_critical is not None:
            self.is_critical = is_critical
        if hiring_manager_list is not None:
            self.hiring_manager_list = hiring_manager_list
        if candidates_video_evaluated is not None:
            self.candidates_video_evaluated = candidates_video_evaluated
        if candidates_to_be_video_evaluated is not None:
            self.candidates_to_be_video_evaluated = candidates_to_be_video_evaluated
        if review_criteria_refinement_disabled is not None:
            self.review_criteria_refinement_disabled = review_criteria_refinement_disabled

    @property
    def company_name(self):
        """Gets the company_name of this JobDetails.  # noqa: E501

        Name of the company under which the job is posted.  # noqa: E501

        :return: The company_name of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._company_name

    @company_name.setter
    def company_name(self, company_name):
        """Sets the company_name of this JobDetails.

        Name of the company under which the job is posted.  # noqa: E501

        :param company_name: The company_name of this JobDetails.  # noqa: E501
        :type: str
        """

        self._company_name = company_name

    @property
    def language(self):
        """Gets the language of this JobDetails.  # noqa: E501

        Language of the job.  # noqa: E501

        :return: The language of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._language

    @language.setter
    def language(self, language):
        """Sets the language of this JobDetails.

        Language of the job.  # noqa: E501

        :param language: The language of this JobDetails.  # noqa: E501
        :type: str
        """

        self._language = language

    @property
    def apply_count(self):
        """Gets the apply_count of this JobDetails.  # noqa: E501

        Number of candidates who have applied for the job.  # noqa: E501

        :return: The apply_count of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._apply_count

    @apply_count.setter
    def apply_count(self, apply_count):
        """Sets the apply_count of this JobDetails.

        Number of candidates who have applied for the job.  # noqa: E501

        :param apply_count: The apply_count of this JobDetails.  # noqa: E501
        :type: float
        """

        self._apply_count = apply_count

    @property
    def job_requirements(self):
        """Gets the job_requirements of this JobDetails.  # noqa: E501

        Requirements of the job.  # noqa: E501

        :return: The job_requirements of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_requirements

    @job_requirements.setter
    def job_requirements(self, job_requirements):
        """Sets the job_requirements of this JobDetails.

        Requirements of the job.  # noqa: E501

        :param job_requirements: The job_requirements of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_requirements = job_requirements

    @property
    def job_title(self):
        """Gets the job_title of this JobDetails.  # noqa: E501

        Title of the job.  # noqa: E501

        :return: The job_title of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_title

    @job_title.setter
    def job_title(self, job_title):
        """Sets the job_title of this JobDetails.

        Title of the job.  # noqa: E501

        :param job_title: The job_title of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_title = job_title

    @property
    def job_code(self):
        """Gets the job_code of this JobDetails.  # noqa: E501

        Code of the job.  # noqa: E501

        :return: The job_code of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_code

    @job_code.setter
    def job_code(self, job_code):
        """Sets the job_code of this JobDetails.

        Code of the job.  # noqa: E501

        :param job_code: The job_code of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_code = job_code

    @property
    def source(self):
        """Gets the source of this JobDetails.  # noqa: E501

        Tells the source of the job.  # noqa: E501

        :return: The source of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._source

    @source.setter
    def source(self, source):
        """Sets the source of this JobDetails.

        Tells the source of the job.  # noqa: E501

        :param source: The source of this JobDetails.  # noqa: E501
        :type: str
        """
        allowed_values = ["HRM", "CRM", "WORKDAY"]  # noqa: E501
        if source not in allowed_values:
            raise ValueError(
                "Invalid value for `source` ({0}), must be one of {1}"  # noqa: E501
                .format(source, allowed_values)
            )

        self._source = source

    @property
    def updated_date(self):
        """Gets the updated_date of this JobDetails.  # noqa: E501

        Latest job updated date.  # noqa: E501

        :return: The updated_date of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._updated_date

    @updated_date.setter
    def updated_date(self, updated_date):
        """Sets the updated_date of this JobDetails.

        Latest job updated date.  # noqa: E501

        :param updated_date: The updated_date of this JobDetails.  # noqa: E501
        :type: str
        """

        self._updated_date = updated_date

    @property
    def posted_date(self):
        """Gets the posted_date of this JobDetails.  # noqa: E501

        Job posted date.  # noqa: E501

        :return: The posted_date of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._posted_date

    @posted_date.setter
    def posted_date(self, posted_date):
        """Sets the posted_date of this JobDetails.

        Job posted date.  # noqa: E501

        :param posted_date: The posted_date of this JobDetails.  # noqa: E501
        :type: str
        """

        self._posted_date = posted_date

    @property
    def is_ever_green_req(self):
        """Gets the is_ever_green_req of this JobDetails.  # noqa: E501

        Indicates if the job is an evergreen requisition.  # noqa: E501

        :return: The is_ever_green_req of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._is_ever_green_req

    @is_ever_green_req.setter
    def is_ever_green_req(self, is_ever_green_req):
        """Sets the is_ever_green_req of this JobDetails.

        Indicates if the job is an evergreen requisition.  # noqa: E501

        :param is_ever_green_req: The is_ever_green_req of this JobDetails.  # noqa: E501
        :type: str
        """

        self._is_ever_green_req = is_ever_green_req

    @property
    def job_family(self):
        """Gets the job_family of this JobDetails.  # noqa: E501

        Family to which the job belongs.  # noqa: E501

        :return: The job_family of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_family

    @job_family.setter
    def job_family(self, job_family):
        """Sets the job_family of this JobDetails.

        Family to which the job belongs.  # noqa: E501

        :param job_family: The job_family of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_family = job_family

    @property
    def agency_list(self):
        """Gets the agency_list of this JobDetails.  # noqa: E501

        List of agencies associated with the job.  # noqa: E501

        :return: The agency_list of this JobDetails.  # noqa: E501
        :rtype: list[object]
        """
        return self._agency_list

    @agency_list.setter
    def agency_list(self, agency_list):
        """Sets the agency_list of this JobDetails.

        List of agencies associated with the job.  # noqa: E501

        :param agency_list: The agency_list of this JobDetails.  # noqa: E501
        :type: list[object]
        """

        self._agency_list = agency_list

    @property
    def ats(self):
        """Gets the ats of this JobDetails.  # noqa: E501

        Applicant Tracking System identifier.  # noqa: E501

        :return: The ats of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._ats

    @ats.setter
    def ats(self, ats):
        """Sets the ats of this JobDetails.

        Applicant Tracking System identifier.  # noqa: E501

        :param ats: The ats of this JobDetails.  # noqa: E501
        :type: str
        """

        self._ats = ats

    @property
    def preferred_languages(self):
        """Gets the preferred_languages of this JobDetails.  # noqa: E501

        Preferred languages for the job.  # noqa: E501

        :return: The preferred_languages of this JobDetails.  # noqa: E501
        :rtype: list[object]
        """
        return self._preferred_languages

    @preferred_languages.setter
    def preferred_languages(self, preferred_languages):
        """Sets the preferred_languages of this JobDetails.

        Preferred languages for the job.  # noqa: E501

        :param preferred_languages: The preferred_languages of this JobDetails.  # noqa: E501
        :type: list[object]
        """

        self._preferred_languages = preferred_languages

    @property
    def posted_by(self):
        """Gets the posted_by of this JobDetails.  # noqa: E501


        :return: The posted_by of this JobDetails.  # noqa: E501
        :rtype: JobDetailsPostedBy
        """
        return self._posted_by

    @posted_by.setter
    def posted_by(self, posted_by):
        """Sets the posted_by of this JobDetails.


        :param posted_by: The posted_by of this JobDetails.  # noqa: E501
        :type: JobDetailsPostedBy
        """

        self._posted_by = posted_by

    @property
    def posting_status(self):
        """Gets the posting_status of this JobDetails.  # noqa: E501

        Status of the job posting.  # noqa: E501

        :return: The posting_status of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._posting_status

    @posting_status.setter
    def posting_status(self, posting_status):
        """Sets the posting_status of this JobDetails.

        Status of the job posting.  # noqa: E501

        :param posting_status: The posting_status of this JobDetails.  # noqa: E501
        :type: str
        """

        self._posting_status = posting_status

    @property
    def fit_score_meta_data(self):
        """Gets the fit_score_meta_data of this JobDetails.  # noqa: E501


        :return: The fit_score_meta_data of this JobDetails.  # noqa: E501
        :rtype: JobDetailsFitScoreMetaData
        """
        return self._fit_score_meta_data

    @fit_score_meta_data.setter
    def fit_score_meta_data(self, fit_score_meta_data):
        """Sets the fit_score_meta_data of this JobDetails.


        :param fit_score_meta_data: The fit_score_meta_data of this JobDetails.  # noqa: E501
        :type: JobDetailsFitScoreMetaData
        """

        self._fit_score_meta_data = fit_score_meta_data

    @property
    def relation_type(self):
        """Gets the relation_type of this JobDetails.  # noqa: E501


        :return: The relation_type of this JobDetails.  # noqa: E501
        :rtype: JobDetailsRelationType
        """
        return self._relation_type

    @relation_type.setter
    def relation_type(self, relation_type):
        """Sets the relation_type of this JobDetails.


        :param relation_type: The relation_type of this JobDetails.  # noqa: E501
        :type: JobDetailsRelationType
        """

        self._relation_type = relation_type

    @property
    def description_teaser(self):
        """Gets the description_teaser of this JobDetails.  # noqa: E501

        Teaser text related to the job description.  # noqa: E501

        :return: The description_teaser of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._description_teaser

    @description_teaser.setter
    def description_teaser(self, description_teaser):
        """Sets the description_teaser of this JobDetails.

        Teaser text related to the job description.  # noqa: E501

        :param description_teaser: The description_teaser of this JobDetails.  # noqa: E501
        :type: str
        """

        self._description_teaser = description_teaser

    @property
    def description(self):
        """Gets the description of this JobDetails.  # noqa: E501

        Job's description.  # noqa: E501

        :return: The description of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this JobDetails.

        Job's description.  # noqa: E501

        :param description: The description of this JobDetails.  # noqa: E501
        :type: str
        """

        self._description = description

    @property
    def job_url_map(self):
        """Gets the job_url_map of this JobDetails.  # noqa: E501

        Mapping of URLs associated with the job.  # noqa: E501

        :return: The job_url_map of this JobDetails.  # noqa: E501
        :rtype: object
        """
        return self._job_url_map

    @job_url_map.setter
    def job_url_map(self, job_url_map):
        """Sets the job_url_map of this JobDetails.

        Mapping of URLs associated with the job.  # noqa: E501

        :param job_url_map: The job_url_map of this JobDetails.  # noqa: E501
        :type: object
        """

        self._job_url_map = job_url_map

    @property
    def visibility_type(self):
        """Gets the visibility_type of this JobDetails.  # noqa: E501

        Visibility type of the job.  # noqa: E501

        :return: The visibility_type of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._visibility_type

    @visibility_type.setter
    def visibility_type(self, visibility_type):
        """Sets the visibility_type of this JobDetails.

        Visibility type of the job.  # noqa: E501

        :param visibility_type: The visibility_type of this JobDetails.  # noqa: E501
        :type: str
        """

        self._visibility_type = visibility_type

    @property
    def site_type(self):
        """Gets the site_type of this JobDetails.  # noqa: E501

        Type of site associated with the job.  # noqa: E501

        :return: The site_type of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._site_type

    @site_type.setter
    def site_type(self, site_type):
        """Sets the site_type of this JobDetails.

        Type of site associated with the job.  # noqa: E501

        :param site_type: The site_type of this JobDetails.  # noqa: E501
        :type: str
        """

        self._site_type = site_type

    @property
    def is_private(self):
        """Gets the is_private of this JobDetails.  # noqa: E501

        Whether the job is private (true or false).  # noqa: E501

        :return: The is_private of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._is_private

    @is_private.setter
    def is_private(self, is_private):
        """Sets the is_private of this JobDetails.

        Whether the job is private (true or false).  # noqa: E501

        :param is_private: The is_private of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._is_private = is_private

    @property
    def internal_category_id(self):
        """Gets the internal_category_id of this JobDetails.  # noqa: E501

        Internal category ID.  # noqa: E501

        :return: The internal_category_id of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._internal_category_id

    @internal_category_id.setter
    def internal_category_id(self, internal_category_id):
        """Sets the internal_category_id of this JobDetails.

        Internal category ID.  # noqa: E501

        :param internal_category_id: The internal_category_id of this JobDetails.  # noqa: E501
        :type: str
        """

        self._internal_category_id = internal_category_id

    @property
    def language_code(self):
        """Gets the language_code of this JobDetails.  # noqa: E501

        Language code.  # noqa: E501

        :return: The language_code of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._language_code

    @language_code.setter
    def language_code(self, language_code):
        """Sets the language_code of this JobDetails.

        Language code.  # noqa: E501

        :param language_code: The language_code of this JobDetails.  # noqa: E501
        :type: str
        """

        self._language_code = language_code

    @property
    def hiring_manager(self):
        """Gets the hiring_manager of this JobDetails.  # noqa: E501


        :return: The hiring_manager of this JobDetails.  # noqa: E501
        :rtype: JobDetailsHiringManager
        """
        return self._hiring_manager

    @hiring_manager.setter
    def hiring_manager(self, hiring_manager):
        """Sets the hiring_manager of this JobDetails.


        :param hiring_manager: The hiring_manager of this JobDetails.  # noqa: E501
        :type: JobDetailsHiringManager
        """

        self._hiring_manager = hiring_manager

    @property
    def multi_category(self):
        """Gets the multi_category of this JobDetails.  # noqa: E501

        List of categories associated with the job.  # noqa: E501

        :return: The multi_category of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsMultiCategory]
        """
        return self._multi_category

    @multi_category.setter
    def multi_category(self, multi_category):
        """Sets the multi_category of this JobDetails.

        List of categories associated with the job.  # noqa: E501

        :param multi_category: The multi_category of this JobDetails.  # noqa: E501
        :type: list[JobDetailsMultiCategory]
        """

        self._multi_category = multi_category

    @property
    def publish_to(self):
        """Gets the publish_to of this JobDetails.  # noqa: E501

        Details of where the job is published.  # noqa: E501

        :return: The publish_to of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsPublishTo]
        """
        return self._publish_to

    @publish_to.setter
    def publish_to(self, publish_to):
        """Sets the publish_to of this JobDetails.

        Details of where the job is published.  # noqa: E501

        :param publish_to: The publish_to of this JobDetails.  # noqa: E501
        :type: list[JobDetailsPublishTo]
        """

        self._publish_to = publish_to

    @property
    def locale(self):
        """Gets the locale of this JobDetails.  # noqa: E501

        Default language of the job.  # noqa: E501

        :return: The locale of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._locale

    @locale.setter
    def locale(self, locale):
        """Sets the locale of this JobDetails.

        Default language of the job.  # noqa: E501

        :param locale: The locale of this JobDetails.  # noqa: E501
        :type: str
        """

        self._locale = locale

    @property
    def display_career_site(self):
        """Gets the display_career_site of this JobDetails.  # noqa: E501

        Display career site (true or false).  # noqa: E501

        :return: The display_career_site of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._display_career_site

    @display_career_site.setter
    def display_career_site(self, display_career_site):
        """Sets the display_career_site of this JobDetails.

        Display career site (true or false).  # noqa: E501

        :param display_career_site: The display_career_site of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._display_career_site = display_career_site

    @property
    def assigned(self):
        """Gets the assigned of this JobDetails.  # noqa: E501

        Details of users assigned to the job.  # noqa: E501

        :return: The assigned of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsAssigned]
        """
        return self._assigned

    @assigned.setter
    def assigned(self, assigned):
        """Sets the assigned of this JobDetails.

        Details of users assigned to the job.  # noqa: E501

        :param assigned: The assigned of this JobDetails.  # noqa: E501
        :type: list[JobDetailsAssigned]
        """

        self._assigned = assigned

    @property
    def job_zone(self):
        """Gets the job_zone of this JobDetails.  # noqa: E501

        Job zone.  # noqa: E501

        :return: The job_zone of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_zone

    @job_zone.setter
    def job_zone(self, job_zone):
        """Sets the job_zone of this JobDetails.

        Job zone.  # noqa: E501

        :param job_zone: The job_zone of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_zone = job_zone

    @property
    def multi_location(self):
        """Gets the multi_location of this JobDetails.  # noqa: E501

        Details of multiple locations associated with the job.  # noqa: E501

        :return: The multi_location of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsMultiLocation]
        """
        return self._multi_location

    @multi_location.setter
    def multi_location(self, multi_location):
        """Sets the multi_location of this JobDetails.

        Details of multiple locations associated with the job.  # noqa: E501

        :param multi_location: The multi_location of this JobDetails.  # noqa: E501
        :type: list[JobDetailsMultiLocation]
        """

        self._multi_location = multi_location

    @property
    def job_merge_score(self):
        """Gets the job_merge_score of this JobDetails.  # noqa: E501

        Merge score of the job.  # noqa: E501

        :return: The job_merge_score of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._job_merge_score

    @job_merge_score.setter
    def job_merge_score(self, job_merge_score):
        """Sets the job_merge_score of this JobDetails.

        Merge score of the job.  # noqa: E501

        :param job_merge_score: The job_merge_score of this JobDetails.  # noqa: E501
        :type: float
        """

        self._job_merge_score = job_merge_score

    @property
    def benefits(self):
        """Gets the benefits of this JobDetails.  # noqa: E501

        Benefits associated with the job.  # noqa: E501

        :return: The benefits of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._benefits

    @benefits.setter
    def benefits(self, benefits):
        """Sets the benefits of this JobDetails.

        Benefits associated with the job.  # noqa: E501

        :param benefits: The benefits of this JobDetails.  # noqa: E501
        :type: str
        """

        self._benefits = benefits

    @property
    def job_id(self):
        """Gets the job_id of this JobDetails.  # noqa: E501

        Job's reference ID.  # noqa: E501

        :return: The job_id of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_id

    @job_id.setter
    def job_id(self, job_id):
        """Sets the job_id of this JobDetails.

        Job's reference ID.  # noqa: E501

        :param job_id: The job_id of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_id = job_id

    @property
    def job_category(self):
        """Gets the job_category of this JobDetails.  # noqa: E501

        Job's category.  # noqa: E501

        :return: The job_category of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_category

    @job_category.setter
    def job_category(self, job_category):
        """Sets the job_category of this JobDetails.

        Job's category.  # noqa: E501

        :param job_category: The job_category of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_category = job_category

    @property
    def job_experience(self):
        """Gets the job_experience of this JobDetails.  # noqa: E501

        Job's experience.  # noqa: E501

        :return: The job_experience of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_experience

    @job_experience.setter
    def job_experience(self, job_experience):
        """Sets the job_experience of this JobDetails.

        Job's experience.  # noqa: E501

        :param job_experience: The job_experience of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_experience = job_experience

    @property
    def status(self):
        """Gets the status of this JobDetails.  # noqa: E501

        Job's status whether it's open, closed, or in draft.  # noqa: E501

        :return: The status of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this JobDetails.

        Job's status whether it's open, closed, or in draft.  # noqa: E501

        :param status: The status of this JobDetails.  # noqa: E501
        :type: str
        """
        allowed_values = ["open", "close", "draft"]  # noqa: E501
        if status not in allowed_values:
            raise ValueError(
                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
                .format(status, allowed_values)
            )

        self._status = status

    @property
    def tenant_specific_additional_fields(self):
        """Gets the tenant_specific_additional_fields of this JobDetails.  # noqa: E501

        Additional fields specific to the tenant associated with the job.  # noqa: E501

        :return: The tenant_specific_additional_fields of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsTenantSpecificAdditionalFields]
        """
        return self._tenant_specific_additional_fields

    @tenant_specific_additional_fields.setter
    def tenant_specific_additional_fields(self, tenant_specific_additional_fields):
        """Sets the tenant_specific_additional_fields of this JobDetails.

        Additional fields specific to the tenant associated with the job.  # noqa: E501

        :param tenant_specific_additional_fields: The tenant_specific_additional_fields of this JobDetails.  # noqa: E501
        :type: list[JobDetailsTenantSpecificAdditionalFields]
        """

        self._tenant_specific_additional_fields = tenant_specific_additional_fields

    @property
    def visibility_locale(self):
        """Gets the visibility_locale of this JobDetails.  # noqa: E501

        List of locales where the job is visible.  # noqa: E501

        :return: The visibility_locale of this JobDetails.  # noqa: E501
        :rtype: list[str]
        """
        return self._visibility_locale

    @visibility_locale.setter
    def visibility_locale(self, visibility_locale):
        """Sets the visibility_locale of this JobDetails.

        List of locales where the job is visible.  # noqa: E501

        :param visibility_locale: The visibility_locale of this JobDetails.  # noqa: E501
        :type: list[str]
        """

        self._visibility_locale = visibility_locale

    @property
    def default(self):
        """Gets the default of this JobDetails.  # noqa: E501

        Is a default job (true or false).  # noqa: E501

        :return: The default of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._default

    @default.setter
    def default(self, default):
        """Sets the default of this JobDetails.

        Is a default job (true or false).  # noqa: E501

        :param default: The default of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._default = default

    @property
    def is_deleted(self):
        """Gets the is_deleted of this JobDetails.  # noqa: E501

        Is a deleted job (true or false).  # noqa: E501

        :return: The is_deleted of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._is_deleted

    @is_deleted.setter
    def is_deleted(self, is_deleted):
        """Sets the is_deleted of this JobDetails.

        Is a deleted job (true or false).  # noqa: E501

        :param is_deleted: The is_deleted of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._is_deleted = is_deleted

    @property
    def country_code(self):
        """Gets the country_code of this JobDetails.  # noqa: E501

        Country code in which the job is posted.  # noqa: E501

        :return: The country_code of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._country_code

    @country_code.setter
    def country_code(self, country_code):
        """Sets the country_code of this JobDetails.

        Country code in which the job is posted.  # noqa: E501

        :param country_code: The country_code of this JobDetails.  # noqa: E501
        :type: str
        """

        self._country_code = country_code

    @property
    def candidates_in_process(self):
        """Gets the candidates_in_process of this JobDetails.  # noqa: E501

        Number of candidates in process for this job.  # noqa: E501

        :return: The candidates_in_process of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_in_process

    @candidates_in_process.setter
    def candidates_in_process(self, candidates_in_process):
        """Sets the candidates_in_process of this JobDetails.

        Number of candidates in process for this job.  # noqa: E501

        :param candidates_in_process: The candidates_in_process of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_in_process = candidates_in_process

    @property
    def candidates_to_be_evaluated(self):
        """Gets the candidates_to_be_evaluated of this JobDetails.  # noqa: E501

        Number of candidates to be evaluated in this job.  # noqa: E501

        :return: The candidates_to_be_evaluated of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_to_be_evaluated

    @candidates_to_be_evaluated.setter
    def candidates_to_be_evaluated(self, candidates_to_be_evaluated):
        """Sets the candidates_to_be_evaluated of this JobDetails.

        Number of candidates to be evaluated in this job.  # noqa: E501

        :param candidates_to_be_evaluated: The candidates_to_be_evaluated of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_to_be_evaluated = candidates_to_be_evaluated

    @property
    def candidates_to_be_offered(self):
        """Gets the candidates_to_be_offered of this JobDetails.  # noqa: E501

        Number of candidates to make offers in this job.  # noqa: E501

        :return: The candidates_to_be_offered of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_to_be_offered

    @candidates_to_be_offered.setter
    def candidates_to_be_offered(self, candidates_to_be_offered):
        """Sets the candidates_to_be_offered of this JobDetails.

        Number of candidates to make offers in this job.  # noqa: E501

        :param candidates_to_be_offered: The candidates_to_be_offered of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_to_be_offered = candidates_to_be_offered

    @property
    def candidates_reviewed(self):
        """Gets the candidates_reviewed of this JobDetails.  # noqa: E501

        Number of candidates reviewed in this job.  # noqa: E501

        :return: The candidates_reviewed of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_reviewed

    @candidates_reviewed.setter
    def candidates_reviewed(self, candidates_reviewed):
        """Sets the candidates_reviewed of this JobDetails.

        Number of candidates reviewed in this job.  # noqa: E501

        :param candidates_reviewed: The candidates_reviewed of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_reviewed = candidates_reviewed

    @property
    def pending_candidates(self):
        """Gets the pending_candidates of this JobDetails.  # noqa: E501

        Number of pending candidates on whom an action needs to be taken in this job.  # noqa: E501

        :return: The pending_candidates of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._pending_candidates

    @pending_candidates.setter
    def pending_candidates(self, pending_candidates):
        """Sets the pending_candidates of this JobDetails.

        Number of pending candidates on whom an action needs to be taken in this job.  # noqa: E501

        :param pending_candidates: The pending_candidates of this JobDetails.  # noqa: E501
        :type: float
        """

        self._pending_candidates = pending_candidates

    @property
    def candidates_evaluated(self):
        """Gets the candidates_evaluated of this JobDetails.  # noqa: E501

        Number of candidates evaluated in this job.  # noqa: E501

        :return: The candidates_evaluated of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_evaluated

    @candidates_evaluated.setter
    def candidates_evaluated(self, candidates_evaluated):
        """Sets the candidates_evaluated of this JobDetails.

        Number of candidates evaluated in this job.  # noqa: E501

        :param candidates_evaluated: The candidates_evaluated of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_evaluated = candidates_evaluated

    @property
    def number_of_candidates(self):
        """Gets the number_of_candidates of this JobDetails.  # noqa: E501

        Number of candidates in the job.  # noqa: E501

        :return: The number_of_candidates of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._number_of_candidates

    @number_of_candidates.setter
    def number_of_candidates(self, number_of_candidates):
        """Sets the number_of_candidates of this JobDetails.

        Number of candidates in the job.  # noqa: E501

        :param number_of_candidates: The number_of_candidates of this JobDetails.  # noqa: E501
        :type: float
        """

        self._number_of_candidates = number_of_candidates

    @property
    def interview_scheduled_count(self):
        """Gets the interview_scheduled_count of this JobDetails.  # noqa: E501

        Number of interviews scheduled for this job.  # noqa: E501

        :return: The interview_scheduled_count of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._interview_scheduled_count

    @interview_scheduled_count.setter
    def interview_scheduled_count(self, interview_scheduled_count):
        """Sets the interview_scheduled_count of this JobDetails.

        Number of interviews scheduled for this job.  # noqa: E501

        :param interview_scheduled_count: The interview_scheduled_count of this JobDetails.  # noqa: E501
        :type: float
        """

        self._interview_scheduled_count = interview_scheduled_count

    @property
    def candidates_to_be_reviewed(self):
        """Gets the candidates_to_be_reviewed of this JobDetails.  # noqa: E501

        Number of candidates to be reviewed.  # noqa: E501

        :return: The candidates_to_be_reviewed of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_to_be_reviewed

    @candidates_to_be_reviewed.setter
    def candidates_to_be_reviewed(self, candidates_to_be_reviewed):
        """Sets the candidates_to_be_reviewed of this JobDetails.

        Number of candidates to be reviewed.  # noqa: E501

        :param candidates_to_be_reviewed: The candidates_to_be_reviewed of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_to_be_reviewed = candidates_to_be_reviewed

    @property
    def user_role(self):
        """Gets the user_role of this JobDetails.  # noqa: E501

        User's role related to this job.  # noqa: E501

        :return: The user_role of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._user_role

    @user_role.setter
    def user_role(self, user_role):
        """Sets the user_role of this JobDetails.

        User's role related to this job.  # noqa: E501

        :param user_role: The user_role of this JobDetails.  # noqa: E501
        :type: str
        """

        self._user_role = user_role

    @property
    def company(self):
        """Gets the company of this JobDetails.  # noqa: E501

        The company name.  # noqa: E501

        :return: The company of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._company

    @company.setter
    def company(self, company):
        """Sets the company of this JobDetails.

        The company name.  # noqa: E501

        :param company: The company of this JobDetails.  # noqa: E501
        :type: str
        """

        self._company = company

    @property
    def hashkey(self):
        """Gets the hashkey of this JobDetails.  # noqa: E501

        The hash key.  # noqa: E501

        :return: The hashkey of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._hashkey

    @hashkey.setter
    def hashkey(self, hashkey):
        """Sets the hashkey of this JobDetails.

        The hash key.  # noqa: E501

        :param hashkey: The hashkey of this JobDetails.  # noqa: E501
        :type: str
        """

        self._hashkey = hashkey

    @property
    def apply_url(self):
        """Gets the apply_url of this JobDetails.  # noqa: E501

        URL to apply for this job.  # noqa: E501

        :return: The apply_url of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._apply_url

    @apply_url.setter
    def apply_url(self, apply_url):
        """Sets the apply_url of this JobDetails.

        URL to apply for this job.  # noqa: E501

        :param apply_url: The apply_url of this JobDetails.  # noqa: E501
        :type: str
        """

        self._apply_url = apply_url

    @property
    def onet(self):
        """Gets the onet of this JobDetails.  # noqa: E501

        Details related to O*NET (Occupational Information Network) codes for the job.  # noqa: E501

        :return: The onet of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsOnet]
        """
        return self._onet

    @onet.setter
    def onet(self, onet):
        """Sets the onet of this JobDetails.

        Details related to O*NET (Occupational Information Network) codes for the job.  # noqa: E501

        :param onet: The onet of this JobDetails.  # noqa: E501
        :type: list[JobDetailsOnet]
        """

        self._onet = onet

    @property
    def variations(self):
        """Gets the variations of this JobDetails.  # noqa: E501

        Variations or versions of the job based on different criteria.  # noqa: E501

        :return: The variations of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsVariations]
        """
        return self._variations

    @variations.setter
    def variations(self, variations):
        """Sets the variations of this JobDetails.

        Variations or versions of the job based on different criteria.  # noqa: E501

        :param variations: The variations of this JobDetails.  # noqa: E501
        :type: list[JobDetailsVariations]
        """

        self._variations = variations

    @property
    def hiring_team_list(self):
        """Gets the hiring_team_list of this JobDetails.  # noqa: E501

        List of team members associated with the job.  # noqa: E501

        :return: The hiring_team_list of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsHiringTeamList]
        """
        return self._hiring_team_list

    @hiring_team_list.setter
    def hiring_team_list(self, hiring_team_list):
        """Sets the hiring_team_list of this JobDetails.

        List of team members associated with the job.  # noqa: E501

        :param hiring_team_list: The hiring_team_list of this JobDetails.  # noqa: E501
        :type: list[JobDetailsHiringTeamList]
        """

        self._hiring_team_list = hiring_team_list

    @property
    def department(self):
        """Gets the department of this JobDetails.  # noqa: E501

        Department to which the job belongs.  # noqa: E501

        :return: The department of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._department

    @department.setter
    def department(self, department):
        """Sets the department of this JobDetails.

        Department to which the job belongs.  # noqa: E501

        :param department: The department of this JobDetails.  # noqa: E501
        :type: str
        """

        self._department = department

    @property
    def job_type(self):
        """Gets the job_type of this JobDetails.  # noqa: E501

        Job type, whether part-time or full-time.  # noqa: E501

        :return: The job_type of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_type

    @job_type.setter
    def job_type(self, job_type):
        """Sets the job_type of this JobDetails.

        Job type, whether part-time or full-time.  # noqa: E501

        :param job_type: The job_type of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_type = job_type

    @property
    def visibility_site_type(self):
        """Gets the visibility_site_type of this JobDetails.  # noqa: E501

        List of site types where the job is visible.  # noqa: E501

        :return: The visibility_site_type of this JobDetails.  # noqa: E501
        :rtype: list[str]
        """
        return self._visibility_site_type

    @visibility_site_type.setter
    def visibility_site_type(self, visibility_site_type):
        """Sets the visibility_site_type of this JobDetails.

        List of site types where the job is visible.  # noqa: E501

        :param visibility_site_type: The visibility_site_type of this JobDetails.  # noqa: E501
        :type: list[str]
        """

        self._visibility_site_type = visibility_site_type

    @property
    def is_confidential(self):
        """Gets the is_confidential of this JobDetails.  # noqa: E501

        Is a confidential job (true or false).  # noqa: E501

        :return: The is_confidential of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._is_confidential

    @is_confidential.setter
    def is_confidential(self, is_confidential):
        """Sets the is_confidential of this JobDetails.

        Is a confidential job (true or false).  # noqa: E501

        :param is_confidential: The is_confidential of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._is_confidential = is_confidential

    @property
    def skills_and_experience(self):
        """Gets the skills_and_experience of this JobDetails.  # noqa: E501

        Skills and experiences required for the job.  # noqa: E501

        :return: The skills_and_experience of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._skills_and_experience

    @skills_and_experience.setter
    def skills_and_experience(self, skills_and_experience):
        """Sets the skills_and_experience of this JobDetails.

        Skills and experiences required for the job.  # noqa: E501

        :param skills_and_experience: The skills_and_experience of this JobDetails.  # noqa: E501
        :type: str
        """

        self._skills_and_experience = skills_and_experience

    @property
    def scrape_time(self):
        """Gets the scrape_time of this JobDetails.  # noqa: E501

        Time took to scrape the job.  # noqa: E501

        :return: The scrape_time of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._scrape_time

    @scrape_time.setter
    def scrape_time(self, scrape_time):
        """Sets the scrape_time of this JobDetails.

        Time took to scrape the job.  # noqa: E501

        :param scrape_time: The scrape_time of this JobDetails.  # noqa: E501
        :type: str
        """

        self._scrape_time = scrape_time

    @property
    def created_date(self):
        """Gets the created_date of this JobDetails.  # noqa: E501

        Job creation date.  # noqa: E501

        :return: The created_date of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._created_date

    @created_date.setter
    def created_date(self, created_date):
        """Sets the created_date of this JobDetails.

        Job creation date.  # noqa: E501

        :param created_date: The created_date of this JobDetails.  # noqa: E501
        :type: str
        """

        self._created_date = created_date

    @property
    def job_visibility(self):
        """Gets the job_visibility of this JobDetails.  # noqa: E501

        Job's visibility.  # noqa: E501

        :return: The job_visibility of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_visibility

    @job_visibility.setter
    def job_visibility(self, job_visibility):
        """Sets the job_visibility of this JobDetails.

        Job's visibility.  # noqa: E501

        :param job_visibility: The job_visibility of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_visibility = job_visibility

    @property
    def job_location(self):
        """Gets the job_location of this JobDetails.  # noqa: E501

        Job's location.  # noqa: E501

        :return: The job_location of this JobDetails.  # noqa: E501
        :rtype: str
        """
        return self._job_location

    @job_location.setter
    def job_location(self, job_location):
        """Sets the job_location of this JobDetails.

        Job's location.  # noqa: E501

        :param job_location: The job_location of this JobDetails.  # noqa: E501
        :type: str
        """

        self._job_location = job_location

    @property
    def publish(self):
        """Gets the publish of this JobDetails.  # noqa: E501

        Indicates if the job is published.  # noqa: E501

        :return: The publish of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._publish

    @publish.setter
    def publish(self, publish):
        """Sets the publish of this JobDetails.

        Indicates if the job is published.  # noqa: E501

        :param publish: The publish of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._publish = publish

    @property
    def is_critical(self):
        """Gets the is_critical of this JobDetails.  # noqa: E501

        Is a critical job (true or false).  # noqa: E501

        :return: The is_critical of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._is_critical

    @is_critical.setter
    def is_critical(self, is_critical):
        """Sets the is_critical of this JobDetails.

        Is a critical job (true or false).  # noqa: E501

        :param is_critical: The is_critical of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._is_critical = is_critical

    @property
    def hiring_manager_list(self):
        """Gets the hiring_manager_list of this JobDetails.  # noqa: E501

        List of hiring managers associated with the job.  # noqa: E501

        :return: The hiring_manager_list of this JobDetails.  # noqa: E501
        :rtype: list[JobDetailsHiringManagerList]
        """
        return self._hiring_manager_list

    @hiring_manager_list.setter
    def hiring_manager_list(self, hiring_manager_list):
        """Sets the hiring_manager_list of this JobDetails.

        List of hiring managers associated with the job.  # noqa: E501

        :param hiring_manager_list: The hiring_manager_list of this JobDetails.  # noqa: E501
        :type: list[JobDetailsHiringManagerList]
        """

        self._hiring_manager_list = hiring_manager_list

    @property
    def candidates_video_evaluated(self):
        """Gets the candidates_video_evaluated of this JobDetails.  # noqa: E501

        Number of candidates to evaluate video interviews.  # noqa: E501

        :return: The candidates_video_evaluated of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_video_evaluated

    @candidates_video_evaluated.setter
    def candidates_video_evaluated(self, candidates_video_evaluated):
        """Sets the candidates_video_evaluated of this JobDetails.

        Number of candidates to evaluate video interviews.  # noqa: E501

        :param candidates_video_evaluated: The candidates_video_evaluated of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_video_evaluated = candidates_video_evaluated

    @property
    def candidates_to_be_video_evaluated(self):
        """Gets the candidates_to_be_video_evaluated of this JobDetails.  # noqa: E501

        Number of candidates whose video evaluation is done.  # noqa: E501

        :return: The candidates_to_be_video_evaluated of this JobDetails.  # noqa: E501
        :rtype: float
        """
        return self._candidates_to_be_video_evaluated

    @candidates_to_be_video_evaluated.setter
    def candidates_to_be_video_evaluated(self, candidates_to_be_video_evaluated):
        """Sets the candidates_to_be_video_evaluated of this JobDetails.

        Number of candidates whose video evaluation is done.  # noqa: E501

        :param candidates_to_be_video_evaluated: The candidates_to_be_video_evaluated of this JobDetails.  # noqa: E501
        :type: float
        """

        self._candidates_to_be_video_evaluated = candidates_to_be_video_evaluated

    @property
    def review_criteria_refinement_disabled(self):
        """Gets the review_criteria_refinement_disabled of this JobDetails.  # noqa: E501

        Indicates if the review criteria refinement is disabled.  # noqa: E501

        :return: The review_criteria_refinement_disabled of this JobDetails.  # noqa: E501
        :rtype: bool
        """
        return self._review_criteria_refinement_disabled

    @review_criteria_refinement_disabled.setter
    def review_criteria_refinement_disabled(self, review_criteria_refinement_disabled):
        """Sets the review_criteria_refinement_disabled of this JobDetails.

        Indicates if the review criteria refinement is disabled.  # noqa: E501

        :param review_criteria_refinement_disabled: The review_criteria_refinement_disabled of this JobDetails.  # noqa: E501
        :type: bool
        """

        self._review_criteria_refinement_disabled = review_criteria_refinement_disabled

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(JobDetails, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, JobDetails):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
