VCV response API
The response API from VCV — 12 operation(s) for response.
The response API from VCV — 12 operation(s) for response.
openapi: 3.0.1
info:
title: VCV chatbot response API
description: open api
version: v3
servers:
- url: https://my.vcv.ai
- url: https://my.vcv.ru
- url: '{hostname}'
variables:
hostname:
default: http://localhost:8080
security:
- bearerAuth: []
tags:
- name: response
paths:
/api/v3/responses:
get:
description: Get responses list
tags:
- response
parameters:
- $ref: '#/components/parameters/pagination_page'
- $ref: '#/components/parameters/pagination_page_size'
- $ref: '#/components/parameters/sort_order'
- name: sort[by]
in: query
description: sort field
required: false
schema:
type: string
default: id
enum:
- id
- candidate
- email
- phone
- vacancy
- vacancyLanguage
- creator
- date_sent
- created_at
- rating
- response_status_id
- response_source_id
- response_attribute
- name: sort[code]
in: query
description: 'Only applicable if sort[by]=response_attribute.
Sort by response attribute value, code must be equal to "code" field of response attribute, see [/api/v3/response-attributes](#/integration/get_api_v3_response_attributes).
See values: [/api/v3/response-attribute-values](#/integration/get_api_v3_response_attribute_values)
'
required: false
schema:
type: string
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- vacancy
- vacancy.user
- vacancy.userName
- vacancy.user.userName
- vacancy.language
- vacancy.company
- candidate
- candidate.name
- candidate.phone
- source
- status
- statusHistory
- interview
- interview.interviewRefusal
- comments
- comments.user
- comments.userName
- tags
- attributeValues
- attributeValues.attribute
- invite
- video
- survey
- survey.records
- survey.questions
- talentqCandidate
- resumes
- $ref: '#/components/parameters/filter_id'
- $ref: '#/components/parameters/filter_vacancy_id'
- $ref: '#/components/parameters/filter_response_status_id'
- $ref: '#/components/parameters/filter_created_at_from'
- $ref: '#/components/parameters/filter_created_at_to'
- $ref: '#/components/parameters/filter_vacancy_user_id'
- name: filter[candidate_id]
in: query
description: candidate id filter
required: false
schema:
oneOf:
- type: integer
- type: array
items:
type: integer
- name: filter[external_id]
in: query
description: External id filter
required: false
schema:
oneOf:
- type: string
- type: array
items:
type: string
- name: filter[sent]
in: query
description: Sent filter
required: false
schema:
type: boolean
- name: filter[vacancy][language_id]
in: query
description: vacancy language id filter
required: false
schema:
oneOf:
- type: integer
- type: array
items:
type: integer
- name: filter[tag_id]
in: query
description: response tag id filter
required: false
schema:
oneOf:
- type: integer
- type: array
items:
type: integer
- name: filter[date_sent][from]
in: query
description: date sent filter from
required: false
schema:
type: string
format: date-time
- name: filter[date_sent][to]
in: query
description: date sent filter to
required: false
schema:
type: string
format: date-time
- name: fields[]
in: query
description: Fields to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- token
- is_demo
- agreed_at
responses:
'200':
description: list of responses
content:
application/json:
schema:
properties:
_total_items:
type: integer
_page:
type: integer
_page_count:
type: integer
_links:
properties:
self:
type: object
properties:
href:
type: string
format: uri
next:
type: object
properties:
href:
type: string
format: uri
last:
type: object
properties:
href:
type: string
format: uri
type: object
_embedded:
type: object
properties:
responses:
type: array
items:
allOf:
- $ref: '#/components/schemas/Response'
- type: object
properties:
candidate:
allOf:
- $ref: '#/components/schemas/Candidate'
- type: object
properties:
name:
$ref: '#/components/schemas/CandidateName'
phone:
$ref: '#/components/schemas/CandidatePhone'
source:
$ref: '#/components/schemas/ResponseSource'
_embedded:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
comments:
type: array
items:
$ref: '#/components/schemas/ResponseComment'
vacancy:
$ref: '#/components/schemas/Vacancy'
interview:
$ref: '#/components/schemas/Interview'
type: object
/api/v3/responses/{id}:
get:
description: Get response detail
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- vacancy
- vacancy.user
- vacancy.userName
- vacancy.user.userName
- vacancy.language
- vacancy.company
- candidate
- candidate.name
- candidate.phone
- source
- status
- statusHistory
- interview
- interview.interviewRefusal
- comments
- comments.user
- comments.userName
- tags
- attributeValues
- attributeValues.attribute
- invite
- video
- survey
- survey.records
- survey.questions
- talentqCandidate
- resumes
- name: fields[]
in: query
description: Fields to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- token
- is_demo
- agreed_at
responses:
'200':
description: Response detail
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Response'
- type: object
properties:
candidate:
allOf:
- $ref: '#/components/schemas/Candidate'
- type: object
properties:
name:
$ref: '#/components/schemas/CandidateName'
phone:
$ref: '#/components/schemas/CandidatePhone'
source:
$ref: '#/components/schemas/ResponseSource'
_embedded:
type: object
properties:
status:
$ref: '#/components/schemas/ResponseStatus'
comments:
type: array
items:
$ref: '#/components/schemas/ResponseComment'
vacancy:
$ref: '#/components/schemas/Vacancy'
interview:
$ref: '#/components/schemas/Interview'
invite:
$ref: '#/components/schemas/Invite'
patch:
description: Update response
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
requestBody:
required: true
content:
application/json:
schema:
properties:
response_status_id:
type: integer
type: object
responses:
'200':
description: Updated response
content:
application/json:
schema:
$ref: '#/components/schemas/Response'
/api/v3/response-comments:
get:
description: Get response comments list
tags:
- response
parameters:
- $ref: '#/components/parameters/pagination_page'
- $ref: '#/components/parameters/pagination_page_size'
- $ref: '#/components/parameters/sort_order'
- $ref: '#/components/parameters/filter_id'
- $ref: '#/components/parameters/filter_response_id'
- $ref: '#/components/parameters/filter_user_id'
- name: filter[message]
in: query
description: Message body filter
required: false
schema:
type: string
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- user
- response
responses:
'200':
description: list of response comments
content:
application/json:
schema:
properties:
_total_items:
type: integer
_page:
type: integer
_page_count:
type: integer
_links:
properties:
self:
type: object
properties:
href:
type: string
format: uri
next:
type: object
properties:
href:
type: string
format: uri
last:
type: object
properties:
href:
type: string
format: uri
type: object
_embedded:
type: object
properties:
comments:
type: array
items:
allOf:
- $ref: '#/components/schemas/ResponseComment'
- type: object
properties:
_embedded:
type: object
properties:
user:
$ref: '#/components/schemas/User'
response:
$ref: '#/components/schemas/Response'
type: object
post:
description: Create response comment
tags:
- response
parameters:
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- response
- user
requestBody:
required: true
content:
application/json:
schema:
properties:
response_id:
type: integer
message:
type: string
type: object
responses:
'200':
description: Created comment
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseComment'
- type: object
properties:
_embedded:
type: object
properties:
user:
$ref: '#/components/schemas/User'
response:
$ref: '#/components/schemas/Response'
/api/v3/response-comments/{id}:
get:
description: Get comment
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- response
- user
responses:
'200':
description: Comment
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseComment'
- type: object
properties:
_embedded:
type: object
properties:
user:
$ref: '#/components/schemas/User'
response:
$ref: '#/components/schemas/Response'
patch:
description: Update comment
parameters:
- $ref: '#/components/parameters/id'
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- user
- response
tags:
- response
requestBody:
required: true
content:
application/json:
schema:
properties:
message:
type: string
type: object
responses:
'200':
description: Updated comment
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseComment'
- type: object
properties:
_embedded:
type: object
properties:
user:
$ref: '#/components/schemas/User'
response:
$ref: '#/components/schemas/Response'
delete:
description: Delete comment
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Deleted comment
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseComment'
/api/v3/response-statuses:
get:
description: Get response status list
tags:
- response
parameters:
- $ref: '#/components/parameters/pagination_page'
- $ref: '#/components/parameters/pagination_page_size'
- $ref: '#/components/parameters/sort_order'
- name: sort[by]
in: query
description: sort field
required: false
schema:
type: string
default: id
enum:
- id
- sort_order
- title
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- parent
responses:
'200':
description: list of response statuses
content:
application/json:
schema:
properties:
_total_items:
type: integer
_page:
type: integer
_page_count:
type: integer
_links:
properties:
self:
type: object
properties:
href:
type: string
format: uri
next:
type: object
properties:
href:
type: string
format: uri
last:
type: object
properties:
href:
type: string
format: uri
type: object
_embedded:
type: object
properties:
statuses:
type: array
items:
allOf:
- $ref: '#/components/schemas/ResponseStatus'
- type: object
properties:
_embedded:
type: object
properties:
parent:
$ref: '#/components/schemas/ResponseStatus'
type: object
post:
tags:
- response
description: Create response statuses
parameters:
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- parent
requestBody:
required: true
content:
application/json:
schema:
items:
required:
- title
properties:
title:
type: string
sort_order:
type: integer
nullable: true
color:
type: string
on_top:
type: boolean
nullable: true
type: object
responses:
'200':
description: list of response statuses
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseStatus'
- type: object
properties:
_links:
properties:
self:
type: object
properties:
href:
type: string
format: uri
/api/v3/response-statuses/{id}:
get:
description: Get response status detail
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- parent
responses:
'200':
description: ResponseStatus
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseStatus'
- type: object
properties:
_embedded:
type: object
properties:
parent:
$ref: '#/components/schemas/ResponseStatus'
patch:
description: Update response status
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- user
- parent
requestBody:
required: true
content:
application/json:
schema:
properties:
title:
type: string
active:
type: boolean
on_top:
type: boolean
sort_order:
type: integer
parent_id:
type: integer
id_compatibility:
type: integer
color:
type: string
type: object
responses:
'200':
description: Updated response status
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseStatus'
- type: object
properties:
_embedded:
type: object
properties:
parent:
$ref: '#/components/schemas/ResponseStatus'
delete:
description: Delete response status
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Deleted response status
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseStatus'
/api/v3/responses/{responseId}/resumes/{resumeId}/download:
get:
description: Download response resume file
tags:
- response
parameters:
- in: path
name: responseId
description: Response id
required: true
schema:
type: integer
- in: path
name: resumeId
description: Resume id
required: true
schema:
type: integer
- in: query
name: token
description: User access token
required: true
schema:
type: string
responses:
'200':
description: PDF file, PNG image, JPG image, etc
content:
application/pdf:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
headers:
Content-Disposition:
schema:
type: string
example: attachment; filename="name.pdf"
'403':
description: Forbidden
'404':
description: Response or resume not found, or invalid URL
/api/v3/response-resumes:
get:
description: Get list of resumes attached to responses
tags:
- response
parameters:
- $ref: '#/components/parameters/pagination_page'
- $ref: '#/components/parameters/pagination_page_size'
- $ref: '#/components/parameters/sort_order'
- name: sort[by]
in: query
description: Sort field
required: false
schema:
type: string
default: created_at
enum:
- id
- response_id
- created_at
- $ref: '#/components/parameters/filter_id'
- $ref: '#/components/parameters/filter_response_id'
- $ref: '#/components/parameters/filter_created_at_from'
- $ref: '#/components/parameters/filter_created_at_to'
- $ref: '#/components/parameters/filter_is_file'
responses:
'200':
description: List of response resumes
content:
application/json:
schema:
type: object
properties:
_total_items:
type: integer
_page:
type: integer
_page_count:
type: integer
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
format: uri
next:
type: object
properties:
href:
type: string
format: uri
last:
type: object
properties:
href:
type: string
format: uri
_embedded:
type: object
properties:
response_resumes:
type: array
items:
allOf:
- $ref: '#/components/schemas/ResponseResume'
- type: object
properties:
is_file:
type: boolean
created_at:
type: string
format: date-time
responseResumeUrl:
type: string
nullable: true
responseSecondResumeUrl:
type: string
nullable: true
/api/v3/response-resume/{id}:
get:
description: Get response resume by id
tags:
- response
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Response resume
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResponseResume'
- type: object
properties:
is_file:
type: boolean
description: Indicates if resume was uploaded as a file (true) or as an URL (false).
created_at:
type: string
format: date-time
'404':
description: Resume not found
/api/v3/public/vacancy/{vacancyToken}/response-resume/{responseToken}:
post:
description: Upload response resume
tags:
- response
parameters:
- in: path
name: vacancyToken
description: Vacancy public url token
required: true
schema:
type: string
- in: path
name: responseToken
description: Response public url token
required: true
schema:
type: string
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
resume_url:
type: string
format: uri
description: URL of the resume (optional, must start with http or https).
pattern: ^https?://([a-z0-9-]+\.)+[a-z]{2,}/(resume|cv|profile|candidate)/[a-z0-9-]+
resume:
type: string
format: binary
description: Resume file (optional, PDF, DOC, or DOCX).
required: []
responses:
'200':
description: Resume uploaded successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
resume:
$ref: '#/components/schemas/ResponseResume'
response:
$ref: '#/components/schemas/Response'
/api/v3/response-events:
get:
description: Get response events list
tags:
- response
parameters:
- $ref: '#/components/parameters/pagination_page'
- $ref: '#/components/parameters/pagination_page_size'
- $ref: '#/components/parameters/sort_order'
- $ref: '#/components/parameters/filter_id'
- $ref: '#/components/parameters/filter_response_id'
- $ref: '#/components/parameters/filter_vacancy_id'
- name: filter[type]
in: query
description: Event type filter
required: false
schema:
type: integer
enum:
- 1
- 2
description: "Type ids:\n * `1` - Response Status Changed\n * `2` - Email sent\n"
- name: with[]
in: query
description: Relations to retrieve
required: false
schema:
type: array
items:
type: string
enum:
- vacancy
- response
- user
- user.userName
responses:
'200':
description: list of response events
content:
application/json:
schema:
properties:
_total_items:
type: integer
_page:
type: integer
_page_count:
type: integer
_links:
properties:
self:
type: object
properties:
href:
type: string
format: uri
next:
type: object
properties:
href:
type: string
format: uri
last:
type: object
properties:
href:
type: string
format: uri
type: object
_embedded:
type: object
properties:
attributes:
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vcv/refs/heads/main/openapi/vcv-response-api-openapi.yml