> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.yunojuno.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.yunojuno.com/_mcp/server.

# Contract passed pre-offer approval

POST 

Sent when a contract passes the defined pre-offer approval flow, and is now ready to offer.

Reference: https://docs.yunojuno.com/client-api/webhook-events/contract-events/client-contract-approved

## Request

### Payload

- `contract_id` (string, required)
- `freelancer` (Freelancer, required) — The freelancer object. This object represents a freelancer on the YunoJuno platform.
- `freelancer_operating_jurisdiction` (Country, required, nullable) — The jurisdiction in which the contractor operates as a business or individual, including the country name and ISO 3166-1 two-character code
- `freelancer_personal_tax_jurisdiction` (Country, required, nullable) — The jurisdiction in which the contractor pays personal taxes, including the country name and ISO 3166-1 two-character code
- `client` (Client, required) — The client object. This object represents a client on the YunoJuno platform.
- `client_contact` (ClientContact, required) — The client contact object. This object represents the lifetime relationship between a client and a freelancer on the platform.
- `hirers` (list of Hirer, required)
- `title` (string, required)
- `job_title` (string, required)
- `description` (string, required)
- `start_date` (string, required)
- `end_date` (string, required)
- `actual_end_date` (string, required, nullable)
- `rate` (Rate, required) — The rate object. This object represents a static amount for a particular rate unit in a particular currency.
- `work_time_type` (string, required)
- `fee_schedule` (FeeSchedule, required) — The complete fee schedule for a contract.
- `notice_period_days` (integer, required)
- `work_location` (string, required)
- `minutes_in_working_day` (integer, required)
- `custom_fields` (list of CustomField, required)
- `pre_offer_approval_flow` (ApprovalFlowReference, required, nullable)
- `spend_request` (SpendRequest, required) — The spend requisition object. This object represents a request to commit spend on the YunoJuno platform. Spend Requisition was previously named Spend Request in the API documentation; some programmatic names use the old terminology.
- `renewal_meta` (RenewalMeta, required)
- `historical_meta` (HistoricalMeta, required)
- `url` (string, required)

## Types

### Freelancer

The freelancer object. This object represents a freelancer on the YunoJuno platform.

- `freelancer_id` (string, required)
- `first_name` (string, required)
- `last_name` (string, required)
- `full_name` (string, required)
- `email` (string, required)
- `date_of_birth` (string, required)
- `legal_name` (string, required)

### Country

The country object. This object represents a country with its name and ISO code.

- `name` (string, required)
- `country_code` (string, required)

### Client

The client object. This object represents a client on the YunoJuno platform.

- `client_id` (string, required)
- `name` (string, required)

### ClientContact

The client contact object. This object represents the lifetime relationship between a client and a freelancer on the platform.

- `client_contact_id` (string, required)
- `freelancer_id` (string, required)
- `custom_fields` (list of CustomField, required) — An array of custom fields to apply only when creating a new client contact.
- `url` (string, required) — The fully-qualified URL of the client contact detail page

### Hirer

The hirer object. This object represents a hirer on the YunoJuno platform.

- `hirer_id` (string, required)
- `first_name` (string, required)
- `last_name` (string, required)
- `full_name` (string, required)
- `email` (string, required)

### Rate

The rate object. This object represents a static amount for a particular rate unit in a particular currency.

- `value` (string, required)
- `unit` (string, required)
- `currency` (enum, required) — * `AUD` - $ AUD * `CAD` - $ CAD * `CHF` - ₣ CHF * `CZK` - Kč CZK * `DKK` - kr DKK * `EUR` - € EUR * `GBP` - £ GBP * `HKD` - $ HKD * `INR` - ₹ INR * `NOK` - kr NOK * `NZD` - $ NZD * `PLN` - zł PLN * `SEK` - kr SEK * `SGD` - $ SGD * `AED` - د.إ AED * `USD` - $ USD * `ZAR` - R ZAR
  - Allowed values: `AUD`, `CAD`, `CHF`, `CZK`, `DKK`, `EUR`, `GBP`, `HKD`, `INR`, `NOK`, `NZD`, `PLN`, `SEK`, `SGD`, `AED`, `USD`, `ZAR`

### FeeSchedule

The complete fee schedule for a contract.

- `periods` (list of FeePeriod, required)

### CustomField

Represents a single custom field.

- `name` (string, required) — The name of the custom field.
- `value` (string, required) — The value of the custom field.

### ApprovalFlowReference

- `approval_flow_id` (string, required)
- `current_approval_step` (CurrentApprovalStepReference, required, nullable)

### SpendRequest

The spend requisition object. This object represents a request to commit spend on the YunoJuno platform. Spend Requisition was previously named Spend Request in the API documentation; some programmatic names use the old terminology.

- `spend_request_id` (string, required)
- `url` (string, required, nullable)
- `external_id` (string, required, nullable)
- `title` (string, required)
- `description` (string, required)
- `amount` (string, required)
- `amount_type` (enum, required) — * `DAY_RATE` - Day rate * `TOTAL` - Total
  - Allowed values: `DAY_RATE`, `TOTAL`
- `currency` (enum, required) — * `AUD` - $ AUD * `CAD` - $ CAD * `CHF` - ₣ CHF * `CZK` - Kč CZK * `DKK` - kr DKK * `EUR` - € EUR * `GBP` - £ GBP * `HKD` - $ HKD * `INR` - ₹ INR * `NOK` - kr NOK * `NZD` - $ NZD * `PLN` - zł PLN * `SEK` - kr SEK * `SGD` - $ SGD * `AED` - د.إ AED * `USD` - $ USD * `ZAR` - R ZAR
  - Allowed values: `AUD`, `CAD`, `CHF`, `CZK`, `DKK`, `EUR`, `GBP`, `HKD`, `INR`, `NOK`, `NZD`, `PLN`, `SEK`, `SGD`, `AED`, `USD`, `ZAR`
- `custom_fields` (list of CustomField, required)
- `approval_flow` (ApprovalFlowReference, required, nullable)
- `attachment_url` (string, required, nullable)

### RenewalMeta

- `is_initial_contract` (boolean, required) — Whether the contract is the first in the renewal chain
- `is_renewal` (boolean, required) — Whether the contract is a renewal of a prior contract
- `has_subsequent_renewal` (boolean, required) — Whether the contract has a renewal following it
- `initial_contract_id` (string, required) — The ID of the very first contract in the renewal chain
- `parent_contract_id` (string, required, nullable) — The ID of the previous contract in the renewal chain
- `renewal_chain_position` (integer, required) — The position of this contract in the renewal chain, with the initial contract being 1
- `renewal_chain` (list of string, required) — List of all contract IDs in the renewal chain

### HistoricalMeta

- `has_previously_accepted_contract` (boolean, required) — Whether any other contract between this client and freelancer was accepted/signed previously (excludes this contract).

### FeePeriod

Represents a period of fees with effective date and totals.

- `effective_from` (string, required)
- `fees` (list of Fee, required)
- `total_fees` (Total, required) — Represents a total amount with currency.
- `total_cost` (Total, required) — Represents a total amount with currency.

### CurrentApprovalStepReference

- `approval_step_id` (string, required)

### Fee

Represents a single fee in a fee period.

- `percentage` (string, required)
- `value` (string, required)
- `currency` (string, required)
- `name` (string, required)

### Total

Represents a total amount with currency.

- `currency` (string, required)
- `value` (string, required)