> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plane.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Offer

An `Offer` is proposed employment terms for a recipient before that recipient
becomes a worker. It preserves the terms, deadline, delivery state, decision
evidence, and downstream worker or onboarding link for that proposal.

### Attributes

<ResponseField name="id" type="string">
  Unique identifier for the offer, e.g. `ofr_8kY3pQmNvT2sW9xF`.
</ResponseField>

<ResponseField name="object" type="string">
  The object type. Always `offer`.
</ResponseField>

<ResponseField name="workspace" type="string">
  Workspace ID that owns the offer.
</ResponseField>

<ResponseField name="status" type="string">
  Offer status. One of `draft`, `sent`, `accepted`, `declined`, `expired`, or
  `voided`.
</ResponseField>

<ResponseField name="recipient" type="object">
  Recipient name and email.

  <Expandable title="child attributes">
    <ResponseField name="name" type="string | null">
      Recipient display name.
    </ResponseField>

    <ResponseField name="email" type="string | null">
      Recipient email address.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="terms" type="object">
  Proposed role, employment constraints, compensations, and benefits.
  Employment includes allowed types, start date, and allowed countries.

  <Expandable title="child attributes">
    <ResponseField name="role" type="object">
      Proposed role title and responsibilities.
    </ResponseField>

    <ResponseField name="employment" type="object">
      Proposed employment type constraints, start date, and country
      constraints.
    </ResponseField>

    <ResponseField name="compensations" type="array">
      Compensation entries the recipient can accept.
    </ResponseField>

    <ResponseField name="benefits" type="array">
      Benefits included with the offer.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="position" type="string">
  Position ID linked to the offer, if any.
</ResponseField>

<ResponseField name="job" type="string">
  Job ID linked to the offer, if any.
</ResponseField>

<ResponseField name="expires" type="string">
  Timestamp when the offer expires.
</ResponseField>

<ResponseField name="delivery" type="object | null">
  Delivery summary for sent offers, including the candidate URL, first sent
  timestamp, latest delivery email status, last sent timestamp, and resend
  count.

  <Expandable title="child attributes">
    <ResponseField name="url" type="string">
      Candidate URL for viewing and responding to the offer.
    </ResponseField>

    <ResponseField name="status" type="string | null">
      Latest delivery email status, when a delivery email exists. One of
      `pending`, `submitted`, `sent`, `delivered`, `opened`, or `failed`.
    </ResponseField>

    <ResponseField name="sent" type="string">
      Timestamp of the first delivery.
    </ResponseField>

    <ResponseField name="last_sent" type="string">
      Timestamp of the latest delivery.
    </ResponseField>

    <ResponseField name="resends" type="integer">
      Number of resend deliveries after the first delivery.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="decision" type="object | null">
  Candidate decision summary for accepted or declined offers. Accepted
  decisions include the frozen accepted `terms`, selected compensation and
  employment snapshots, and signer and request evidence.

  <Expandable title="child attributes">
    <ResponseField name="type" type="string">
      Candidate decision type. One of `accepted` or `declined`.
    </ResponseField>

    <ResponseField name="reason" type="string | null">
      Candidate-provided decline reason, when present.
    </ResponseField>

    <ResponseField name="decided" type="string">
      Timestamp when the decision was recorded.
    </ResponseField>

    <ResponseField name="compensation" type="object | null">
      Compensation accepted by the recipient.
    </ResponseField>

    <ResponseField name="employment" type="string | null">
      Employment type accepted by the recipient.
    </ResponseField>

    <ResponseField name="terms" type="object | null">
      Frozen accepted terms used for worker onboarding conversion.
    </ResponseField>

    <ResponseField name="evidence" type="object">
      Signer and request evidence captured when the decision was recorded.
      Includes `signer.name`, `signer.email`, `request`, `ip`, and
      `user_agent` when available.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="document" type="object | null">
  Document or agreement summary associated with the offer. This is `null` in
  v1 until the offer document or agreement integration is added. Use
  `decision.terms` and `decision.evidence` for accepted-offer evidence.
</ResponseField>

<ResponseField name="worker" type="string | null">
  Worker ID created from the accepted offer, if conversion has happened.
</ResponseField>

<ResponseField name="onboarding" type="object | null">
  Onboarding summary created from the accepted offer, if conversion has
  happened.

  <Expandable title="child attributes">
    <ResponseField name="id" type="string">
      Worker onboarding ID.
    </ResponseField>

    <ResponseField name="status" type="string">
      Current onboarding status.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="metadata" type="object">
  Set of key-value pairs attached to the offer.
</ResponseField>

<ResponseField name="created" type="string">
  Timestamp of when the offer was created.
</ResponseField>

<ResponseField name="updated" type="string">
  Timestamp of when the offer was last updated.
</ResponseField>
