---
canonical_url: "https://docs.composio.dev/toolkits/jobber"
markdown_url: "https://docs.composio.dev/toolkits/jobber.md"
product: "platform"
version: null
last_updated: null
---

# Jobber

Jobber is a field service management platform for managing clients, jobs, scheduling, quotes, invoices, and payments.

- **Category:** crm
- **Auth:** OAUTH2
- **Composio-managed OAuth available?** No
- **Tools:** 36
- **Triggers:** 0
- **Slug:** `JOBBER`
- **Version:** 00000000_00

## Tools

### Create Client

**Slug:** `JOBBER_CREATE_CLIENT`

Create an individual or company client in Jobber with optional primary email and phone contact details. Provide at least one of first_name, last_name, or company_name. Jobber provides no client deletion path, so this leaves a persistent record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | No | Primary email address to add to the client. |
| `phone` | string | No | Primary phone number to add to the client. |
| `title` | string ("MR" | "MS" | "MRS" | "MISS" | "DR") | No | Optional title for an individual client. |
| `last_name` | string | No | Client's last name. |
| `first_name` | string | No | Client's first name. |
| `is_company` | boolean | No | Whether this client represents a company. |
| `phone_type` | string ("MAIN" | "WORK" | "MOBILE" | "HOME" | "FAX" | "OTHER") | No | Label for phone, used only when phone is provided. |
| `company_name` | string | No | Company name for a business client. |
| `receives_reminders` | boolean | No | Whether the client receives appointment reminders. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Custom Field Configuration

**Slug:** `JOBBER_CREATE_CUSTOM_FIELD_CONFIGURATION`

Create one Jobber TEXT, LINK, AREA, TRUE_FALSE, NUMERIC, or DROPDOWN custom-field definition through a fixed type-specific mutation. WARNING: this persistent administrative write requires Jobber Connect+ (Connect or higher) and the Custom Field Configurations write permission. Creation is persistent, and Jobber provides apps no supported cleanup or deletion path for a custom field they configure.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Non-empty name for the custom field. |
| `unit` | string | No | Required non-empty unit for AREA and NUMERIC fields. |
| `read_only` | boolean | No | Controls whether Jobber users can edit field values: true prevents editing; false allows editing. |
| `applies_to` | string ("ALL_PROPERTIES" | "ALL_CLIENTS" | "ALL_QUOTES" | "ALL_JOBS" | "ALL_INVOICES" | "ALL_PRODUCTS_AND_SERVICES" | "TEAM") | Yes | Jobber object category to which this custom field will apply. |
| `field_type` | string ("TEXT" | "LINK" | "AREA" | "TRUE_FALSE" | "NUMERIC" | "DROPDOWN") | Yes | Value type of the custom field; selects one fixed Jobber create mutation. |
| `default_url` | string | No | Optional URL paired with a LINK default_text. Invalid for other types. |
| `default_text` | string | No | Optional TEXT default, or required non-empty LINK text when a LINK default is supplied. Invalid for other field types. |
| `transferable` | boolean | No | Whether values transfer to linked work objects in Jobber workflows. |
| `default_width` | number | No | Optional non-negative AREA default width. |
| `default_length` | number | No | Optional non-negative AREA default length. |
| `default_number` | number | No | Optional NUMERIC default. Zero and negative values are preserved. |
| `default_boolean` | boolean | No | Required TRUE_FALSE default. Both true and false are valid. |
| `dropdown_options` | array | No | Required when field_type is DROPDOWN; provide one to 100 unique non-empty options. |
| `default_dropdown_option` | string | No | Optional DROPDOWN default; it must exactly match one dropdown option. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Job

**Slug:** `JOBBER_CREATE_JOB`

Create a basic one-off Jobber job for an existing property with an explicit invoicing strategy. Jobber provides no job deletion path, so this leaves a persistent record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Human-readable job title. |
| `start_date` | string | No | ISO 8601 date when the job timeframe starts. |
| `property_id` | string | Yes | Opaque Jobber property EncodedId that owns the job. |
| `instructions` | string | No | Instructions for the job team. |
| `duration_unit` | string ("DAYS" | "WEEKS" | "MONTHS" | "YEARS") | No | Unit for duration_value. |
| `duration_value` | integer | No | Length of the job timeframe; requires duration_unit. |
| `invoicing_type` | string ("FIXED_PRICE" | "VISIT_BASED") | Yes | How charges are calculated for the job. |
| `salesperson_id` | string | No | Opaque Jobber user EncodedId for the salesperson. |
| `invoicing_schedule` | string ("ON_COMPLETION" | "PERIODIC" | "PER_VISIT" | "NEVER") | Yes | When invoices should be created for the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Note

**Slug:** `JOBBER_CREATE_NOTE`

Create a note on exactly one Jobber client, job, quote, invoice, or request. The resource type selects a fixed provider mutation, and unsupported cross-resource link options are rejected. Created notes persist, and this toolkit has no general delete-note action across all five resource types. Attachments are not supported.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pinned` | boolean | No | Whether the note should be pinned. |
| `message` | string | Yes | Non-empty note message. |
| `resource_id` | string | Yes | Opaque Jobber EncodedId of the client, job, quote, invoice, or request. |
| `link_to_jobs` | boolean | No | For CLIENT, QUOTE, or REQUEST notes, whether to link related jobs. |
| `resource_type` | string ("CLIENT" | "JOB" | "QUOTE" | "INVOICE" | "REQUEST") | Yes | Type of Jobber resource that will own the note. |
| `link_to_quotes` | boolean | No | For CLIENT or REQUEST notes, whether to link related quotes. |
| `link_to_invoices` | boolean | No | For CLIENT, JOB, QUOTE, or REQUEST notes, whether to link related invoices. |
| `link_to_requests` | boolean | No | For CLIENT notes, whether to link related requests. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Quote

**Slug:** `JOBBER_CREATE_QUOTE`

Create a persistent draft quote for an existing Jobber client and property with one or more explicit line items. Setting a line item's save_to_products_and_services flag to true also creates a persistent copy in Jobber's products and services catalog. Jobber exposes no quote deletion root, so this action leaves a persistent business record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Customer-facing quote title. |
| `deposit` | object | No | Optional deposit object with required non-negative rate and type; type must be Percent for a percentage or Unit for a fixed amount. |
| `message` | string | No | Customer-facing message included with the quote. |
| `discount` | object | No | Optional discount object with required non-negative rate and type; type must be Percent for a percentage or Unit for a fixed amount. |
| `client_id` | string | Yes | Opaque Jobber EncodedId of the client receiving the quote. |
| `line_items` | array | Yes | One to 100 objects, each with required non-empty name and optional description, category (PRODUCT, SERVICE, or LABOUR), taxable, save_to_products_and_services (defaults to false), non-negative unit_price, non-negative quantity, and product_or_service_id. Setting save_to_products_and_services to true creates a persistent copy of that line item in Jobber's products and services catalog. |
| `request_id` | string | No | Opaque Jobber EncodedId of the request associated with the quote. |
| `property_id` | string | Yes | Opaque Jobber EncodedId of the property covered by the quote. |
| `salesperson_id` | string | No | Opaque Jobber user EncodedId of the assigned salesperson. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Disconnect App

**Slug:** `JOBBER_DISCONNECT_APP`

Permanently disconnect this connected account from the Jobber app, immediately revoking its access and refresh tokens. This cannot be undone; future Jobber calls require reconnecting through OAuth.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `confirm_disconnect` | boolean | Yes | Set to true to authorize immediate permanent revocation of this connected account's Jobber access and refresh tokens; future calls require reconnecting. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Account

**Slug:** `JOBBER_GET_ACCOUNT`

Return the connected Jobber account's identity and basic company details.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Client

**Slug:** `JOBBER_GET_CLIENT`

Return one client, its basic properties, and up to 10 normalized notes by opaque Jobber client ID. Note IDs can be passed to Update Note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `client_id` | string | Yes | Opaque Jobber EncodedId for the client, usually from List Clients. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Invoice

**Slug:** `JOBBER_GET_INVOICE`

Return one invoice's receivables summary, client, salesperson, and up to 10 normalized notes by opaque Jobber invoice ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | Opaque Jobber EncodedId for the invoice, usually from List Invoices. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job

**Slug:** `JOBBER_GET_JOB`

Return one job's status, schedule, totals, client, property, and up to 10 normalized notes by opaque Jobber job ID. Note IDs can be passed to Update Note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | Yes | Opaque Jobber EncodedId for the job, usually from List Jobs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Product Or Service

**Slug:** `JOBBER_GET_PRODUCT_OR_SERVICE`

Return one catalog product, service, or labour item by opaque Jobber catalog ID. A supplied unknown catalog ID fails with Jobber's GraphQL error because this root is non-null.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_or_service_id` | string | Yes | Opaque Jobber EncodedId for the catalog item, usually from List Products And Services. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Property

**Slug:** `JOBBER_GET_PROPERTY`

Return one service property and its owning client by opaque Jobber property ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | Yes | Opaque Jobber EncodedId for the property, usually from List Properties or Get Client. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Quote

**Slug:** `JOBBER_GET_QUOTE`

Return one quote's financial summary, client, property, salesperson, and up to 10 notes by opaque Jobber quote ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `quote_id` | string | Yes | Opaque Jobber EncodedId for the quote, usually from List Quotes. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Request

**Slug:** `JOBBER_GET_REQUEST`

Return one work request and up to 10 normalized notes by opaque Jobber request ID. Note IDs can be passed to Update Note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `request_id` | string | Yes | Opaque Jobber EncodedId for the request, usually from List Requests. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Time Sheet Entry

**Slug:** `JOBBER_GET_TIME_SHEET_ENTRY`

Return one time sheet entry by opaque Jobber ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `time_sheet_entry_id` | string | Yes | Opaque Jobber EncodedId for the time sheet entry, usually from List Time Sheet Entries. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get User

**Slug:** `JOBBER_GET_USER`

Return a Jobber user by ID, or the current authorized user when user_id is omitted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | string | No | Opaque Jobber EncodedId for a user. Omit this field to return the current authorized user. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Clients

**Slug:** `JOBBER_LIST_CLIENTS`

Search and filter clients in the connected Jobber account, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tags` | array | No | Return clients matching these tags. |
| `limit` | integer | No | Maximum clients to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous call; omit for the first page. |
| `is_lead` | boolean | No | Filter by lead status. |
| `sort_key` | string ("PRIMARY_NAME" | "UPDATED_AT" | "FIRST_NAME" | "LAST_NAME") | No | Field used to sort clients. |
| `is_company` | boolean | No | Filter company clients when true or individual clients when false. |
| `is_archived` | boolean | No | Filter by archived state. |
| `search_term` | string | No | Text to match against the selected client search fields. |
| `search_fields` | array | No | Client fields to search; omit to use Jobber's default search behavior. |
| `updated_after` | string | No | Return clients updated after this ISO 8601 timestamp. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort direction, used only when sort_key is provided. |
| `updated_before` | string | No | Return clients updated before this ISO 8601 timestamp. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Field Configurations

**Slug:** `JOBBER_LIST_CUSTOM_FIELD_CONFIGURATIONS`

List custom-field definitions by target, value type, or creating app, with type-specific defaults and one cursor page. This read was verified on Core; Jobber documents custom-field configuration features as Connect or higher.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum custom-field definitions to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_CUSTOM_FIELD_CONFIGURATIONS response. |
| `sort_key` | string ("SORT_ORDER" | "CREATED_AT") | No | Field used to sort custom-field definitions. |
| `applies_to` | string ("ALL_PROPERTIES" | "ALL_CLIENTS" | "ALL_QUOTES" | "ALL_JOBS" | "ALL_INVOICES" | "ALL_PRODUCTS_AND_SERVICES" | "TEAM") | No | Return definitions attached to this type of Jobber record. |
| `value_type` | string ("TEXT" | "LINK" | "AREA" | "TRUE_FALSE" | "NUMERIC" | "DROPDOWN") | No | Return definitions with this custom-field value type. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Direction used to sort custom-field definitions. |
| `created_by_this_app` | boolean | No | When set, include only definitions created by this connected app or only those created elsewhere. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoices

**Slug:** `JOBBER_LIST_INVOICES`

Search and filter invoices by client, status, or due date, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum invoices to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_INVOICES response. |
| `status` | string ("draft" | "awaiting_payment" | "paid" | "past_due" | "bad_debt" | "sent_not_due") | No | Invoice status filter. |
| `sort_key` | string ("INVOICE_NUMBER" | "INVOICE_STATUS" | "CLIENT_PRIMARY_NAME" | "CREATED_AT" | "UPDATED_AT" | "ISSUED_DATE" | "DUE_DATE" | "INVOICE_TOTAL" | "INVOICE_BALANCE") | No | Field used to sort invoices. |
| `client_id` | string | No | Return invoices for this client's opaque Jobber EncodedId. |
| `due_after` | string | No | Return invoices due after this ISO 8601 timestamp. |
| `due_before` | string | No | Return invoices due before this ISO 8601 timestamp. |
| `search_term` | string | No | Text used to search invoice records. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort direction, used only when sort_key is provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Jobs

**Slug:** `JOBBER_LIST_JOBS`

Search and filter jobs by status, type, schedule, or assignee, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum jobs to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_JOBS response. |
| `status` | string ("requires_invoicing" | "archived" | "late" | "today" | "upcoming" | "action_required" | "on_hold" | "unscheduled" | "active" | "expiring_within_30_days") | No | Job status filter. |
| `job_type` | string ("ONE_OFF" | "RECURRING") | No | Filter one-off or recurring jobs. |
| `sort_key` | string ("CLIENT_PRIMARY_NAME" | "UPDATED_AT" | "JOB_NUMBER" | "TOTAL_COST" | "JOB_STATUS" | "SCHEDULE" | "VISIT_START_DATE") | No | Field used to sort jobs. |
| `search_term` | string | No | Text used to search job records. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort direction, used only when sort_key is provided. |
| `assigned_user_id` | string | No | Return jobs with visits assigned to this opaque Jobber user EncodedId. |
| `only_invoiceable` | boolean | No | When true, return only jobs ready or eligible for invoicing. |
| `visits_start_after` | string | No | Return jobs with visits scheduled after this ISO 8601 timestamp. |
| `include_unscheduled` | boolean | No | Include jobs without scheduled visits. |
| `visits_start_before` | string | No | Return jobs with visits scheduled before this ISO 8601 timestamp. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Notes

**Slug:** `JOBBER_LIST_NOTES`

List one cursor page of notes for a Jobber client, job, quote, invoice, or request. An initial call requires resource_type and resource_id. Each opaque LIST_NOTES continuation retains the original resource type, resource ID, and limit, so pass only its cursor for later pages. A raw notes_next_cursor from the matching bounded GET tool requires resource_type and resource_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum notes to return in this page (1-100). |
| `cursor` | string | No | Opaque continuation from LIST_NOTES; pass it alone to continue with its original resource type, resource ID, and limit. A raw notes_next_cursor from the matching bounded GET tool requires resource_type and resource_id. |
| `resource_id` | string | No | Opaque Jobber EncodedId of the client, job, quote, invoice, or request. Required with resource_type for an initial call or a raw notes_next_cursor; omit for cursor-only continuation with an opaque LIST_NOTES cursor. |
| `resource_type` | string ("CLIENT" | "JOB" | "QUOTE" | "INVOICE" | "REQUEST") | No | Type of Jobber resource whose notes to list. Required with resource_id for an initial call or a raw notes_next_cursor; omit for cursor-only continuation with an opaque LIST_NOTES cursor. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Products And Services

**Slug:** `JOBBER_LIST_PRODUCTS_AND_SERVICES`

Return one cursor-paginated page of catalog products, services, and labour items.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum catalog items to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_PRODUCTS_AND_SERVICES response; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Properties

**Slug:** `JOBBER_LIST_PROPERTIES`

Search properties or list those belonging to a client, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum properties to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_PROPERTIES response. |
| `primary` | boolean | No | Filter by whether the property is the client's primary property. |
| `client_id` | string | No | Return properties owned by this opaque Jobber client EncodedId. |
| `search_term` | string | No | Text used to search property records. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Quotes

**Slug:** `JOBBER_LIST_QUOTES`

Search and filter quotes by client, status, salesperson, or creation time, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum quotes to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_QUOTES response. |
| `status` | string ("draft" | "awaiting_response" | "archived" | "approved" | "converted" | "changes_requested") | No | Quote status filter. |
| `sort_key` | string ("CREATED_AT" | "LAST_SENT_AT" | "QUOTE_NUMBER" | "QUOTE_STATUS" | "QUOTE_TOTAL" | "CLIENT_PRIMARY_NAME") | No | Field used to sort quotes. |
| `client_id` | string | No | Return quotes for this opaque Jobber client EncodedId. |
| `search_term` | string | No | Text used to search quote records. |
| `created_after` | string | No | Return quotes created after this ISO 8601 timestamp. |
| `created_before` | string | No | Return quotes created before this ISO 8601 timestamp. |
| `salesperson_id` | string | No | Return quotes assigned to this opaque Jobber salesperson EncodedId. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort direction, used only when sort_key is provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Requests

**Slug:** `JOBBER_LIST_REQUESTS`

Search and filter work requests by client, property, status, assignee, or timestamp, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum requests to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_REQUESTS response. |
| `status` | string ("new" | "completed" | "converted" | "archived" | "upcoming" | "overdue" | "unscheduled" | "assessment_completed" | "today") | No | Work request status filter. |
| `sort_key` | string ("TITLE" | "REQUESTED_AT" | "STATUS" | "STATUS_AND_REQUESTED_AT" | "PRIMARY_NAME" | "FIRST_NAME" | "LAST_NAME") | No | Field used to sort requests. |
| `timezone` | string | No | IANA timezone Jobber uses to calculate request status. |
| `client_id` | string | No | Return requests for this opaque Jobber client EncodedId. |
| `property_id` | string | No | Return requests for this opaque Jobber property EncodedId. |
| `search_term` | string | No | Text used to search work requests. |
| `created_after` | string | No | Return requests created after this ISO 8601 timestamp. |
| `updated_after` | string | No | Return requests updated after this ISO 8601 timestamp. |
| `created_before` | string | No | Return requests created before this ISO 8601 timestamp. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort direction, used only when sort_key is provided. |
| `updated_before` | string | No | Return requests updated before this ISO 8601 timestamp. |
| `assigned_user_id` | string | No | Return requests whose assessment is assigned to this opaque Jobber user EncodedId. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Scheduled Items

**Slug:** `JOBBER_LIST_SCHEDULED_ITEMS`

List visits, tasks, events, assessments, and reminders for a required date-time range, optionally including unassigned or unscheduled items, one cursor-paginated page at a time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum scheduled items to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous call; omit for the first page. |
| `end_at` | string | Yes | Inclusive ISO 8601 end timestamp; the window from start_at must span less than 1.5 years. |
| `status` | string ("ACTIVE" | "COMPLETED" | "OVERDUE" | "REMAINING") | No | Scheduled item status filter. |
| `sort_key` | string ("COMPLETED" | "CREATED_AT" | "CLIENT_NAME" | "VALUE" | "OVERRIDE_ORDER") | No | Field used to sort scheduled items. |
| `start_at` | string | Yes | Inclusive ISO 8601 start timestamp for the scheduling window. |
| `item_type` | string ("BASIC_TASK" | "VISIT" | "EVENT" | "ASSESSMENT" | "QUOTE_REMINDER" | "INVOICE_REMINDER") | No | Restrict results to one scheduled item type. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort direction, used only when sort_key is provided. |
| `assigned_user_ids` | array | No | Return items assigned to any of these opaque Jobber user EncodedIds. |
| `include_unassigned` | boolean | No | Include items with no assigned user. |
| `scheduling_aspects` | array | No | Control result scope: ALL includes visible scheduled, unscheduled, assigned, and unassigned items; ASSIGNMENTS includes items assigned to other visible users plus unassigned items; UNASSIGNED also includes unassigned items; UNSCHEDULED also includes unscheduled items; UNASSIGNED_ONLY returns only unassigned items and takes precedence. Omit to limit results to items assigned to the authorized user. |
| `include_unscheduled` | boolean | No | Include items without a scheduled time. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Time Sheet Entries

**Slug:** `JOBBER_LIST_TIME_SHEET_ENTRIES`

Filter time sheet entries by user, approval, payable state, active timer, or timestamps, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum time sheet entries to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_TIME_SHEET_ENTRIES response. |
| `ticking` | boolean | No | Filter entries by whether their timer is currently running. |
| `is_payable` | boolean | No | Filter entries by whether they are payable. |
| `is_approved` | boolean | No | Filter entries by whether they are approved. |
| `start_after` | string | No | Return entries started after this ISO 8601 timestamp. |
| `start_before` | string | No | Return entries started before this ISO 8601 timestamp. |
| `created_after` | string | No | Return entries created after this ISO 8601 timestamp. |
| `updated_after` | string | No | Return entries updated after this ISO 8601 timestamp. |
| `active_on_date` | string | No | Return entries active on this ISO 8601 date and time. |
| `created_before` | string | No | Return entries created before this ISO 8601 timestamp. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Time sheet entry sort direction. |
| `updated_before` | string | No | Return entries updated before this ISO 8601 timestamp. |
| `assigned_user_id` | string | No | Return entries belonging to this opaque Jobber user EncodedId. |
| `current_user_only` | boolean | No | When true, return only entries belonging to the connected Jobber user. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Users

**Slug:** `JOBBER_LIST_USERS`

Search Jobber users by name or activation status and return each user's account status and role details in one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum users to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_USERS response. |
| `status` | string ("ACTIVATED" | "DEACTIVATED") | No | Filter activated or deactivated users; omit to use Jobber's default set. |
| `user_ids` | array | No | Restrict results to these opaque Jobber user EncodedIds; requires status. |
| `search_term` | string | No | Text used to search users by name. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Sort users by name in this direction. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Visits

**Slug:** `JOBBER_LIST_VISITS`

Filter scheduled or unscheduled visits by status, time, assignee, or billing state, returning one cursor-paginated page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum visits to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous LIST_VISITS response. |
| `status` | string ("ACTIVE" | "COMPLETED" | "LATE" | "TODAY" | "UNSCHEDULED" | "UPCOMING") | No | Visit status filter. |
| `sort_key` | string ("CREATED_AT" | "START_AT" | "CLIENT_PRIMARY_NAME" | "STATUS") | No | Field used to sort visits. |
| `timezone` | string | No | IANA timezone Jobber uses to calculate each visit's status. |
| `start_after` | string | No | Return visits starting after this ISO 8601 timestamp. |
| `start_before` | string | No | Return visits starting before this ISO 8601 timestamp. |
| `invoice_status` | string ("INVOICED_ONLY" | "UNINVOICED_ONLY") | No | Filter visits by whether they have been invoiced. |
| `sort_direction` | string ("ASCENDING" | "DESCENDING") | No | Visit sort direction. |
| `assigned_user_id` | string | No | Return visits assigned to this opaque Jobber user EncodedId. |
| `product_or_service_id` | string | No | Return visits containing this opaque Jobber product or service EncodedId. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Client

**Slug:** `JOBBER_UPDATE_CLIENT`

Update a Jobber client's identity, communication preferences, or tags, or add primary email or phone details. Provide at least one update field in addition to client_id; added contact records do not replace existing records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `client_id` | string | Yes | Opaque Jobber EncodedId for the client to update. |
| `last_name` | string | No | Replacement last name. |
| `first_name` | string | No | Replacement first name. |
| `is_company` | boolean | No | Set whether the client represents a company. |
| `tags_to_add` | array | No | Non-empty tags to add to the client. |
| `company_name` | string | No | Replacement company name. |
| `email_to_add` | string | No | New primary email address to add without replacing existing email records. |
| `phone_to_add` | string | No | New primary phone number to add without replacing existing phone records. |
| `tags_to_remove` | array | No | Non-empty tags to remove from the client. |
| `receives_reminders` | boolean | No | Set whether the client receives appointment reminders. |
| `receives_follow_ups` | boolean | No | Set whether the client receives follow-up messages. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Custom Field Configuration

**Slug:** `JOBBER_UPDATE_CUSTOM_FIELD_CONFIGURATION`

Rename or update the type-specific default of an existing Jobber custom field. Requires Jobber Connect or higher and the app's Custom Field Configurations permission. field_type is needed only for type-specific updates and must match the existing field; this action cannot change appliesTo, readOnly, transferable, or the field's value type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Non-empty replacement custom-field name. |
| `unit` | string | No | Non-empty AREA or NUMERIC unit for the selected type-specific branch. |
| `field_type` | string ("TEXT" | "LINK" | "AREA" | "TRUE_FALSE" | "NUMERIC" | "DROPDOWN") | No | Existing Jobber value type. Required only when sending a type-specific default, unit, or options field; it cannot change the field's type. |
| `default_url` | string | No | Replacement LINK URL; requires field_type LINK and default_text. |
| `default_text` | string | No | Replacement TEXT default, or the required non-empty LINK label when updating a LINK default. |
| `default_width` | number | No | Replacement non-negative AREA default width; requires a unit. |
| `default_length` | number | No | Replacement non-negative AREA default length; requires a unit. |
| `default_number` | number | No | Replacement non-negative NUMERIC default; requires a unit. |
| `default_boolean` | boolean | No | Replacement TRUE_FALSE default. False is a valid update. |
| `dropdown_options` | array | No | One to 100 unique non-empty DROPDOWN options. |
| `default_dropdown_option` | string | No | Replacement DROPDOWN default. Supply dropdown_options in the same request, including this exact option. |
| `custom_field_configuration_id` | string | Yes | Opaque Jobber EncodedId for the custom-field configuration to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice

**Slug:** `JOBBER_UPDATE_INVOICE`

Update an existing Jobber invoice's customer-facing text, issue or due terms, discount, salesperson, or payment options. This is a financial write: discounts can change the invoice total, due terms can change when payment is owed, and payment switches can change how the client may pay.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `message` | string | No | Replacement customer-facing invoice message. |
| `subject` | string | No | Replacement customer-facing invoice subject. |
| `due_date` | string | No | Exact ISO 8601 payment due timestamp. Mutually exclusive with invoice_net_days. |
| `invoice_id` | string | Yes | Opaque Jobber EncodedId for the invoice to update. |
| `issued_date` | string | No | Replacement ISO 8601 invoice issue timestamp. |
| `discount_rate` | number | No | Non-negative discount percentage or fixed amount; requires discount_type and can change the invoice total. Zero is preserved. |
| `discount_type` | string ("Percent" | "Unit") | No | Whether discount_rate is a percentage or fixed unit amount. |
| `invoice_number` | string | No | Replacement account-visible invoice number. |
| `salesperson_id` | string | No | Opaque Jobber user EncodedId for the salesperson. |
| `invoice_net_days` | integer | No | Non-negative number of days after issuance when payment is due. Mutually exclusive with due_date; zero is preserved. |
| `allow_ach_payments` | boolean | No | Set whether the client may pay this invoice by ACH in Client Hub. |
| `contract_disclaimer` | string | No | Replacement customer-facing contract disclaimer. |
| `allow_review_request` | boolean | No | Set whether Jobber may send a review request for the invoice. |
| `allow_partial_payments` | boolean | No | Set whether the client may make partial payments on this invoice. |
| `allow_credit_card_payments` | boolean | No | Set whether the client may pay this invoice by credit card in Client Hub. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Job

**Slug:** `JOBBER_UPDATE_JOB`

Update an existing Jobber job's basic details, timeframe, salesperson, or review-request preference. Provide at least one update field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Replacement job title. |
| `job_id` | string | Yes | Opaque Jobber EncodedId for the job to update. |
| `start_date` | string | No | ISO 8601 date when the updated job timeframe starts. |
| `instructions` | string | No | Replacement instructions for the job team. |
| `duration_unit` | string ("DAYS" | "WEEKS" | "MONTHS" | "YEARS") | No | Unit for duration_value. |
| `duration_value` | integer | No | Length of the updated job timeframe; requires duration_unit. |
| `salesperson_id` | string | No | Opaque Jobber user EncodedId for the salesperson. |
| `allow_review_request` | boolean | No | Set whether Jobber may send a review-request SMS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Note

**Slug:** `JOBBER_UPDATE_NOTE`

Update a note discovered on a Jobber client, job, quote, invoice, or request. Dispatches only to the fixed mutation for resource_type and requires at least one supported update field. Link compatibility: CLIENT supports invoices/jobs/quotes/requests; JOB supports invoices; QUOTE supports invoices/jobs; REQUEST supports invoices/jobs/quotes; INVOICE supports no link flags.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pinned` | boolean | No | Set whether the note is pinned. |
| `message` | string | No | Replacement note text. |
| `note_id` | string | Yes | Opaque Jobber EncodedId for the note to update. |
| `link_to_jobs` | boolean | No | Set a job link for CLIENT, QUOTE, or REQUEST notes; invalid for JOB and INVOICE notes. |
| `resource_type` | string ("CLIENT" | "JOB" | "QUOTE" | "INVOICE" | "REQUEST") | Yes | Uppercase type of Jobber resource that owns the note. Link compatibility: CLIENT supports invoices/jobs/quotes/requests; JOB supports invoices; QUOTE supports invoices/jobs; REQUEST supports invoices/jobs/quotes; INVOICE supports no link flags. |
| `link_to_quotes` | boolean | No | Set a quote link for CLIENT or REQUEST notes; invalid for JOB, QUOTE, and INVOICE notes. |
| `link_to_invoices` | boolean | No | Set an invoice link for CLIENT, JOB, QUOTE, or REQUEST notes; invalid for INVOICE notes. |
| `link_to_requests` | boolean | No | Set a request link for CLIENT notes; invalid for JOB, QUOTE, REQUEST, and INVOICE notes. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Product Or Service

**Slug:** `JOBBER_UPDATE_PRODUCT_OR_SERVICE`

Update an existing Jobber catalog item's pricing, visibility, scheduling, classification, or self-serve quantity settings. Financial fields affect the item as follows: default_unit_cost changes the default customer price, internal_unit_cost changes the internal cost used to track profitability, markup changes the markup percentage, and taxable controls whether the item is subject to tax. Provide at least one update field in addition to product_or_service_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Replacement catalog item name. |
| `markup` | number | No | Non-negative replacement markup percentage. |
| `taxable` | boolean | No | Set whether the catalog item is taxable. |
| `visible` | boolean | No | Set whether the item is visible in the Jobber catalog. |
| `category` | string ("PRODUCT" | "SERVICE" | "LABOUR") | No | Replacement product, service, or labour classification. |
| `description` | string | No | Replacement catalog item description. |
| `max_quantity` | integer | No | Non-negative inclusive maximum selectable quantity; requires quantity_enabled. |
| `min_quantity` | integer | No | Non-negative inclusive minimum selectable quantity; requires quantity_enabled. |
| `bookable_type` | string ("WORK_ORDER" | "WORK_REQUEST") | No | Set whether self-serve booking creates a work order or work request. |
| `duration_minutes` | integer | No | Non-negative replacement service duration in minutes. |
| `quantity_enabled` | boolean | No | Set whether self-serve customers may choose a quantity for this item. |
| `default_unit_cost` | number | No | Non-negative replacement customer unit price. |
| `internal_unit_cost` | number | No | Non-negative replacement internal unit cost. |
| `product_or_service_id` | string | Yes | Opaque Jobber EncodedId for the catalog item to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Quote

**Slug:** `JOBBER_UPDATE_QUOTE`

Update an existing Jobber quote's customer-facing text, quote number, pricing modifiers, salesperson, or payment options. Provide at least one update field in addition to quote_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Replacement quote title. |
| `deposit` | object | No | Replacement quote deposit object with required non-negative rate and type; type must be Percent for a percentage or Unit for a fixed amount. |
| `message` | string | No | Replacement customer-facing quote message. |
| `discount` | object | No | Replacement quote discount object with required non-negative rate and type; type must be Percent for a percentage or Unit for a fixed amount. |
| `quote_id` | string | Yes | Opaque Jobber EncodedId for the quote to update. |
| `quote_number` | string | No | Replacement account-visible quote number. |
| `salesperson_id` | string | No | Opaque Jobber user EncodedId for the salesperson. |
| `allow_ach_payments` | boolean | No | Set whether the client may pay this quote by ACH in Client Hub. |
| `contract_disclaimer` | string | No | Replacement customer-facing contract disclaimer. |
| `allow_credit_card_payments` | boolean | No | Set whether the client may pay this quote by credit card in Client Hub. |
| `mandatory_payment_method_on_file` | boolean | No | Set whether the client must keep a payment method on file. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
