Перейти к основному содержимому

Список кандидатов

GraphQL запросы на примере работы со списком кандидатов.

Получение списка кандидатов

Для того чтобы получить список кандидатов, необходимо выполнить следующий graphql запрос к persons:

query PersonsList {
persons {
items {
id
age
firstName
middleName
lastName
birthDay
area {
name
}
source {
name
}
photos {
items {
url
}
}
contacts {
items {
type
value
}
}
resumes {
items {
... on ResumeItem {
name
source {
type
}
}
}
}
}
}
}

Посмотреть в playground

примечание

PersonItem - список доступных полей кандидата

Результат запроса

{
"data": {
"persons": {
"items": [
{
"id": 1,
"age": 26,
"firstName": "Cергей",
"middleName": "Викторович",
"lastName": "Гончаров",
"birthDay": 862876800000,
"area": {
"name": "Москва"
},
"source": {
"name": "Отклик hh"
},
"photos": {
"items": [
{
"url": "/ats/person/photo/xyz"
},
{
"url": "/ats/person/photo/abcdef"
}
]
},
"contacts": {
"items": [
{
"type": "cell",
"value": "+7 812 458-45-45"
},
{
"type": "email",
"value": "feedback@talantix.ru"
}
]
},
"resumes": {
"items": [
{
"name": "Резюме hh",
"source": {
"type": "hh"
}
}
]
}
},
{
"id": 2,
"age": 25,
"firstName": "Иван",
"middleName": "Викторович",
"lastName": "Гончаров",
"birthDay": 891561600000,
"area": {
"name": "Минск"
},
"source": {
"name": "Отклик hh"
},
"photos": null,
"contacts": {
"items": [
{
"type": "cell",
"value": "+7 812 458-45-45"
},
{
"type": "email",
"value": "talantix@talantix.ru"
}
]
},
"resumes": {
"items": [
{
"name": "Резюме hh",
"source": {
"type": "hh"
}
}
]
}
}
]
}
}
}

Фильтрация списка кандидатов

Для фильтрации кандидатов по различным полям используется аргумент filter в запросе persons. Для фильтрации кандидатов с возрастом от 18 до 30 лет необходимо выполнить запрос:

query PersonsListFilter {
persons(filter: {ageFrom: 18, ageTo: 30}) {
items {
age
firstName
lastName
}
}
}

Посмотреть в playground

примечание

PersonFilterInput - подробное описание аргумента filter

Результат запроса

{
"data": {
"persons": {
"items": [
{
"age": 25,
"firstName": "Cергей",
"lastName": "Смирнов"
},
{
"age": 29,
"firstName": "Анрей",
"lastName": "Кузнецов"
}
]
}
}
}

Поиск по списку кандидатов

Для полнотекстового поиска используется аргумент filter с параметром search и searchFrom. Для поиска кандидатов по номеру телефона, необходимо выполнить следующий graphql запрос:

query PersonsListSearch {
persons(filter: {search: "+7 812 458-45-45", searchFrom: CONTACTS}) {
items {
firstName
lastName
contacts {
items {
type
value
}
}
}
}
}

Посмотреть в playground

примечание

searchFrom - список доступных значений searchFrom.

search - подробное описание параметра search.

Результат запроса

{
"data": {
"persons": {
"items": [
{
"firstName": "Олег",
"lastName": "Кузнецов",
"contacts": {
"items": [
{
"type": "cell",
"value": "7 812 458-45-45"
},
{
"type": "email",
"value": "email@email.ru"
}
]
}
},
{
"firstName": "Cергей",
"lastName": "Кузнецов",
"contacts": {
"items": [
{
"type": "cell",
"value": "7 812 458-45-45"
}
]
}
}
]
}
}
}

Пагинация списка кандидатов

Чтобы запросить следующую страницу по списку, нужно использовать курсор для аргумента after в запросе persons. Для этого необходимо выполнить graphql запрос:

query PersonListPagination {
persons(after: "123456789|2") {
pageInfo {
hasNextPage
endCursor
}
items {
firstName
lastName
}
}
}

Посмотреть в playground

подсказка

Пагинация - подробное описание работы пагинации

Результат запроса

{
"data": {
"persons": {
"pageInfo": {
"endCursor": "123456789|68",
"hasNextPage": true
},
"items": [
{
"firstName": "Олег",
"lastName": "Кузнецов"
},
{
"firstName": "Cергей",
"lastName": "Кузнецов"
}
]
}
}
}