Skip to content

Commit

Permalink
Merge pull request #92 from huntflow/INT-561_create_ApplicantResponse…
Browse files Browse the repository at this point in the history
…_entity

[INT-561] - Create ApplicantResponse entity.
  • Loading branch information
polina-koval authored Apr 1, 2024
2 parents 40841e8 + 9d46499 commit 713f709
Show file tree
Hide file tree
Showing 6 changed files with 315 additions and 572 deletions.
2 changes: 2 additions & 0 deletions huntflow_api_client/entities/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from huntflow_api_client.entities.applicant_offers import ApplicantOffer
from huntflow_api_client.entities.applicant_on_vacancy import ApplicantOnVacancy
from huntflow_api_client.entities.applicant_on_vacancy_status import ApplicantOnVacancyStatus
from huntflow_api_client.entities.applicant_reponse import ApplicantResponse
from huntflow_api_client.entities.applicants import Applicant
from huntflow_api_client.entities.coworkers import Coworker
from huntflow_api_client.entities.delayed_tasks import DelayedTask
Expand Down Expand Up @@ -41,6 +42,7 @@
"ApplicantOffer",
"ApplicantOnVacancy",
"ApplicantOnVacancyStatus",
"ApplicantResponse",
"ApplicantTag",
"ApplicantsQuestionary",
"Coworker",
Expand Down
31 changes: 31 additions & 0 deletions huntflow_api_client/entities/applicant_reponse.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from typing import Any, Dict, Optional

from huntflow_api_client.entities.base import BaseEntity, ListEntityMixin
from huntflow_api_client.models.response.applicant_response import ApplicantResponsesListResponse


class ApplicantResponse(BaseEntity, ListEntityMixin):
async def list(
self,
account_id: int,
applicant_id: int,
count: int = 30,
next_page_cursor: Optional[str] = None,
) -> ApplicantResponsesListResponse:
"""
API method reference:
https://api.huntflow.ai/v2/docs#get-/accounts/-account_id-/applicants/-applicant_id-/responses
:param account_id: Organization ID
:param applicant_id: Applicant ID
:param count: Number of items per page
:param next_page_cursor: Next page cursor
:return: List of applicant's responses from job sites
"""
path = f"/accounts/{account_id}/applicants/{applicant_id}/responses"
params: Dict[str, Any] = {"count": count}
if next_page_cursor:
params["next_page_cursor"] = next_page_cursor
response = await self._api.request("GET", path, params=params)
return ApplicantResponsesListResponse.model_validate(response.json())
31 changes: 31 additions & 0 deletions huntflow_api_client/models/response/applicant_response.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from datetime import datetime
from typing import List, Optional

from pydantic import BaseModel, Field


class ApplicantResponseVacancy(BaseModel):
id: int = Field(..., description="Vacancy ID")
position: str = Field(..., description="The name of the vacancy (occupation)")


class ApplicantResponseVacancyExternal(BaseModel):
id: int = Field(..., description="Publication ID")
foreign: str = Field(..., description="Foreign publication ID (from job site)")


class ApplicantResponse(BaseModel):
id: int = Field(..., description="Response ID")
foreign: str = Field(..., description="Foreign response ID (from job site)")
created: datetime
applicant_external: int = Field(..., description="Resume ID")
vacancy: ApplicantResponseVacancy = Field(..., description="Vacancy")
vacancy_external: ApplicantResponseVacancyExternal = Field(
...,
description="Publication of a vacancy for which an applicant responded",
)


class ApplicantResponsesListResponse(BaseModel):
items: List[ApplicantResponse] = Field(..., description="List of applicant's responses")
next_page_cursor: Optional[str] = Field(None, description="Next page cursor")
Loading

0 comments on commit 713f709

Please sign in to comment.