Skip to content
Sections

Careers

Submit a public career application

POST/workforce/careers/postings/{publicSlug}/apply

Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability. Reusing the same submission key returns the existing application when the original transaction already committed. Submission is intentionally public; the returned candidate capability protects later access.

Authentication

A Hallify account session is not required. Follow this operation’s prerequisites and restrictions.

Connection guide

Parameters

publicSlugPath · Required

Stable public slug identifying the published career posting; it is not a candidate credential.

string
Full definition
{
  "type": "string",
  "example": "example"
}

Request body

Required

Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability.

application/json

PublicCandidateApplicationDto
Full definition
{
  "$ref": "#/components/schemas/PublicCandidateApplicationDto"
}

Responses

201Created application in the APPLIED stage together with the candidate-portal token and its expiration time.
PublicApplicationCreatedDto
Full definition
{
  "$ref": "#/components/schemas/PublicApplicationCreatedDto"
}
Example response · 201 · application/json
{
  "application": {
    "id": "0120f0fe-6880-47e8-895d-c092d269cdd1",
    "requisitionTitle": "Example title",
    "currentStage": {
      "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
      "code": "EXAMPLE",
      "name": "Example name",
      "category": "APPLIED",
      "isTerminal": true,
      "sortOrder": 1,
      "revision": 1
    },
    "status": "ACTIVE",
    "appliedAt": "2026-01-15T12:00:00.000Z",
    "updatedAt": "2026-01-15T13:00:00.000Z",
    "revision": 1,
    "canWithdraw": true
  },
  "candidatePortalToken": "synthetic-example-credential",
  "candidatePortalTokenExpiresAt": "2026-12-31T18:00:00.000Z"
}

Schemas

PublicCandidateApplicationDto

Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability.

submissionKeyRequired

Hallify UUID identifying submission key associated with public candidate application.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying submission key associated with public candidate application.",
  "example": "e8d3f2b3-bd92-4056-8aa4-7c77fa2f8e4b"
}
firstNameRequired

Human-readable first name for public candidate application. Accepted values enforce maximum length 120.

string
Full definition
{
  "type": "string",
  "maxLength": 120,
  "description": "Human-readable first name for public candidate application. Accepted values enforce maximum length 120.",
  "example": "Example"
}
lastNameRequired

Human-readable last name for public candidate application. Accepted values enforce maximum length 120.

string
Full definition
{
  "type": "string",
  "maxLength": 120,
  "description": "Human-readable last name for public candidate application. Accepted values enforce maximum length 120.",
  "example": "User"
}
preferredNameOptional

Human-readable preferred name for public candidate application. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.

string · null
Full definition
{
  "type": "string",
  "maxLength": 120,
  "nullable": true,
  "description": "Human-readable preferred name for public candidate application. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.",
  "example": "Example name"
}
emailRequired

Email address recorded for email in public candidate application. Accepted values enforce maximum length 254.

string · email
Full definition
{
  "type": "string",
  "maxLength": 254,
  "description": "Email address recorded for email in public candidate application. Accepted values enforce maximum length 254.",
  "format": "email",
  "example": "user@example.test"
}
phoneOptional

Telephone number recorded for phone in public candidate application. Accepted values enforce maximum length 32. Null means no value is recorded for this representation.

string · null
Full definition
{
  "type": "string",
  "maxLength": 32,
  "nullable": true,
  "description": "Telephone number recorded for phone in public candidate application. Accepted values enforce maximum length 32. Null means no value is recorded for this representation.",
  "example": "+995555000000"
}
coverLetterOptional

Cover letter for public candidate application. Accepted values enforce maximum length 20000. Null means no value is recorded for this representation.

string · null
Full definition
{
  "type": "string",
  "maxLength": 20000,
  "nullable": true,
  "description": "Cover letter for public candidate application. Accepted values enforce maximum length 20000. Null means no value is recorded for this representation.",
  "example": "example"
}
sourceOptional

Source classification identifying where source originated. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.

string · null
Full definition
{
  "type": "string",
  "maxLength": 120,
  "nullable": true,
  "description": "Source classification identifying where source originated. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.",
  "example": "example"
}
privacyNoticeVersionRequired

Privacy notice version for public candidate application.

string
Full definition
{
  "type": "string",
  "default": "2026-07-28",
  "description": "Privacy notice version for public candidate application.",
  "example": "2026-07-28"
}
Full definition
{
  "type": "object",
  "properties": {
    "submissionKey": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying submission key associated with public candidate application.",
      "example": "e8d3f2b3-bd92-4056-8aa4-7c77fa2f8e4b"
    },
    "firstName": {
      "type": "string",
      "maxLength": 120,
      "description": "Human-readable first name for public candidate application. Accepted values enforce maximum length 120.",
      "example": "Example"
    },
    "lastName": {
      "type": "string",
      "maxLength": 120,
      "description": "Human-readable last name for public candidate application. Accepted values enforce maximum length 120.",
      "example": "User"
    },
    "preferredName": {
      "type": "string",
      "maxLength": 120,
      "nullable": true,
      "description": "Human-readable preferred name for public candidate application. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.",
      "example": "Example name"
    },
    "email": {
      "type": "string",
      "maxLength": 254,
      "description": "Email address recorded for email in public candidate application. Accepted values enforce maximum length 254.",
      "format": "email",
      "example": "user@example.test"
    },
    "phone": {
      "type": "string",
      "maxLength": 32,
      "nullable": true,
      "description": "Telephone number recorded for phone in public candidate application. Accepted values enforce maximum length 32. Null means no value is recorded for this representation.",
      "example": "+995555000000"
    },
    "coverLetter": {
      "type": "string",
      "maxLength": 20000,
      "nullable": true,
      "description": "Cover letter for public candidate application. Accepted values enforce maximum length 20000. Null means no value is recorded for this representation.",
      "example": "example"
    },
    "source": {
      "type": "string",
      "maxLength": 120,
      "nullable": true,
      "description": "Source classification identifying where source originated. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.",
      "example": "example"
    },
    "privacyNoticeVersion": {
      "type": "string",
      "default": "2026-07-28",
      "description": "Privacy notice version for public candidate application.",
      "example": "2026-07-28"
    }
  },
  "required": [
    "submissionKey",
    "firstName",
    "lastName",
    "email",
    "privacyNoticeVersion"
  ],
  "description": "Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability.",
  "example": {
    "submissionKey": "e8d3f2b3-bd92-4056-8aa4-7c77fa2f8e4b",
    "firstName": "Example",
    "lastName": "User",
    "email": "user@example.test",
    "privacyNoticeVersion": "2026-07-28"
  }
}
PublicApplicationCreatedDto

Created application in the APPLIED stage together with the candidate-portal token and its expiration time.

applicationRequired

Candidate portal application embedded as application in public application created.

allOf
Full definition
{
  "allOf": [
    {
      "$ref": "#/components/schemas/CandidatePortalApplicationDto"
    }
  ],
  "description": "Candidate portal application embedded as application in public application created.",
  "example": {
    "id": "0120f0fe-6880-47e8-895d-c092d269cdd1",
    "requisitionTitle": "Example title",
    "currentStage": {
      "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
      "code": "EXAMPLE",
      "name": "Example name",
      "category": "APPLIED",
      "isTerminal": true,
      "sortOrder": 1,
      "revision": 1
    },
    "status": "ACTIVE",
    "appliedAt": "2026-01-15T12:00:00.000Z",
    "updatedAt": "2026-01-15T13:00:00.000Z",
    "revision": 1,
    "canWithdraw": true
  }
}
candidatePortalTokenRequired

One-time candidate portal credential. Only its hash is persisted.

string
Full definition
{
  "type": "string",
  "description": "One-time candidate portal credential. Only its hash is persisted.",
  "example": "synthetic-example-credential"
}
candidatePortalTokenExpiresAtRequired

Expiration time of the candidate portal token; after this instant the credential is rejected.

string · date-time
Full definition
{
  "type": "string",
  "description": "Expiration time of the candidate portal token; after this instant the credential is rejected.",
  "format": "date-time",
  "example": "2026-12-31T18:00:00.000Z"
}
Full definition
{
  "type": "object",
  "properties": {
    "application": {
      "allOf": [
        {
          "$ref": "#/components/schemas/CandidatePortalApplicationDto"
        }
      ],
      "description": "Candidate portal application embedded as application in public application created.",
      "example": {
        "id": "0120f0fe-6880-47e8-895d-c092d269cdd1",
        "requisitionTitle": "Example title",
        "currentStage": {
          "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
          "code": "EXAMPLE",
          "name": "Example name",
          "category": "APPLIED",
          "isTerminal": true,
          "sortOrder": 1,
          "revision": 1
        },
        "status": "ACTIVE",
        "appliedAt": "2026-01-15T12:00:00.000Z",
        "updatedAt": "2026-01-15T13:00:00.000Z",
        "revision": 1,
        "canWithdraw": true
      }
    },
    "candidatePortalToken": {
      "type": "string",
      "description": "One-time candidate portal credential. Only its hash is persisted.",
      "example": "synthetic-example-credential"
    },
    "candidatePortalTokenExpiresAt": {
      "type": "string",
      "description": "Expiration time of the candidate portal token; after this instant the credential is rejected.",
      "format": "date-time",
      "example": "2026-12-31T18:00:00.000Z"
    }
  },
  "required": [
    "application",
    "candidatePortalToken",
    "candidatePortalTokenExpiresAt"
  ],
  "description": "Created application in the APPLIED stage together with the candidate-portal token and its expiration time.",
  "example": {
    "application": {
      "id": "0120f0fe-6880-47e8-895d-c092d269cdd1",
      "requisitionTitle": "Example title",
      "currentStage": {
        "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
        "code": "EXAMPLE",
        "name": "Example name",
        "category": "APPLIED",
        "isTerminal": true,
        "sortOrder": 1,
        "revision": 1
      },
      "status": "ACTIVE",
      "appliedAt": "2026-01-15T12:00:00.000Z",
      "updatedAt": "2026-01-15T13:00:00.000Z",
      "revision": 1,
      "canWithdraw": true
    },
    "candidatePortalToken": "synthetic-example-credential",
    "candidatePortalTokenExpiresAt": "2026-12-31T18:00:00.000Z"
  }
}
CandidatePortalApplicationDto

Candidate-owned application in its withdrawn terminal stage with the updated revision and preserved submission evidence.

idRequired

Hallify UUID identifying candidate portal application.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying candidate portal application.",
  "example": "0120f0fe-6880-47e8-895d-c092d269cdd1"
}
requisitionTitleRequired

Requisition title for candidate portal application.

string
Full definition
{
  "type": "string",
  "description": "Requisition title for candidate portal application.",
  "example": "Example title"
}
currentStageRequired

Recruiting stage embedded as current stage in candidate portal application.

allOf
Full definition
{
  "allOf": [
    {
      "$ref": "#/components/schemas/RecruitingStageDto"
    }
  ],
  "description": "Recruiting stage embedded as current stage in candidate portal application.",
  "example": {
    "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
    "code": "EXAMPLE",
    "name": "Example name",
    "category": "APPLIED",
    "isTerminal": true,
    "sortOrder": 1,
    "revision": 1
  }
}
statusRequired

Current lifecycle status of candidate portal application; allowed values are ACTIVE, OFFERED, HIRED, REJECTED, WITHDRAWN.

string
Full definition
{
  "type": "string",
  "enum": [
    "ACTIVE",
    "OFFERED",
    "HIRED",
    "REJECTED",
    "WITHDRAWN"
  ],
  "description": "Current lifecycle status of candidate portal application; allowed values are ACTIVE, OFFERED, HIRED, REJECTED, WITHDRAWN.",
  "example": "ACTIVE"
}
appliedAtRequired

Timestamp recording when applied occurred for candidate portal application.

string · date-time
Full definition
{
  "type": "string",
  "description": "Timestamp recording when applied occurred for candidate portal application.",
  "format": "date-time",
  "example": "2026-01-15T12:00:00.000Z"
}
updatedAtRequired

Timestamp recording when updated occurred for candidate portal application.

string · date-time
Full definition
{
  "type": "string",
  "description": "Timestamp recording when updated occurred for candidate portal application.",
  "format": "date-time",
  "example": "2026-01-15T13:00:00.000Z"
}
revisionRequired

Monotonic optimistic-concurrency revision for candidate portal application.

integer
Full definition
{
  "type": "integer",
  "description": "Monotonic optimistic-concurrency revision for candidate portal application.",
  "example": 1
}
offerOptional

Offer details embedded in candidate portal application. Null means no value is recorded for this representation.

object · null
Full definition
{
  "nullable": true,
  "type": "object",
  "description": "Offer details embedded in candidate portal application. Null means no value is recorded for this representation.",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying candidate portal offer.",
      "example": "dfa73755-b161-462c-87aa-7f0d20d8a424"
    },
    "status": {
      "type": "string",
      "enum": [
        "DRAFT",
        "SENT",
        "ACCEPTED",
        "DECLINED",
        "EXPIRED",
        "WITHDRAWN",
        "CONVERTED"
      ],
      "description": "Current lifecycle status of candidate portal offer; allowed values are DRAFT, SENT, ACCEPTED, DECLINED, EXPIRED, WITHDRAWN, CONVERTED.",
      "example": "DRAFT"
    },
    "legalEntity": {
      "allOf": [
        {
          "$ref": "#/components/schemas/RecruitingReferenceItemDto"
        }
      ],
      "description": "Recruiting reference item embedded as legal entity in candidate portal offer.",
      "example": {
        "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
        "name": "Example name"
      }
    },
    "venue": {
      "allOf": [
        {
          "$ref": "#/components/schemas/RecruitingReferenceItemDto"
        }
      ],
      "description": "Recruiting reference item embedded as venue in candidate portal offer.",
      "example": {
        "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
        "name": "Example name"
      }
    },
    "department": {
      "nullable": true,
      "type": "object",
      "description": "Department details embedded in candidate portal offer. Null means no value is recorded for this representation.",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Hallify UUID identifying recruiting reference item.",
          "example": "e6112f96-9ef5-48fb-82cf-4187a8ce329c"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name for recruiting reference item.",
          "example": "Example name"
        },
        "code": {
          "type": "string",
          "nullable": true,
          "description": "Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.",
          "example": "EXAMPLE"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "example": {
        "id": "e6112f96-9ef5-48fb-82cf-4187a8ce329c",
        "name": "Example name"
      }
    },
    "jobProfile": {
      "nullable": true,
      "type": "object",
      "description": "Job profile details embedded in candidate portal offer. Null means no value is recorded for this representation.",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Hallify UUID identifying recruiting reference item.",
          "example": "66c21fb4-4f9b-4f13-817d-088bf2bee5ca"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name for recruiting reference item.",
          "example": "Example name"
        },
        "code": {
          "type": "string",
          "nullable": true,
          "description": "Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.",
          "example": "EXAMPLE"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "example": {
        "id": "66c21fb4-4f9b-4f13-817d-088bf2bee5ca",
        "name": "Example name"
      }
    },
    "classification": {
      "type": "string",
      "enum": [
        "EMPLOYEE",
        "CONTRACTOR",
        "INTERN",
        "APPRENTICE"
      ],
      "description": "Allowed classification for candidate portal offer: EMPLOYEE, CONTRACTOR, INTERN, APPRENTICE.",
      "example": "EMPLOYEE"
    },
    "contractType": {
      "type": "string",
      "enum": [
        "FULL_TIME",
        "PART_TIME",
        "FIXED_TERM",
        "CASUAL",
        "SEASONAL",
        "ON_CALL"
      ],
      "description": "Allowed contract type for candidate portal offer: FULL_TIME, PART_TIME, FIXED_TERM, CASUAL, SEASONAL, ON_CALL.",
      "example": "FULL_TIME"
    },
    "startDate": {
      "type": "string",
      "description": "Calendar date for start date serialized as ISO 8601 YYYY-MM-DD without an implicit time of day.",
      "format": "date",
      "example": "2026-01-15"
    },
    "compensationAmount": {
      "type": "string",
      "nullable": true,
      "description": "Decimal monetary compensation amount serialized as a string in the currency identified by the `compensationCurrency` field; zero is a recorded amount, not absence. Null means no value is recorded for this representation.",
      "example": "1.00"
    },
    "compensationCurrency": {
      "type": "string",
      "nullable": true,
      "description": "ISO 4217 currency code for the monetary values carried by candidate portal offer. Null means no value is recorded for this representation.",
      "example": "GEL"
    },
    "compensationPeriod": {
      "type": "string",
      "enum": [
        "HOURLY",
        "DAILY",
        "WEEKLY",
        "MONTHLY",
        "ANNUAL",
        null
      ],
      "nullable": true,
      "description": "Allowed compensation period for candidate portal offer: HOURLY, DAILY, WEEKLY, MONTHLY, ANNUAL. Null means no value is recorded for this representation.",
      "example": "HOURLY"
    },
    "terms": {
      "type": "string",
      "description": "Terms for candidate portal offer.",
      "example": "example"
    },
    "expiresAt": {
      "type": "string",
      "nullable": true,
      "description": "Timestamp recording when expires occurred for candidate portal offer. Null means no value is recorded for this representation.",
      "format": "date-time",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "revision": {
      "type": "integer",
      "description": "Monotonic optimistic-concurrency revision for candidate portal offer.",
      "example": 1
    },
    "canRespond": {
      "type": "boolean",
      "description": "Whether the caller can respond through candidate portal offer.",
      "example": true
    }
  },
  "required": [
    "id",
    "status",
    "legalEntity",
    "venue",
    "classification",
    "contractType",
    "startDate",
    "terms",
    "revision",
    "canRespond"
  ],
  "example": {
    "id": "dfa73755-b161-462c-87aa-7f0d20d8a424",
    "status": "DRAFT",
    "legalEntity": {
      "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
      "name": "Example name"
    },
    "venue": {
      "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
      "name": "Example name"
    },
    "classification": "EMPLOYEE",
    "contractType": "FULL_TIME",
    "startDate": "2026-01-15",
    "terms": "example",
    "revision": 1,
    "canRespond": true
  }
}
canWithdrawRequired

Whether the caller can withdraw through candidate portal application.

boolean
Full definition
{
  "type": "boolean",
  "description": "Whether the caller can withdraw through candidate portal application.",
  "example": true
}
Full definition
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying candidate portal application.",
      "example": "0120f0fe-6880-47e8-895d-c092d269cdd1"
    },
    "requisitionTitle": {
      "type": "string",
      "description": "Requisition title for candidate portal application.",
      "example": "Example title"
    },
    "currentStage": {
      "allOf": [
        {
          "$ref": "#/components/schemas/RecruitingStageDto"
        }
      ],
      "description": "Recruiting stage embedded as current stage in candidate portal application.",
      "example": {
        "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
        "code": "EXAMPLE",
        "name": "Example name",
        "category": "APPLIED",
        "isTerminal": true,
        "sortOrder": 1,
        "revision": 1
      }
    },
    "status": {
      "type": "string",
      "enum": [
        "ACTIVE",
        "OFFERED",
        "HIRED",
        "REJECTED",
        "WITHDRAWN"
      ],
      "description": "Current lifecycle status of candidate portal application; allowed values are ACTIVE, OFFERED, HIRED, REJECTED, WITHDRAWN.",
      "example": "ACTIVE"
    },
    "appliedAt": {
      "type": "string",
      "description": "Timestamp recording when applied occurred for candidate portal application.",
      "format": "date-time",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "updatedAt": {
      "type": "string",
      "description": "Timestamp recording when updated occurred for candidate portal application.",
      "format": "date-time",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "revision": {
      "type": "integer",
      "description": "Monotonic optimistic-concurrency revision for candidate portal application.",
      "example": 1
    },
    "offer": {
      "nullable": true,
      "type": "object",
      "description": "Offer details embedded in candidate portal application. Null means no value is recorded for this representation.",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Hallify UUID identifying candidate portal offer.",
          "example": "dfa73755-b161-462c-87aa-7f0d20d8a424"
        },
        "status": {
          "type": "string",
          "enum": [
            "DRAFT",
            "SENT",
            "ACCEPTED",
            "DECLINED",
            "EXPIRED",
            "WITHDRAWN",
            "CONVERTED"
          ],
          "description": "Current lifecycle status of candidate portal offer; allowed values are DRAFT, SENT, ACCEPTED, DECLINED, EXPIRED, WITHDRAWN, CONVERTED.",
          "example": "DRAFT"
        },
        "legalEntity": {
          "allOf": [
            {
              "$ref": "#/components/schemas/RecruitingReferenceItemDto"
            }
          ],
          "description": "Recruiting reference item embedded as legal entity in candidate portal offer.",
          "example": {
            "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
            "name": "Example name"
          }
        },
        "venue": {
          "allOf": [
            {
              "$ref": "#/components/schemas/RecruitingReferenceItemDto"
            }
          ],
          "description": "Recruiting reference item embedded as venue in candidate portal offer.",
          "example": {
            "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
            "name": "Example name"
          }
        },
        "department": {
          "nullable": true,
          "type": "object",
          "description": "Department details embedded in candidate portal offer. Null means no value is recorded for this representation.",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid",
              "description": "Hallify UUID identifying recruiting reference item.",
              "example": "e6112f96-9ef5-48fb-82cf-4187a8ce329c"
            },
            "name": {
              "type": "string",
              "description": "Human-readable name for recruiting reference item.",
              "example": "Example name"
            },
            "code": {
              "type": "string",
              "nullable": true,
              "description": "Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.",
              "example": "EXAMPLE"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "example": {
            "id": "e6112f96-9ef5-48fb-82cf-4187a8ce329c",
            "name": "Example name"
          }
        },
        "jobProfile": {
          "nullable": true,
          "type": "object",
          "description": "Job profile details embedded in candidate portal offer. Null means no value is recorded for this representation.",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid",
              "description": "Hallify UUID identifying recruiting reference item.",
              "example": "66c21fb4-4f9b-4f13-817d-088bf2bee5ca"
            },
            "name": {
              "type": "string",
              "description": "Human-readable name for recruiting reference item.",
              "example": "Example name"
            },
            "code": {
              "type": "string",
              "nullable": true,
              "description": "Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.",
              "example": "EXAMPLE"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "example": {
            "id": "66c21fb4-4f9b-4f13-817d-088bf2bee5ca",
            "name": "Example name"
          }
        },
        "classification": {
          "type": "string",
          "enum": [
            "EMPLOYEE",
            "CONTRACTOR",
            "INTERN",
            "APPRENTICE"
          ],
          "description": "Allowed classification for candidate portal offer: EMPLOYEE, CONTRACTOR, INTERN, APPRENTICE.",
          "example": "EMPLOYEE"
        },
        "contractType": {
          "type": "string",
          "enum": [
            "FULL_TIME",
            "PART_TIME",
            "FIXED_TERM",
            "CASUAL",
            "SEASONAL",
            "ON_CALL"
          ],
          "description": "Allowed contract type for candidate portal offer: FULL_TIME, PART_TIME, FIXED_TERM, CASUAL, SEASONAL, ON_CALL.",
          "example": "FULL_TIME"
        },
        "startDate": {
          "type": "string",
          "description": "Calendar date for start date serialized as ISO 8601 YYYY-MM-DD without an implicit time of day.",
          "format": "date",
          "example": "2026-01-15"
        },
        "compensationAmount": {
          "type": "string",
          "nullable": true,
          "description": "Decimal monetary compensation amount serialized as a string in the currency identified by the `compensationCurrency` field; zero is a recorded amount, not absence. Null means no value is recorded for this representation.",
          "example": "1.00"
        },
        "compensationCurrency": {
          "type": "string",
          "nullable": true,
          "description": "ISO 4217 currency code for the monetary values carried by candidate portal offer. Null means no value is recorded for this representation.",
          "example": "GEL"
        },
        "compensationPeriod": {
          "type": "string",
          "enum": [
            "HOURLY",
            "DAILY",
            "WEEKLY",
            "MONTHLY",
            "ANNUAL",
            null
          ],
          "nullable": true,
          "description": "Allowed compensation period for candidate portal offer: HOURLY, DAILY, WEEKLY, MONTHLY, ANNUAL. Null means no value is recorded for this representation.",
          "example": "HOURLY"
        },
        "terms": {
          "type": "string",
          "description": "Terms for candidate portal offer.",
          "example": "example"
        },
        "expiresAt": {
          "type": "string",
          "nullable": true,
          "description": "Timestamp recording when expires occurred for candidate portal offer. Null means no value is recorded for this representation.",
          "format": "date-time",
          "example": "2026-12-31T18:00:00.000Z"
        },
        "revision": {
          "type": "integer",
          "description": "Monotonic optimistic-concurrency revision for candidate portal offer.",
          "example": 1
        },
        "canRespond": {
          "type": "boolean",
          "description": "Whether the caller can respond through candidate portal offer.",
          "example": true
        }
      },
      "required": [
        "id",
        "status",
        "legalEntity",
        "venue",
        "classification",
        "contractType",
        "startDate",
        "terms",
        "revision",
        "canRespond"
      ],
      "example": {
        "id": "dfa73755-b161-462c-87aa-7f0d20d8a424",
        "status": "DRAFT",
        "legalEntity": {
          "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
          "name": "Example name"
        },
        "venue": {
          "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
          "name": "Example name"
        },
        "classification": "EMPLOYEE",
        "contractType": "FULL_TIME",
        "startDate": "2026-01-15",
        "terms": "example",
        "revision": 1,
        "canRespond": true
      }
    },
    "canWithdraw": {
      "type": "boolean",
      "description": "Whether the caller can withdraw through candidate portal application.",
      "example": true
    }
  },
  "required": [
    "id",
    "requisitionTitle",
    "currentStage",
    "status",
    "appliedAt",
    "updatedAt",
    "revision",
    "canWithdraw"
  ],
  "description": "Candidate-owned application in its withdrawn terminal stage with the updated revision and preserved submission evidence.",
  "example": {
    "id": "0120f0fe-6880-47e8-895d-c092d269cdd1",
    "requisitionTitle": "Example title",
    "currentStage": {
      "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
      "code": "EXAMPLE",
      "name": "Example name",
      "category": "APPLIED",
      "isTerminal": true,
      "sortOrder": 1,
      "revision": 1
    },
    "status": "ACTIVE",
    "appliedAt": "2026-01-15T12:00:00.000Z",
    "updatedAt": "2026-01-15T13:00:00.000Z",
    "revision": 1,
    "canWithdraw": true
  }
}
RecruitingStageDto

Recruiting stage ordered workflow stage with its category and terminal-state semantics.

idRequired

Hallify UUID identifying recruiting stage.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying recruiting stage.",
  "example": "f97fe865-5ff8-488a-8fab-9e27e748514c"
}
codeRequired

Stable code used to classify or address recruiting stage.

string
Full definition
{
  "type": "string",
  "description": "Stable code used to classify or address recruiting stage.",
  "example": "EXAMPLE"
}
nameRequired

Human-readable name for recruiting stage.

string
Full definition
{
  "type": "string",
  "description": "Human-readable name for recruiting stage.",
  "example": "Example name"
}
categoryRequired

Allowed category for recruiting stage: APPLIED, SCREENING, INTERVIEW, ASSESSMENT, OFFER, HIRED, REJECTED, WITHDRAWN.

string
Full definition
{
  "type": "string",
  "enum": [
    "APPLIED",
    "SCREENING",
    "INTERVIEW",
    "ASSESSMENT",
    "OFFER",
    "HIRED",
    "REJECTED",
    "WITHDRAWN"
  ],
  "description": "Allowed category for recruiting stage: APPLIED, SCREENING, INTERVIEW, ASSESSMENT, OFFER, HIRED, REJECTED, WITHDRAWN.",
  "example": "APPLIED"
}
isTerminalRequired

True when recruiting stage is a terminal recruiting stage from which the candidate does not advance automatically.

boolean
Full definition
{
  "type": "boolean",
  "description": "True when recruiting stage is a terminal recruiting stage from which the candidate does not advance automatically.",
  "example": true
}
sortOrderRequired

Whole-number ordering position for sort order in recruiting stage; smaller values sort first.

integer
Full definition
{
  "type": "integer",
  "description": "Whole-number ordering position for sort order in recruiting stage; smaller values sort first.",
  "example": 1
}
revisionRequired

Monotonic optimistic-concurrency revision for recruiting stage.

integer
Full definition
{
  "type": "integer",
  "description": "Monotonic optimistic-concurrency revision for recruiting stage.",
  "example": 1
}
Full definition
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying recruiting stage.",
      "example": "f97fe865-5ff8-488a-8fab-9e27e748514c"
    },
    "code": {
      "type": "string",
      "description": "Stable code used to classify or address recruiting stage.",
      "example": "EXAMPLE"
    },
    "name": {
      "type": "string",
      "description": "Human-readable name for recruiting stage.",
      "example": "Example name"
    },
    "category": {
      "type": "string",
      "enum": [
        "APPLIED",
        "SCREENING",
        "INTERVIEW",
        "ASSESSMENT",
        "OFFER",
        "HIRED",
        "REJECTED",
        "WITHDRAWN"
      ],
      "description": "Allowed category for recruiting stage: APPLIED, SCREENING, INTERVIEW, ASSESSMENT, OFFER, HIRED, REJECTED, WITHDRAWN.",
      "example": "APPLIED"
    },
    "isTerminal": {
      "type": "boolean",
      "description": "True when recruiting stage is a terminal recruiting stage from which the candidate does not advance automatically.",
      "example": true
    },
    "sortOrder": {
      "type": "integer",
      "description": "Whole-number ordering position for sort order in recruiting stage; smaller values sort first.",
      "example": 1
    },
    "revision": {
      "type": "integer",
      "description": "Monotonic optimistic-concurrency revision for recruiting stage.",
      "example": 1
    }
  },
  "required": [
    "id",
    "code",
    "name",
    "category",
    "isTerminal",
    "sortOrder",
    "revision"
  ],
  "description": "Recruiting stage ordered workflow stage with its category and terminal-state semantics.",
  "example": {
    "id": "f97fe865-5ff8-488a-8fab-9e27e748514c",
    "code": "EXAMPLE",
    "name": "Example name",
    "category": "APPLIED",
    "isTerminal": true,
    "sortOrder": 1,
    "revision": 1
  }
}
RecruitingReferenceItemDto

Recruiting reference entry embedded in a workforce collection or aggregate.

idRequired

Hallify UUID identifying recruiting reference item.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying recruiting reference item.",
  "example": "ba0372fd-c434-407b-8ec5-0634b02050cc"
}
nameRequired

Human-readable name for recruiting reference item.

string
Full definition
{
  "type": "string",
  "description": "Human-readable name for recruiting reference item.",
  "example": "Example name"
}
codeOptional

Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.

string · null
Full definition
{
  "type": "string",
  "nullable": true,
  "description": "Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.",
  "example": "EXAMPLE"
}
Full definition
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying recruiting reference item.",
      "example": "ba0372fd-c434-407b-8ec5-0634b02050cc"
    },
    "name": {
      "type": "string",
      "description": "Human-readable name for recruiting reference item.",
      "example": "Example name"
    },
    "code": {
      "type": "string",
      "nullable": true,
      "description": "Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.",
      "example": "EXAMPLE"
    }
  },
  "required": [
    "id",
    "name"
  ],
  "description": "Recruiting reference entry embedded in a workforce collection or aggregate.",
  "example": {
    "id": "ba0372fd-c434-407b-8ec5-0634b02050cc",
    "name": "Example name"
  }
}

Hallify uses essential cookies and optional analytics.

Essential cookies keep sign-in, locale, and theme preferences working. Analytics is off until you choose to allow it.