"""
    SmartyMeet Dev03 API REST

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

    The version of the OpenAPI document: 1.0.1
    Contact: developer@smartymeet.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated

from datetime import datetime
from pydantic import Field, StrictStr, field_validator
from typing import Any, Optional
from typing_extensions import Annotated
from smartytalent_client.models.candidates_schema import CandidatesSchema
from smartytalent_client.models.create_talent_request_body import CreateTalentRequestBody
from smartytalent_client.models.list_talent_candidates_relationship import ListTalentCandidatesRelationship
from smartytalent_client.models.talent_schema import TalentSchema
from smartytalent_client.models.talents_schema import TalentsSchema
from smartytalent_client.models.update_talent_request_body import UpdateTalentRequestBody

from smartytalent_client.api_client import ApiClient, RequestSerialized
from smartytalent_client.api_response import ApiResponse
from smartytalent_client.rest import RESTResponseType


class TalentsApi:
    """NOTE: This class is auto generated by OpenAPI Generator
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    def __init__(self, api_client=None) -> None:
        if api_client is None:
            api_client = ApiClient.get_default()
        self.api_client = api_client


    @validate_call
    def create_talent(
        self,
        create_talent_request_body: Annotated[CreateTalentRequestBody, Field(description="A JSON object containing Talent information")],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> TalentSchema:
        """Create Talent

        Creates a new talent in your account.  ### Talent's Attributes  Here is a table that describes the attributes of the talent object:  | Attribute | Type | Required | Format | Description | |-----------|------|----------|---------|-------------| | `name` | string | Yes | - | The full name of the talent | | `email` | string | Yes | email | Primary email address of the talent | | `status` | string | No | enum | Current status: active, inactive, pending, archived, failed | | `secondaryEmail` | string | No | email | Secondary email address | | `workEmail` | string | No | email | Work email address | | `phone` | string | No | - | Primary phone number | | `workPhone` | string | No | - | Work phone number | | `profilePictureUrl` | string | No | url | URL to profile picture, can be null | | `availability` | object | No | localized | Language-keyed availability with priority and received items (e.g. `{ \"en-US\": { name, description, priority, received: [...] } }`) | | `desiredContractLength` | object | No | - | Contract length preferences | | `desiredContractLength.duration` | string | No | - | Desired contract duration, can be null | | `desiredContractLength.isAssumed` | boolean | No | - | Whether duration was assumed from context | | `desiredContractLength.confidence` | string | No | enum | Confidence level: Low, Medium, High | | `desiredContractLength.flexibility` | string | No | - | Flexibility in contract length, can be null | | `desiredContractLength.reasoning` | string | No | - | Reasoning for assumed duration | | `employmentType` | object | No | - | Employment type preferences | | `employmentType.status` | string | No | - | Current employment status | | `employmentType.isAssumed` | boolean | No | - | Whether status was assumed | | `employmentType.confidence` | string | No | enum | Confidence level: Low, Medium, High | | `employmentType.additionalContext` | string | No | - | Additional context, can be null | | `employmentType.reasoning` | string | No | - | Reasoning for assumptions, can be null | | `experienceAndSeniority` | object | No | localized | Language-keyed experience criteria with `{ name, description, received: [...] }` per locale | | `breakReason` | string | No | - | Reason for career break | | `quickInsights` | object | No | localized | Language-keyed quick insights string (e.g. `{ \"en-US\": \"...\" }`) | | `languagesSpoken` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `socialLinks` | array | No | - | Array of social media profiles | | `socialLinks[].platform` | string | No | - | Social media platform name | | `socialLinks[].url` | string | No | - | Profile URL | | `desiredRole` | array | No | - | Array of desired roles | | `desiredRole[].role` | string | No | - | Desired role title | | `desiredRole[].level` | string | No | - | Desired seniority level | | `desiredRole[].isAssumed` | boolean | No | - | Whether preference was assumed | | `desiredRole[].confidence` | string | No | enum | Confidence level: Low, Medium, High | | `desiredRole[].reasoning` | string | No | - | Reasoning for assumptions | | `workPreferences` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `locationPreferences` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `workAuthorization` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `skillsAndExpertise` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `certifications` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `licenses` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `professionalExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `industryExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `companyTypeExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `jobPositions` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `jobTendencies` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `education` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `projectsAndAchievements` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `personalityAndSoftSkills` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale. Items use `details` (not `evidence`). | | `hobbiesAndInterests` | object | No | localized | Language-keyed string arrays (e.g. `{ \"en-US\": [\"hobby1\", \"hobby2\"] }`) | | `references` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `keywords` | object | No | localized | Language-keyed string arrays (e.g. `{ \"en-US\": [\"keyword1\", \"keyword2\"] }`) | | `salaryExpectation` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `relocationWillingness` | boolean | No | - | Whether willing to relocate | | `requiresSponsorship` | boolean | No | - | Whether requires visa sponsorship | | `careerBreak` | boolean | No | - | Whether currently on career break | | `isTalentPool` | boolean | No | - | Whether this talent is part of a talent pool | | `ttl` | string | No | - | Time-to-live expiration timestamp, can be null | | `alumni` | object | No | - | Alumni/former employee info (`isFormerEmployee`, `previousTenureMonths`, `wantsToReturn`) | | `referral` | object | No | - | Referral info (`isReferred`, `referralCode`, `referrer: { email, fullName }`) | | `age` | string | No | - | Age of the talent | | `gender` | string | No | - | Gender of the talent | | `settings` | object | No | - | Additional settings (free-form) | | `shortCode` | string | No | - | Unique short identifier | | `source` | string | No | - | Source of the talent record | | `timestamps.created` | string | No | date-time | Creation timestamp (ISO 8601) | | `timestamps.modified` | string | No | date-time | Last modification timestamp (ISO 8601) |  Localized fields use `additionalProperties` with language-code keys (e.g. `en-US`, `pl-PL`). Most localized fields follow the `TalentReceivedCriteriaSchema` pattern with `{ name, description, received: [objects] }`. The `availability` field additionally includes `priority`, `priorityConfidence`, and `priorityReasoning`. Fields `hobbiesAndInterests` and `keywords` are localized string arrays. The `quickInsights` field is a localized string.

        :param create_talent_request_body: A JSON object containing Talent information (required)
        :type create_talent_request_body: CreateTalentRequestBody
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._create_talent_serialize(
            create_talent_request_body=create_talent_request_body,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def create_talent_with_http_info(
        self,
        create_talent_request_body: Annotated[CreateTalentRequestBody, Field(description="A JSON object containing Talent information")],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[TalentSchema]:
        """Create Talent

        Creates a new talent in your account.  ### Talent's Attributes  Here is a table that describes the attributes of the talent object:  | Attribute | Type | Required | Format | Description | |-----------|------|----------|---------|-------------| | `name` | string | Yes | - | The full name of the talent | | `email` | string | Yes | email | Primary email address of the talent | | `status` | string | No | enum | Current status: active, inactive, pending, archived, failed | | `secondaryEmail` | string | No | email | Secondary email address | | `workEmail` | string | No | email | Work email address | | `phone` | string | No | - | Primary phone number | | `workPhone` | string | No | - | Work phone number | | `profilePictureUrl` | string | No | url | URL to profile picture, can be null | | `availability` | object | No | localized | Language-keyed availability with priority and received items (e.g. `{ \"en-US\": { name, description, priority, received: [...] } }`) | | `desiredContractLength` | object | No | - | Contract length preferences | | `desiredContractLength.duration` | string | No | - | Desired contract duration, can be null | | `desiredContractLength.isAssumed` | boolean | No | - | Whether duration was assumed from context | | `desiredContractLength.confidence` | string | No | enum | Confidence level: Low, Medium, High | | `desiredContractLength.flexibility` | string | No | - | Flexibility in contract length, can be null | | `desiredContractLength.reasoning` | string | No | - | Reasoning for assumed duration | | `employmentType` | object | No | - | Employment type preferences | | `employmentType.status` | string | No | - | Current employment status | | `employmentType.isAssumed` | boolean | No | - | Whether status was assumed | | `employmentType.confidence` | string | No | enum | Confidence level: Low, Medium, High | | `employmentType.additionalContext` | string | No | - | Additional context, can be null | | `employmentType.reasoning` | string | No | - | Reasoning for assumptions, can be null | | `experienceAndSeniority` | object | No | localized | Language-keyed experience criteria with `{ name, description, received: [...] }` per locale | | `breakReason` | string | No | - | Reason for career break | | `quickInsights` | object | No | localized | Language-keyed quick insights string (e.g. `{ \"en-US\": \"...\" }`) | | `languagesSpoken` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `socialLinks` | array | No | - | Array of social media profiles | | `socialLinks[].platform` | string | No | - | Social media platform name | | `socialLinks[].url` | string | No | - | Profile URL | | `desiredRole` | array | No | - | Array of desired roles | | `desiredRole[].role` | string | No | - | Desired role title | | `desiredRole[].level` | string | No | - | Desired seniority level | | `desiredRole[].isAssumed` | boolean | No | - | Whether preference was assumed | | `desiredRole[].confidence` | string | No | enum | Confidence level: Low, Medium, High | | `desiredRole[].reasoning` | string | No | - | Reasoning for assumptions | | `workPreferences` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `locationPreferences` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `workAuthorization` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `skillsAndExpertise` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `certifications` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `licenses` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `professionalExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `industryExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `companyTypeExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `jobPositions` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `jobTendencies` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `education` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `projectsAndAchievements` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `personalityAndSoftSkills` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale. Items use `details` (not `evidence`). | | `hobbiesAndInterests` | object | No | localized | Language-keyed string arrays (e.g. `{ \"en-US\": [\"hobby1\", \"hobby2\"] }`) | | `references` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `keywords` | object | No | localized | Language-keyed string arrays (e.g. `{ \"en-US\": [\"keyword1\", \"keyword2\"] }`) | | `salaryExpectation` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `relocationWillingness` | boolean | No | - | Whether willing to relocate | | `requiresSponsorship` | boolean | No | - | Whether requires visa sponsorship | | `careerBreak` | boolean | No | - | Whether currently on career break | | `isTalentPool` | boolean | No | - | Whether this talent is part of a talent pool | | `ttl` | string | No | - | Time-to-live expiration timestamp, can be null | | `alumni` | object | No | - | Alumni/former employee info (`isFormerEmployee`, `previousTenureMonths`, `wantsToReturn`) | | `referral` | object | No | - | Referral info (`isReferred`, `referralCode`, `referrer: { email, fullName }`) | | `age` | string | No | - | Age of the talent | | `gender` | string | No | - | Gender of the talent | | `settings` | object | No | - | Additional settings (free-form) | | `shortCode` | string | No | - | Unique short identifier | | `source` | string | No | - | Source of the talent record | | `timestamps.created` | string | No | date-time | Creation timestamp (ISO 8601) | | `timestamps.modified` | string | No | date-time | Last modification timestamp (ISO 8601) |  Localized fields use `additionalProperties` with language-code keys (e.g. `en-US`, `pl-PL`). Most localized fields follow the `TalentReceivedCriteriaSchema` pattern with `{ name, description, received: [objects] }`. The `availability` field additionally includes `priority`, `priorityConfidence`, and `priorityReasoning`. Fields `hobbiesAndInterests` and `keywords` are localized string arrays. The `quickInsights` field is a localized string.

        :param create_talent_request_body: A JSON object containing Talent information (required)
        :type create_talent_request_body: CreateTalentRequestBody
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._create_talent_serialize(
            create_talent_request_body=create_talent_request_body,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def create_talent_without_preload_content(
        self,
        create_talent_request_body: Annotated[CreateTalentRequestBody, Field(description="A JSON object containing Talent information")],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Create Talent

        Creates a new talent in your account.  ### Talent's Attributes  Here is a table that describes the attributes of the talent object:  | Attribute | Type | Required | Format | Description | |-----------|------|----------|---------|-------------| | `name` | string | Yes | - | The full name of the talent | | `email` | string | Yes | email | Primary email address of the talent | | `status` | string | No | enum | Current status: active, inactive, pending, archived, failed | | `secondaryEmail` | string | No | email | Secondary email address | | `workEmail` | string | No | email | Work email address | | `phone` | string | No | - | Primary phone number | | `workPhone` | string | No | - | Work phone number | | `profilePictureUrl` | string | No | url | URL to profile picture, can be null | | `availability` | object | No | localized | Language-keyed availability with priority and received items (e.g. `{ \"en-US\": { name, description, priority, received: [...] } }`) | | `desiredContractLength` | object | No | - | Contract length preferences | | `desiredContractLength.duration` | string | No | - | Desired contract duration, can be null | | `desiredContractLength.isAssumed` | boolean | No | - | Whether duration was assumed from context | | `desiredContractLength.confidence` | string | No | enum | Confidence level: Low, Medium, High | | `desiredContractLength.flexibility` | string | No | - | Flexibility in contract length, can be null | | `desiredContractLength.reasoning` | string | No | - | Reasoning for assumed duration | | `employmentType` | object | No | - | Employment type preferences | | `employmentType.status` | string | No | - | Current employment status | | `employmentType.isAssumed` | boolean | No | - | Whether status was assumed | | `employmentType.confidence` | string | No | enum | Confidence level: Low, Medium, High | | `employmentType.additionalContext` | string | No | - | Additional context, can be null | | `employmentType.reasoning` | string | No | - | Reasoning for assumptions, can be null | | `experienceAndSeniority` | object | No | localized | Language-keyed experience criteria with `{ name, description, received: [...] }` per locale | | `breakReason` | string | No | - | Reason for career break | | `quickInsights` | object | No | localized | Language-keyed quick insights string (e.g. `{ \"en-US\": \"...\" }`) | | `languagesSpoken` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `socialLinks` | array | No | - | Array of social media profiles | | `socialLinks[].platform` | string | No | - | Social media platform name | | `socialLinks[].url` | string | No | - | Profile URL | | `desiredRole` | array | No | - | Array of desired roles | | `desiredRole[].role` | string | No | - | Desired role title | | `desiredRole[].level` | string | No | - | Desired seniority level | | `desiredRole[].isAssumed` | boolean | No | - | Whether preference was assumed | | `desiredRole[].confidence` | string | No | enum | Confidence level: Low, Medium, High | | `desiredRole[].reasoning` | string | No | - | Reasoning for assumptions | | `workPreferences` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `locationPreferences` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `workAuthorization` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `skillsAndExpertise` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `certifications` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `licenses` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `professionalExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `industryExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `companyTypeExperience` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `jobPositions` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `jobTendencies` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `education` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `projectsAndAchievements` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `personalityAndSoftSkills` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale. Items use `details` (not `evidence`). | | `hobbiesAndInterests` | object | No | localized | Language-keyed string arrays (e.g. `{ \"en-US\": [\"hobby1\", \"hobby2\"] }`) | | `references` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `keywords` | object | No | localized | Language-keyed string arrays (e.g. `{ \"en-US\": [\"keyword1\", \"keyword2\"] }`) | | `salaryExpectation` | object | No | localized | Language-keyed criteria with `{ name, description, received: [...] }` per locale | | `relocationWillingness` | boolean | No | - | Whether willing to relocate | | `requiresSponsorship` | boolean | No | - | Whether requires visa sponsorship | | `careerBreak` | boolean | No | - | Whether currently on career break | | `isTalentPool` | boolean | No | - | Whether this talent is part of a talent pool | | `ttl` | string | No | - | Time-to-live expiration timestamp, can be null | | `alumni` | object | No | - | Alumni/former employee info (`isFormerEmployee`, `previousTenureMonths`, `wantsToReturn`) | | `referral` | object | No | - | Referral info (`isReferred`, `referralCode`, `referrer: { email, fullName }`) | | `age` | string | No | - | Age of the talent | | `gender` | string | No | - | Gender of the talent | | `settings` | object | No | - | Additional settings (free-form) | | `shortCode` | string | No | - | Unique short identifier | | `source` | string | No | - | Source of the talent record | | `timestamps.created` | string | No | date-time | Creation timestamp (ISO 8601) | | `timestamps.modified` | string | No | date-time | Last modification timestamp (ISO 8601) |  Localized fields use `additionalProperties` with language-code keys (e.g. `en-US`, `pl-PL`). Most localized fields follow the `TalentReceivedCriteriaSchema` pattern with `{ name, description, received: [objects] }`. The `availability` field additionally includes `priority`, `priorityConfidence`, and `priorityReasoning`. Fields `hobbiesAndInterests` and `keywords` are localized string arrays. The `quickInsights` field is a localized string.

        :param create_talent_request_body: A JSON object containing Talent information (required)
        :type create_talent_request_body: CreateTalentRequestBody
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._create_talent_serialize(
            create_talent_request_body=create_talent_request_body,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _create_talent_serialize(
        self,
        create_talent_request_body,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter
        if create_talent_request_body is not None:
            _body_params = create_talent_request_body


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )

        # set the HTTP header `Content-Type`
        if _content_type:
            _header_params['Content-Type'] = _content_type
        else:
            _default_content_type = (
                self.api_client.select_header_content_type(
                    [
                        'application/json'
                    ]
                )
            )
            if _default_content_type is not None:
                _header_params['Content-Type'] = _default_content_type

        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='POST',
            resource_path='/v1/talents',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def delete_talent(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> None:
        """Delete Talent

        This endpoint allows you to delete a specific talent from your account. Once deleted, the talent's information will be permanently removed and cannot be recovered.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._delete_talent_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def delete_talent_with_http_info(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[None]:
        """Delete Talent

        This endpoint allows you to delete a specific talent from your account. Once deleted, the talent's information will be permanently removed and cannot be recovered.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._delete_talent_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def delete_talent_without_preload_content(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Delete Talent

        This endpoint allows you to delete a specific talent from your account. Once deleted, the talent's information will be permanently removed and cannot be recovered.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._delete_talent_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _delete_talent_serialize(
        self,
        talent_id,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='DELETE',
            resource_path='/v1/talents/{talentId}',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def list_talent_candidates(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> CandidatesSchema:
        """List Talent Candidates

        Returns a collection of candidate resources related to the specified talent.  ## JSON:API Relationship Info This endpoint provides the _related_ resources rather than only relationship linkages.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talent_candidates_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "CandidatesSchema",
            '400': "ErrorSchema",
            '404': "ErrorSchema",
            '401': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def list_talent_candidates_with_http_info(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[CandidatesSchema]:
        """List Talent Candidates

        Returns a collection of candidate resources related to the specified talent.  ## JSON:API Relationship Info This endpoint provides the _related_ resources rather than only relationship linkages.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talent_candidates_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "CandidatesSchema",
            '400': "ErrorSchema",
            '404': "ErrorSchema",
            '401': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def list_talent_candidates_without_preload_content(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """List Talent Candidates

        Returns a collection of candidate resources related to the specified talent.  ## JSON:API Relationship Info This endpoint provides the _related_ resources rather than only relationship linkages.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talent_candidates_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "CandidatesSchema",
            '400': "ErrorSchema",
            '404': "ErrorSchema",
            '401': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _list_talent_candidates_serialize(
        self,
        talent_id,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/v1/talents/{talentId}/candidates',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def list_talent_candidates_relationship(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ListTalentCandidatesRelationship:
        """List Talent Candidates Relationship

        Returns the relationship object for the candidates associated with this talent.  ## JSON:API Relationship Endpoint This returns only the linkage data (`type` & `id`), plus optional links/meta.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talent_candidates_relationship_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "ListTalentCandidatesRelationship",
            '400': "ErrorSchema",
            '404': "ErrorSchema",
            '401': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def list_talent_candidates_relationship_with_http_info(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[ListTalentCandidatesRelationship]:
        """List Talent Candidates Relationship

        Returns the relationship object for the candidates associated with this talent.  ## JSON:API Relationship Endpoint This returns only the linkage data (`type` & `id`), plus optional links/meta.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talent_candidates_relationship_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "ListTalentCandidatesRelationship",
            '400': "ErrorSchema",
            '404': "ErrorSchema",
            '401': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def list_talent_candidates_relationship_without_preload_content(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """List Talent Candidates Relationship

        Returns the relationship object for the candidates associated with this talent.  ## JSON:API Relationship Endpoint This returns only the linkage data (`type` & `id`), plus optional links/meta.

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talent_candidates_relationship_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "ListTalentCandidatesRelationship",
            '400': "ErrorSchema",
            '404': "ErrorSchema",
            '401': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _list_talent_candidates_relationship_serialize(
        self,
        talent_id,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/v1/talents/{talentId}/relationships/candidates',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def list_talents(
        self,
        filter_status: Annotated[Optional[StrictStr], Field(description="Returns talents with the current status (active, archived). If not provided, the default value will be set to 'active'.")] = None,
        filter_created_from: Annotated[Optional[datetime], Field(description="Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_created_to: Annotated[Optional[datetime], Field(description="Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_modified_from: Annotated[Optional[datetime], Field(description="Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_modified_to: Annotated[Optional[datetime], Field(description="Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format.")] = None,
        page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Specifies the number of items to retrieve per page. The maximum value is 100.")] = None,
        page_number: Annotated[Optional[Annotated[int, Field(strict=True, ge=1)]], Field(description="Specifies the page number to retrieve. Used for traditional pagination.")] = None,
        page_after: Annotated[Optional[Any], Field(description="Returns the data encoded in Base64 format, used for cursor-based pagination")] = None,
        page_before: Annotated[Optional[StrictStr], Field(description="Returns the data encoded in Base64 format, used for cursor-based pagination")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> TalentsSchema:
        """List Talents

        Returns a collection of your account talents  ## Overview   Returns a collection of your account talents, sorted by the time they were inserted into the system in ascending order.   ### Talents Endpoints Pagination  The talents endpoints support two versions of pagination: traditional and cursor-based. Note that the parameters for these pagination methods cannot coexist; using them together will result in a bad request error.  :::tip Pagination tip  Ensure that when using traditional pagination, you use `pageNumber`, and when using cursor-based pagination, you use either `pageAfter` or `pageBefore`, but not both together.  :::    #### More information For more information, see the [pagination documentation](/docs/pagination).

        :param filter_status: Returns talents with the current status (active, archived). If not provided, the default value will be set to 'active'.
        :type filter_status: str
        :param filter_created_from: Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format.
        :type filter_created_from: datetime
        :param filter_created_to: Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format.
        :type filter_created_to: datetime
        :param filter_modified_from: Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format.
        :type filter_modified_from: datetime
        :param filter_modified_to: Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format.
        :type filter_modified_to: datetime
        :param page_size: Specifies the number of items to retrieve per page. The maximum value is 100.
        :type page_size: int
        :param page_number: Specifies the page number to retrieve. Used for traditional pagination.
        :type page_number: int
        :param page_after: Returns the data encoded in Base64 format, used for cursor-based pagination
        :type page_after: object
        :param page_before: Returns the data encoded in Base64 format, used for cursor-based pagination
        :type page_before: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talents_serialize(
            filter_status=filter_status,
            filter_created_from=filter_created_from,
            filter_created_to=filter_created_to,
            filter_modified_from=filter_modified_from,
            filter_modified_to=filter_modified_to,
            page_size=page_size,
            page_number=page_number,
            page_after=page_after,
            page_before=page_before,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentsSchema",
            '400': "ErrorSchema",
            '401': "ErrorSchema",
            '404': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def list_talents_with_http_info(
        self,
        filter_status: Annotated[Optional[StrictStr], Field(description="Returns talents with the current status (active, archived). If not provided, the default value will be set to 'active'.")] = None,
        filter_created_from: Annotated[Optional[datetime], Field(description="Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_created_to: Annotated[Optional[datetime], Field(description="Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_modified_from: Annotated[Optional[datetime], Field(description="Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_modified_to: Annotated[Optional[datetime], Field(description="Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format.")] = None,
        page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Specifies the number of items to retrieve per page. The maximum value is 100.")] = None,
        page_number: Annotated[Optional[Annotated[int, Field(strict=True, ge=1)]], Field(description="Specifies the page number to retrieve. Used for traditional pagination.")] = None,
        page_after: Annotated[Optional[Any], Field(description="Returns the data encoded in Base64 format, used for cursor-based pagination")] = None,
        page_before: Annotated[Optional[StrictStr], Field(description="Returns the data encoded in Base64 format, used for cursor-based pagination")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[TalentsSchema]:
        """List Talents

        Returns a collection of your account talents  ## Overview   Returns a collection of your account talents, sorted by the time they were inserted into the system in ascending order.   ### Talents Endpoints Pagination  The talents endpoints support two versions of pagination: traditional and cursor-based. Note that the parameters for these pagination methods cannot coexist; using them together will result in a bad request error.  :::tip Pagination tip  Ensure that when using traditional pagination, you use `pageNumber`, and when using cursor-based pagination, you use either `pageAfter` or `pageBefore`, but not both together.  :::    #### More information For more information, see the [pagination documentation](/docs/pagination).

        :param filter_status: Returns talents with the current status (active, archived). If not provided, the default value will be set to 'active'.
        :type filter_status: str
        :param filter_created_from: Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format.
        :type filter_created_from: datetime
        :param filter_created_to: Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format.
        :type filter_created_to: datetime
        :param filter_modified_from: Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format.
        :type filter_modified_from: datetime
        :param filter_modified_to: Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format.
        :type filter_modified_to: datetime
        :param page_size: Specifies the number of items to retrieve per page. The maximum value is 100.
        :type page_size: int
        :param page_number: Specifies the page number to retrieve. Used for traditional pagination.
        :type page_number: int
        :param page_after: Returns the data encoded in Base64 format, used for cursor-based pagination
        :type page_after: object
        :param page_before: Returns the data encoded in Base64 format, used for cursor-based pagination
        :type page_before: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talents_serialize(
            filter_status=filter_status,
            filter_created_from=filter_created_from,
            filter_created_to=filter_created_to,
            filter_modified_from=filter_modified_from,
            filter_modified_to=filter_modified_to,
            page_size=page_size,
            page_number=page_number,
            page_after=page_after,
            page_before=page_before,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentsSchema",
            '400': "ErrorSchema",
            '401': "ErrorSchema",
            '404': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def list_talents_without_preload_content(
        self,
        filter_status: Annotated[Optional[StrictStr], Field(description="Returns talents with the current status (active, archived). If not provided, the default value will be set to 'active'.")] = None,
        filter_created_from: Annotated[Optional[datetime], Field(description="Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_created_to: Annotated[Optional[datetime], Field(description="Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_modified_from: Annotated[Optional[datetime], Field(description="Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format.")] = None,
        filter_modified_to: Annotated[Optional[datetime], Field(description="Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format.")] = None,
        page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Specifies the number of items to retrieve per page. The maximum value is 100.")] = None,
        page_number: Annotated[Optional[Annotated[int, Field(strict=True, ge=1)]], Field(description="Specifies the page number to retrieve. Used for traditional pagination.")] = None,
        page_after: Annotated[Optional[Any], Field(description="Returns the data encoded in Base64 format, used for cursor-based pagination")] = None,
        page_before: Annotated[Optional[StrictStr], Field(description="Returns the data encoded in Base64 format, used for cursor-based pagination")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """List Talents

        Returns a collection of your account talents  ## Overview   Returns a collection of your account talents, sorted by the time they were inserted into the system in ascending order.   ### Talents Endpoints Pagination  The talents endpoints support two versions of pagination: traditional and cursor-based. Note that the parameters for these pagination methods cannot coexist; using them together will result in a bad request error.  :::tip Pagination tip  Ensure that when using traditional pagination, you use `pageNumber`, and when using cursor-based pagination, you use either `pageAfter` or `pageBefore`, but not both together.  :::    #### More information For more information, see the [pagination documentation](/docs/pagination).

        :param filter_status: Returns talents with the current status (active, archived). If not provided, the default value will be set to 'active'.
        :type filter_status: str
        :param filter_created_from: Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format.
        :type filter_created_from: datetime
        :param filter_created_to: Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format.
        :type filter_created_to: datetime
        :param filter_modified_from: Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format.
        :type filter_modified_from: datetime
        :param filter_modified_to: Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format.
        :type filter_modified_to: datetime
        :param page_size: Specifies the number of items to retrieve per page. The maximum value is 100.
        :type page_size: int
        :param page_number: Specifies the page number to retrieve. Used for traditional pagination.
        :type page_number: int
        :param page_after: Returns the data encoded in Base64 format, used for cursor-based pagination
        :type page_after: object
        :param page_before: Returns the data encoded in Base64 format, used for cursor-based pagination
        :type page_before: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._list_talents_serialize(
            filter_status=filter_status,
            filter_created_from=filter_created_from,
            filter_created_to=filter_created_to,
            filter_modified_from=filter_modified_from,
            filter_modified_to=filter_modified_to,
            page_size=page_size,
            page_number=page_number,
            page_after=page_after,
            page_before=page_before,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentsSchema",
            '400': "ErrorSchema",
            '401': "ErrorSchema",
            '404': "ErrorSchema",
            '500': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _list_talents_serialize(
        self,
        filter_status,
        filter_created_from,
        filter_created_to,
        filter_modified_from,
        filter_modified_to,
        page_size,
        page_number,
        page_after,
        page_before,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        if filter_status is not None:
            
            _query_params.append(('filterStatus', filter_status))
            
        if filter_created_from is not None:
            if isinstance(filter_created_from, datetime):
                _query_params.append(
                    (
                        'filterCreatedFrom',
                        filter_created_from.strftime(
                            self.api_client.configuration.datetime_format
                        )
                    )
                )
            else:
                _query_params.append(('filterCreatedFrom', filter_created_from))
            
        if filter_created_to is not None:
            if isinstance(filter_created_to, datetime):
                _query_params.append(
                    (
                        'filterCreatedTo',
                        filter_created_to.strftime(
                            self.api_client.configuration.datetime_format
                        )
                    )
                )
            else:
                _query_params.append(('filterCreatedTo', filter_created_to))
            
        if filter_modified_from is not None:
            if isinstance(filter_modified_from, datetime):
                _query_params.append(
                    (
                        'filterModifiedFrom',
                        filter_modified_from.strftime(
                            self.api_client.configuration.datetime_format
                        )
                    )
                )
            else:
                _query_params.append(('filterModifiedFrom', filter_modified_from))
            
        if filter_modified_to is not None:
            if isinstance(filter_modified_to, datetime):
                _query_params.append(
                    (
                        'filterModifiedTo',
                        filter_modified_to.strftime(
                            self.api_client.configuration.datetime_format
                        )
                    )
                )
            else:
                _query_params.append(('filterModifiedTo', filter_modified_to))
            
        if page_size is not None:
            
            _query_params.append(('pageSize', page_size))
            
        if page_number is not None:
            
            _query_params.append(('pageNumber', page_number))
            
        if page_after is not None:
            
            _query_params.append(('pageAfter', page_after))
            
        if page_before is not None:
            
            _query_params.append(('pageBefore', page_before))
            
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/v1/talents',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def show_talent(
        self,
        talent_id: StrictStr,
        language: Annotated[Optional[StrictStr], Field(description="Language code to retrieve translated content (e.g. en-US, pl-PL, de-DE, it-IT, he-IL). When provided, the response includes translated field values for the specified language.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> TalentSchema:
        """Show Talent

        This endpoint retrieves details of a specific talent from your account. You can view information such as name, and other relevant attributes of the talent. Use the optional `language` query parameter to retrieve translated content for a specific language.

        :param talent_id: (required)
        :type talent_id: str
        :param language: Language code to retrieve translated content (e.g. en-US, pl-PL, de-DE, it-IT, he-IL). When provided, the response includes translated field values for the specified language.
        :type language: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._show_talent_serialize(
            talent_id=talent_id,
            language=language,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def show_talent_with_http_info(
        self,
        talent_id: StrictStr,
        language: Annotated[Optional[StrictStr], Field(description="Language code to retrieve translated content (e.g. en-US, pl-PL, de-DE, it-IT, he-IL). When provided, the response includes translated field values for the specified language.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[TalentSchema]:
        """Show Talent

        This endpoint retrieves details of a specific talent from your account. You can view information such as name, and other relevant attributes of the talent. Use the optional `language` query parameter to retrieve translated content for a specific language.

        :param talent_id: (required)
        :type talent_id: str
        :param language: Language code to retrieve translated content (e.g. en-US, pl-PL, de-DE, it-IT, he-IL). When provided, the response includes translated field values for the specified language.
        :type language: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._show_talent_serialize(
            talent_id=talent_id,
            language=language,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def show_talent_without_preload_content(
        self,
        talent_id: StrictStr,
        language: Annotated[Optional[StrictStr], Field(description="Language code to retrieve translated content (e.g. en-US, pl-PL, de-DE, it-IT, he-IL). When provided, the response includes translated field values for the specified language.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Show Talent

        This endpoint retrieves details of a specific talent from your account. You can view information such as name, and other relevant attributes of the talent. Use the optional `language` query parameter to retrieve translated content for a specific language.

        :param talent_id: (required)
        :type talent_id: str
        :param language: Language code to retrieve translated content (e.g. en-US, pl-PL, de-DE, it-IT, he-IL). When provided, the response includes translated field values for the specified language.
        :type language: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._show_talent_serialize(
            talent_id=talent_id,
            language=language,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _show_talent_serialize(
        self,
        talent_id,
        language,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        if language is not None:
            
            _query_params.append(('language', language))
            
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/v1/talents/{talentId}',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def talent_candidates_options(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> None:
        """Talent Candidates Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_candidates_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def talent_candidates_options_with_http_info(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[None]:
        """Talent Candidates Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_candidates_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def talent_candidates_options_without_preload_content(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Talent Candidates Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_candidates_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _talent_candidates_options_serialize(
        self,
        talent_id,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter




        # authentication setting
        _auth_settings: List[str] = [
        ]

        return self.api_client.param_serialize(
            method='OPTIONS',
            resource_path='/v1/talents/{talentId}/candidates',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def talent_candidates_relationships_options(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> None:
        """Talent Candidates Relationships Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_candidates_relationships_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def talent_candidates_relationships_options_with_http_info(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[None]:
        """Talent Candidates Relationships Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_candidates_relationships_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def talent_candidates_relationships_options_without_preload_content(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Talent Candidates Relationships Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_candidates_relationships_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _talent_candidates_relationships_options_serialize(
        self,
        talent_id,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter




        # authentication setting
        _auth_settings: List[str] = [
        ]

        return self.api_client.param_serialize(
            method='OPTIONS',
            resource_path='/v1/talents/{talentId}/relationships/candidates',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def talent_options(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> None:
        """Talent Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def talent_options_with_http_info(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[None]:
        """Talent Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def talent_options_without_preload_content(
        self,
        talent_id: StrictStr,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Talent Options

        Enable CORS by returning correct headers

        :param talent_id: (required)
        :type talent_id: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talent_options_serialize(
            talent_id=talent_id,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _talent_options_serialize(
        self,
        talent_id,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter




        # authentication setting
        _auth_settings: List[str] = [
        ]

        return self.api_client.param_serialize(
            method='OPTIONS',
            resource_path='/v1/talents/{talentId}',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def talents_options(
        self,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> None:
        """Talents Options

        Enable CORS by returning correct headers

        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talents_options_serialize(
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def talents_options_with_http_info(
        self,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[None]:
        """Talents Options

        Enable CORS by returning correct headers

        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talents_options_serialize(
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def talents_options_without_preload_content(
        self,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Talents Options

        Enable CORS by returning correct headers

        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._talents_options_serialize(
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': None,
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _talents_options_serialize(
        self,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter




        # authentication setting
        _auth_settings: List[str] = [
        ]

        return self.api_client.param_serialize(
            method='OPTIONS',
            resource_path='/v1/talents',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def update_talent(
        self,
        talent_id: StrictStr,
        update_talent_request_body: Annotated[UpdateTalentRequestBody, Field(description="A JSON object containing Talent information")],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> TalentSchema:
        """Update Talent

        This endpoint allows you to update details of a specific talent in your account. You can modify information such as name, and other relevant attributes of the talent. Only the fields provided in the request will be updated.

        :param talent_id: (required)
        :type talent_id: str
        :param update_talent_request_body: A JSON object containing Talent information (required)
        :type update_talent_request_body: UpdateTalentRequestBody
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._update_talent_serialize(
            talent_id=talent_id,
            update_talent_request_body=update_talent_request_body,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def update_talent_with_http_info(
        self,
        talent_id: StrictStr,
        update_talent_request_body: Annotated[UpdateTalentRequestBody, Field(description="A JSON object containing Talent information")],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[TalentSchema]:
        """Update Talent

        This endpoint allows you to update details of a specific talent in your account. You can modify information such as name, and other relevant attributes of the talent. Only the fields provided in the request will be updated.

        :param talent_id: (required)
        :type talent_id: str
        :param update_talent_request_body: A JSON object containing Talent information (required)
        :type update_talent_request_body: UpdateTalentRequestBody
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._update_talent_serialize(
            talent_id=talent_id,
            update_talent_request_body=update_talent_request_body,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def update_talent_without_preload_content(
        self,
        talent_id: StrictStr,
        update_talent_request_body: Annotated[UpdateTalentRequestBody, Field(description="A JSON object containing Talent information")],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Update Talent

        This endpoint allows you to update details of a specific talent in your account. You can modify information such as name, and other relevant attributes of the talent. Only the fields provided in the request will be updated.

        :param talent_id: (required)
        :type talent_id: str
        :param update_talent_request_body: A JSON object containing Talent information (required)
        :type update_talent_request_body: UpdateTalentRequestBody
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._update_talent_serialize(
            talent_id=talent_id,
            update_talent_request_body=update_talent_request_body,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "TalentSchema",
            '400': "ErrorSchema",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _update_talent_serialize(
        self,
        talent_id,
        update_talent_request_body,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if talent_id is not None:
            _path_params['talentId'] = talent_id
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter
        if update_talent_request_body is not None:
            _body_params = update_talent_request_body


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )

        # set the HTTP header `Content-Type`
        if _content_type:
            _header_params['Content-Type'] = _content_type
        else:
            _default_content_type = (
                self.api_client.select_header_content_type(
                    [
                        'application/json'
                    ]
                )
            )
            if _default_content_type is not None:
                _header_params['Content-Type'] = _default_content_type

        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth', 
            'OAuth2Auth'
        ]

        return self.api_client.param_serialize(
            method='PATCH',
            resource_path='/v1/talents/{talentId}',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )


