WorkApplicationWriteRequest work.application-write-request@1

Generated at from openvibe-contracts v0.150.0 and openvibe-sdk v0.44.0.

Version
1.0.0
Owner
work
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/work/application-write-request.v1.json

work.application-write-request@1: bodies of work.application.manage. POST /api/v1/me/applications takes a listing_id (title, company and URL are copied from the listing; a second POST for the same listing answers the existing application with 200) or title + company + url by hand. PATCH /api/v1/me/applications/:id takes status, notes, applied_at, next_step and next_step_at; a status change appends an event, and status applied with no applied_at stamps it now. Unknown fields are 400.

Fields

FieldTypeRequiredDescriptionConstraints
listing_idstring
  • minLength 1
  • maxLength 200
titlestring
  • minLength 1
  • maxLength 500
companystring
  • minLength 1
  • maxLength 200
urlstring
  • format uri
  • maxLength 2000
statusenum
  • one of "saved", "applied", "interviewing", "offer", "rejected", "withdrawn"
notesstring
  • maxLength 5000
applied_atstring | null
  • format date-time
next_stepstring
  • maxLength 200
next_step_atstring | null
  • format date-time

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: from-listing
{
  "listing_id": "job_arbeitnow_backend-engineer-1"
}
Valid: patch
{
  "status": "interviewing",
  "next_step": "Second interview",
  "next_step_at": "2026-10-16T17:00:00.000Z"
}
Rejected: unknown-field
{
  "salary": 100000
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('work.application-write-request@1', value);   // { valid, errors: [{ path, message }] }