From 06fb439db79eb4973a118fb4353e4d6e491b8228 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Mon, 29 Jun 2026 15:19:15 +0500 Subject: [PATCH 1/9] Added breezy docs --- src/docs.json | 1 + src/generate-docs.ts | 1 + src/provider-guides/breezy.mdx | 117 +++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 src/provider-guides/breezy.mdx diff --git a/src/docs.json b/src/docs.json index dc4de9b0..2096c622 100644 --- a/src/docs.json +++ b/src/docs.json @@ -92,6 +92,7 @@ "provider-guides/braintree", "provider-guides/braze", "provider-guides/breakcold", + "provider-guides/breezy", "provider-guides/brevo", "provider-guides/bynder", "provider-guides/calendly", diff --git a/src/generate-docs.ts b/src/generate-docs.ts index 1079fb60..6b825c94 100644 --- a/src/generate-docs.ts +++ b/src/generate-docs.ts @@ -323,6 +323,7 @@ const baseConfig = { "provider-guides/braintree", "provider-guides/braze", "provider-guides/breakcold", + "provider-guides/breezy", "provider-guides/brevo", "provider-guides/bynder", "provider-guides/calendly", diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx new file mode 100644 index 00000000..04404563 --- /dev/null +++ b/src/provider-guides/breezy.mdx @@ -0,0 +1,117 @@ +--- +title: "Breezy" +--- + +## What's supported + +### Supported actions + +This connector supports: +- [Read Actions](/read-actions), including full historic backfill and incremental read for `positions`. All other supported objects use a full read on each schedule. +- [Write Actions](/write-actions) (create/update) for `positions` only. +- [Proxy Actions](/proxy-actions), using the base URL `https://api.breezy.hr`. +- Subscribe Actions are not currently supported. + +### Supported objects + +export const Check = () => +export const Cross = () => 🚫 + +
+ + + + + + + + + + + + + + + + + + +
ObjectReadWriteSubscribe
companies
positions
pipelines
categories
departments
questionnaires
templates
+
+ +For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/reference/objects-&-fields/get-object-metadata-via-connection) to inspect what’s available for a specific connection. + +### Notes and limitations + +- **Write support**: Only `positions` supports create and update. Single-record operations only (no bulk write). +- **Delete support (`positions` only)**: The connector exposes a Delete operation for `positions`, but Breezy does not provide an HTTP `DELETE` method for job postings. Delete is implemented as a **soft delete (archive)** — the position is moved to `archived` state via `PUT …/position/{id}/state` and no longer appears in the default published positions list. The record is not permanently removed from Breezy. +- **Create state**: New positions are created in **`draft`** state. The default positions Read list returns **`published`** positions only. After creating a position via Write, publish it in Breezy (or via the state API) if you need it to appear in the default Read results. +- **Incremental read**: Connector-side incremental read is supported for `positions` using `updated_date`. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are small lookup lists and use a full read on each schedule. +- **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response. +- **Company scoping**: Objects other than `companies` require a **Company ID** (see [Before you get started](#before-you-get-started)). +- **Custom fields**: Breezy positions may include `custom_attributes` in API responses. This connector does not schema-map custom fields separately; Write passes through JSON fields accepted by [Breezy’s position APIs](https://developer.breezy.hr/reference/company-positions-add). + +### Example integration + +To define an integration for Breezy, use a manifest file (`amp.yaml`). For a complete example, visit our [samples repo on Github](https://github.com/amp-labs/samples/blob/main/breezy/amp.yaml). + +## Before you get started + +To connect _Breezy_ with _Ampersand_, you will need [a Breezy account](https://breezy.hr/). + +Once your account is created, you'll need to obtain the following: + +- **API Key** — Breezy access token used as the `Authorization` header on API requests. Obtain it via the [`/v3/signin`](https://developer.breezy.hr/reference/signin) endpoint. +- **Company ID** — The `_id` of the company to scope company-level objects (`positions`, `pipelines`, `categories`, `departments`, `questionnaires`, `templates`). Required as metadata when using the connector. + +Your customers enter these when they install the integration via the InstallIntegration UI. + +### Create a Breezy account + +Here's how you can sign up for a Breezy account: + +- Sign up at [Breezy](https://breezy.hr/) and create a company workspace. + +### Obtain API credentials + +Follow the steps below to obtain your access token and Company ID from Breezy: + +1. Obtain an access token by calling Breezy’s sign-in endpoint with a user that has API access. See [Authorization](https://developer.breezy.hr/reference/authorization) and [`/v3/signin`](https://developer.breezy.hr/reference/signin). + + ```bash + curl -H "Content-Type: application/json" \ + -X POST \ + -d '{"email":"user@example.com","password":"YOUR_PASSWORD"}' \ + https://api.breezy.hr/v3/signin + ``` + + Use the `access_token` value from the response as the API key. + +2. **Company ID**: List companies accessible to the token: + + ```bash + curl -H "Authorization: YOUR_ACCESS_TOKEN" \ + https://api.breezy.hr/v3/companies + ``` + + Copy the `_id` field for the company you want to connect. Use this value as **Company ID** in Ampersand — not `friendly_id`. + + +Company-scoped API calls (positions, pipelines, categories, departments, questionnaires, templates) require the correct `_id` from `GET /v3/companies`. A token that cannot access the supplied Company ID will return authorization errors on write operations. + + +## Using the connector + +This connector uses API Key auth, which means that you do not need to set up a Provider App before getting started. (Provider apps are only required for providers that use OAuth2 Authorization Code grant type.) + +The API key is sent in the `Authorization` header with no prefix, per [Breezy’s documentation](https://developer.breezy.hr/reference/authorization). + +To start integrating with Breezy: +- Create a manifest file; see [Example integration](#example-integration). +- Deploy it using the [amp CLI](/cli/overview). +- If you are using Read Actions, create a [destination](/destinations). +- Embed the [InstallIntegration](/embeddable-ui-components#install-integration) UI component. The UI component will prompt the customer for their API key and Company ID. +- Start using the connector! + - If your integration has [Read Actions](/read-actions), you'll start getting webhook messages. + - If your integration has [Write Actions](/write-actions), you can start making API calls to our Write API. + - If your integration has [Proxy Actions](/proxy-actions), you can start making Proxy API calls. Ampersand will automatically attach the API key for the connected account. From 659e536e679c9cce731d4fd5c67f63853c478c75 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 13:54:15 +0500 Subject: [PATCH 2/9] Refactored the Supported objects table to match the ConnectWise pattern --- src/provider-guides/breezy.mdx | 83 ++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 19 deletions(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index 04404563..37d21766 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -14,29 +14,74 @@ This connector supports: ### Supported objects +export const rows = [ + { + label: "categories", read: true, write: false, subscribe: false, + href: "https://developer.breezy.hr/reference/company-pipelines-1-1", + }, { + label: "companies", read: true, write: false, subscribe: false, + href: "https://developer.breezy.hr/reference/companies", + }, { + label: "departments", read: true, write: false, subscribe: false, + href: "https://developer.breezy.hr/reference/company-pipelines-1", + }, { + label: "pipelines", read: true, write: false, subscribe: false, + href: "https://developer.breezy.hr/reference/company-pipelines", + }, { + label: "positions", read: true, write: true, subscribe: false, + href: "https://developer.breezy.hr/reference/company-positions", + }, { + label: "questionnaires", read: true, write: false, subscribe: false, + href: "https://developer.breezy.hr/reference/company-questionnaires", + }, { + label: "templates", read: true, write: false, subscribe: false, + href: "https://developer.breezy.hr/reference/company-templates", + }, +] + export const Check = () => export const Cross = () => 🚫 +export function renderCellValue(value) { + if (typeof value === "boolean") { + return value ? : ; + } + + return value; +} +
- - - - - - - - - - - - - - - - - - -
ObjectReadWriteSubscribe
companies
positions
pipelines
categories
departments
questionnaires
templates
+ + + + + + + + + + + {[...rows] + .sort((a, b) => a.label.localeCompare(b.label)) + .map((row) => ( + + + + + + + ))} + +
ObjectReadWriteSubscribe
+ {row.label} + {renderCellValue(row.read)}{renderCellValue(row.write)}{renderCellValue(row.subscribe)}
For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/reference/objects-&-fields/get-object-metadata-via-connection) to inspect what’s available for a specific connection. From f7e1538c5256f998e6d83ec818c4f332c2ee2c31 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 13:57:49 +0500 Subject: [PATCH 3/9] Remove company scoping --- src/provider-guides/breezy.mdx | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index 37d21766..69832d7c 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -93,7 +93,6 @@ For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/r - **Create state**: New positions are created in **`draft`** state. The default positions Read list returns **`published`** positions only. After creating a position via Write, publish it in Breezy (or via the state API) if you need it to appear in the default Read results. - **Incremental read**: Connector-side incremental read is supported for `positions` using `updated_date`. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are small lookup lists and use a full read on each schedule. - **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response. -- **Company scoping**: Objects other than `companies` require a **Company ID** (see [Before you get started](#before-you-get-started)). - **Custom fields**: Breezy positions may include `custom_attributes` in API responses. This connector does not schema-map custom fields separately; Write passes through JSON fields accepted by [Breezy’s position APIs](https://developer.breezy.hr/reference/company-positions-add). ### Example integration @@ -104,12 +103,9 @@ To define an integration for Breezy, use a manifest file (`amp.yaml`). For a com To connect _Breezy_ with _Ampersand_, you will need [a Breezy account](https://breezy.hr/). -Once your account is created, you'll need to obtain the following: +Once your account is created, you'll need to obtain an **API Key** — a Breezy access token used as the `Authorization` header on API requests. Obtain it via the [`/v3/signin`](https://developer.breezy.hr/reference/signin) endpoint. -- **API Key** — Breezy access token used as the `Authorization` header on API requests. Obtain it via the [`/v3/signin`](https://developer.breezy.hr/reference/signin) endpoint. -- **Company ID** — The `_id` of the company to scope company-level objects (`positions`, `pipelines`, `categories`, `departments`, `questionnaires`, `templates`). Required as metadata when using the connector. - -Your customers enter these when they install the integration via the InstallIntegration UI. +Your customers enter this when they install the integration via the InstallIntegration UI. ### Create a Breezy account @@ -119,7 +115,7 @@ Here's how you can sign up for a Breezy account: ### Obtain API credentials -Follow the steps below to obtain your access token and Company ID from Breezy: +Follow the steps below to obtain your access token from Breezy: 1. Obtain an access token by calling Breezy’s sign-in endpoint with a user that has API access. See [Authorization](https://developer.breezy.hr/reference/authorization) and [`/v3/signin`](https://developer.breezy.hr/reference/signin). @@ -132,19 +128,6 @@ Follow the steps below to obtain your access token and Company ID from Breezy: Use the `access_token` value from the response as the API key. -2. **Company ID**: List companies accessible to the token: - - ```bash - curl -H "Authorization: YOUR_ACCESS_TOKEN" \ - https://api.breezy.hr/v3/companies - ``` - - Copy the `_id` field for the company you want to connect. Use this value as **Company ID** in Ampersand — not `friendly_id`. - - -Company-scoped API calls (positions, pipelines, categories, departments, questionnaires, templates) require the correct `_id` from `GET /v3/companies`. A token that cannot access the supplied Company ID will return authorization errors on write operations. - - ## Using the connector This connector uses API Key auth, which means that you do not need to set up a Provider App before getting started. (Provider apps are only required for providers that use OAuth2 Authorization Code grant type.) @@ -155,7 +138,7 @@ To start integrating with Breezy: - Create a manifest file; see [Example integration](#example-integration). - Deploy it using the [amp CLI](/cli/overview). - If you are using Read Actions, create a [destination](/destinations). -- Embed the [InstallIntegration](/embeddable-ui-components#install-integration) UI component. The UI component will prompt the customer for their API key and Company ID. +- Embed the [InstallIntegration](/embeddable-ui-components#install-integration) UI component. The UI component will prompt the customer for their API key. - Start using the connector! - If your integration has [Read Actions](/read-actions), you'll start getting webhook messages. - If your integration has [Write Actions](/write-actions), you can start making API calls to our Write API. From fb52e32795267719d9890adfee1ee4502fe8f0e8 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 14:00:10 +0500 Subject: [PATCH 4/9] Remove custom fields --- src/provider-guides/breezy.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index 69832d7c..6a78eb70 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -93,7 +93,6 @@ For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/r - **Create state**: New positions are created in **`draft`** state. The default positions Read list returns **`published`** positions only. After creating a position via Write, publish it in Breezy (or via the state API) if you need it to appear in the default Read results. - **Incremental read**: Connector-side incremental read is supported for `positions` using `updated_date`. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are small lookup lists and use a full read on each schedule. - **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response. -- **Custom fields**: Breezy positions may include `custom_attributes` in API responses. This connector does not schema-map custom fields separately; Write passes through JSON fields accepted by [Breezy’s position APIs](https://developer.breezy.hr/reference/company-positions-add). ### Example integration From 23d4255143b7a0d61752d6286886b3234a426fc0 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 14:02:34 +0500 Subject: [PATCH 5/9] Fix docs for incremental read --- src/provider-guides/breezy.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index 6a78eb70..84fdee73 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -7,7 +7,7 @@ title: "Breezy" ### Supported actions This connector supports: -- [Read Actions](/read-actions), including full historic backfill and incremental read for `positions`. All other supported objects use a full read on each schedule. +- [Read Actions](/read-actions), including full historic backfill. Incremental read is supported for `positions` only. For all other objects, a full read will be done on each scheduled read. - [Write Actions](/write-actions) (create/update) for `positions` only. - [Proxy Actions](/proxy-actions), using the base URL `https://api.breezy.hr`. - Subscribe Actions are not currently supported. @@ -91,7 +91,7 @@ For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/r - **Write support**: Only `positions` supports create and update. Single-record operations only (no bulk write). - **Delete support (`positions` only)**: The connector exposes a Delete operation for `positions`, but Breezy does not provide an HTTP `DELETE` method for job postings. Delete is implemented as a **soft delete (archive)** — the position is moved to `archived` state via `PUT …/position/{id}/state` and no longer appears in the default published positions list. The record is not permanently removed from Breezy. - **Create state**: New positions are created in **`draft`** state. The default positions Read list returns **`published`** positions only. After creating a position via Write, publish it in Breezy (or via the state API) if you need it to appear in the default Read results. -- **Incremental read**: Connector-side incremental read is supported for `positions` using `updated_date`. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are small lookup lists and use a full read on each schedule. +- **Incremental read**: Incremental read is supported for `positions` only. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are read in full on each scheduled read. - **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response. ### Example integration From d20ff5878df0e0ae090d508b1c46af7dcc707622 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 14:05:03 +0500 Subject: [PATCH 6/9] Remove delete comment --- src/provider-guides/breezy.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index 84fdee73..e07fe1c0 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -89,7 +89,6 @@ For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/r ### Notes and limitations - **Write support**: Only `positions` supports create and update. Single-record operations only (no bulk write). -- **Delete support (`positions` only)**: The connector exposes a Delete operation for `positions`, but Breezy does not provide an HTTP `DELETE` method for job postings. Delete is implemented as a **soft delete (archive)** — the position is moved to `archived` state via `PUT …/position/{id}/state` and no longer appears in the default published positions list. The record is not permanently removed from Breezy. - **Create state**: New positions are created in **`draft`** state. The default positions Read list returns **`published`** positions only. After creating a position via Write, publish it in Breezy (or via the state API) if you need it to appear in the default Read results. - **Incremental read**: Incremental read is supported for `positions` only. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are read in full on each scheduled read. - **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response. From 61f063f316e7d3009722f0b2d19adfef339f64d2 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 14:07:25 +0500 Subject: [PATCH 7/9] Rewrote Published vs draft positions --- src/provider-guides/breezy.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index e07fe1c0..e60f0d49 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -89,7 +89,7 @@ For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/r ### Notes and limitations - **Write support**: Only `positions` supports create and update. Single-record operations only (no bulk write). -- **Create state**: New positions are created in **`draft`** state. The default positions Read list returns **`published`** positions only. After creating a position via Write, publish it in Breezy (or via the state API) if you need it to appear in the default Read results. +- **Published vs draft positions**: Write creates new positions as **drafts** in Breezy. The `positions` Read object returns **published** job postings only. If you create a position via Write and need it in Read results, publish that job posting in Breezy first. - **Incremental read**: Incremental read is supported for `positions` only. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are read in full on each scheduled read. - **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response. From a1f6f787a0301117b30b42e3da235d8a2edcd552 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 14:13:56 +0500 Subject: [PATCH 8/9] Update Before you get started section --- src/provider-guides/breezy.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index e60f0d49..c1bc897d 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -101,7 +101,7 @@ To define an integration for Breezy, use a manifest file (`amp.yaml`). For a com To connect _Breezy_ with _Ampersand_, you will need [a Breezy account](https://breezy.hr/). -Once your account is created, you'll need to obtain an **API Key** — a Breezy access token used as the `Authorization` header on API requests. Obtain it via the [`/v3/signin`](https://developer.breezy.hr/reference/signin) endpoint. +Once your account is created, you'll need to obtain an **API Key** — a Breezy access token used as the `Authorization` header on API requests. Your customers enter this when they install the integration via the InstallIntegration UI. @@ -109,13 +109,13 @@ Your customers enter this when they install the integration via the InstallInteg Here's how you can sign up for a Breezy account: -- Sign up at [Breezy](https://breezy.hr/) and create a company workspace. +- Sign up at [Breezy](https://breezy.hr/). ### Obtain API credentials -Follow the steps below to obtain your access token from Breezy: +Follow the steps below to obtain your API key from Breezy: -1. Obtain an access token by calling Breezy’s sign-in endpoint with a user that has API access. See [Authorization](https://developer.breezy.hr/reference/authorization) and [`/v3/signin`](https://developer.breezy.hr/reference/signin). +1. Call Breezy's [sign-in endpoint](https://developer.breezy.hr/reference/signin) with a user that has API access. See [Authorization](https://developer.breezy.hr/reference/authorization). ```bash curl -H "Content-Type: application/json" \ From 9649c9a9e185c53ca37da04cb3d4f411f79fcaf5 Mon Sep 17 00:00:00 2001 From: Ali Iqbal Date: Tue, 30 Jun 2026 18:14:25 +0500 Subject: [PATCH 9/9] Rm a bullet --- src/provider-guides/breezy.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/provider-guides/breezy.mdx b/src/provider-guides/breezy.mdx index c1bc897d..a4db36bf 100644 --- a/src/provider-guides/breezy.mdx +++ b/src/provider-guides/breezy.mdx @@ -88,7 +88,6 @@ For objects and fields, you can also use Ampersand’s [Object Metadata APIs](/r ### Notes and limitations -- **Write support**: Only `positions` supports create and update. Single-record operations only (no bulk write). - **Published vs draft positions**: Write creates new positions as **drafts** in Breezy. The `positions` Read object returns **published** job postings only. If you create a position via Write and need it in Read results, publish that job posting in Breezy first. - **Incremental read**: Incremental read is supported for `positions` only. `companies`, `pipelines`, `categories`, `departments`, `questionnaires`, and `templates` are read in full on each scheduled read. - **Pipelines**: The connector returns the default hiring pipeline from Breezy’s pipelines map response.