diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/create.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/create.mdx
new file mode 100644
index 000000000..d53c8eb0d
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/create.mdx
@@ -0,0 +1,4 @@
+---
+title: "Create"
+openapi: "POST /api/v1/secret-syncs/cloudflare-workers"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/delete.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/delete.mdx
new file mode 100644
index 000000000..919074e74
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/delete.mdx
@@ -0,0 +1,4 @@
+---
+title: "Delete"
+openapi: "DELETE /api/v1/secret-syncs/cloudflare-workers/{syncId}"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-id.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-id.mdx
new file mode 100644
index 000000000..5d425e722
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-id.mdx
@@ -0,0 +1,4 @@
+---
+title: "Get by ID"
+openapi: "GET /api/v1/secret-syncs/cloudflare-workers/{syncId}"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-name.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-name.mdx
new file mode 100644
index 000000000..877b58aed
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-name.mdx
@@ -0,0 +1,4 @@
+---
+title: "Get by Name"
+openapi: "GET /api/v1/secret-syncs/cloudflare-workers/sync-name/{syncName}"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/list.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/list.mdx
new file mode 100644
index 000000000..1377c2282
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/list.mdx
@@ -0,0 +1,4 @@
+---
+title: "List"
+openapi: "GET /api/v1/secret-syncs/cloudflare-workers"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/remove-secrets.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/remove-secrets.mdx
new file mode 100644
index 000000000..6446ede42
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/remove-secrets.mdx
@@ -0,0 +1,4 @@
+---
+title: "Remove Secrets"
+openapi: "POST /api/v1/secret-syncs/cloudflare-workers/{syncId}/remove-secrets"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/sync-secrets.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/sync-secrets.mdx
new file mode 100644
index 000000000..1980f0797
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/sync-secrets.mdx
@@ -0,0 +1,4 @@
+---
+title: "Sync Secrets"
+openapi: "POST /api/v1/secret-syncs/cloudflare-workers/{syncId}/sync-secrets"
+---
diff --git a/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/update.mdx b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/update.mdx
new file mode 100644
index 000000000..4dc511b2c
--- /dev/null
+++ b/docs/api-reference/endpoints/secret-syncs/cloudflare-workers/update.mdx
@@ -0,0 +1,4 @@
+---
+title: "Update"
+openapi: "PATCH /api/v1/secret-syncs/cloudflare-workers/{syncId}"
+---
diff --git a/docs/docs.json b/docs/docs.json
index 94046ad02..5b5775fc6 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -513,6 +513,7 @@
"integrations/secret-syncs/azure-key-vault",
"integrations/secret-syncs/camunda",
"integrations/secret-syncs/cloudflare-pages",
+ "integrations/secret-syncs/cloudflare-workers",
"integrations/secret-syncs/databricks",
"integrations/secret-syncs/flyio",
"integrations/secret-syncs/gcp-secret-manager",
@@ -853,30 +854,30 @@
{
"group": "Organizations",
"pages": [
- {
- "group": "OIDC SSO",
- "pages": [
- "api-reference/endpoints/organizations/oidc-sso/get-oidc-config",
- "api-reference/endpoints/organizations/oidc-sso/update-oidc-config",
- "api-reference/endpoints/organizations/oidc-sso/create-oidc-config"
- ]
- },
- {
- "group": "LDAP SSO",
- "pages": [
- "api-reference/endpoints/organizations/ldap-sso/get-ldap-config",
- "api-reference/endpoints/organizations/ldap-sso/update-ldap-config",
- "api-reference/endpoints/organizations/ldap-sso/create-ldap-config"
- ]
- },
- {
- "group": "SAML SSO",
- "pages": [
- "api-reference/endpoints/organizations/saml-sso/get-saml-config",
- "api-reference/endpoints/organizations/saml-sso/update-saml-config",
- "api-reference/endpoints/organizations/saml-sso/create-saml-config"
- ]
- },
+ {
+ "group": "OIDC SSO",
+ "pages": [
+ "api-reference/endpoints/organizations/oidc-sso/get-oidc-config",
+ "api-reference/endpoints/organizations/oidc-sso/update-oidc-config",
+ "api-reference/endpoints/organizations/oidc-sso/create-oidc-config"
+ ]
+ },
+ {
+ "group": "LDAP SSO",
+ "pages": [
+ "api-reference/endpoints/organizations/ldap-sso/get-ldap-config",
+ "api-reference/endpoints/organizations/ldap-sso/update-ldap-config",
+ "api-reference/endpoints/organizations/ldap-sso/create-ldap-config"
+ ]
+ },
+ {
+ "group": "SAML SSO",
+ "pages": [
+ "api-reference/endpoints/organizations/saml-sso/get-saml-config",
+ "api-reference/endpoints/organizations/saml-sso/update-saml-config",
+ "api-reference/endpoints/organizations/saml-sso/create-saml-config"
+ ]
+ },
"api-reference/endpoints/organizations/memberships",
"api-reference/endpoints/organizations/update-membership",
"api-reference/endpoints/organizations/delete-membership",
@@ -1706,6 +1707,19 @@
"api-reference/endpoints/secret-syncs/cloudflare-pages/remove-secrets"
]
},
+ {
+ "group": "Cloudflare Workers",
+ "pages": [
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/list",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-id",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/get-by-name",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/create",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/update",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/delete",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/sync-secrets",
+ "api-reference/endpoints/secret-syncs/cloudflare-workers/remove-secrets"
+ ]
+ },
{
"group": "Databricks",
"pages": [
diff --git a/docs/images/app-connections/cloudflare/cloudflare-workers-configure-permissions.png b/docs/images/app-connections/cloudflare/cloudflare-workers-configure-permissions.png
new file mode 100644
index 000000000..d752b51e3
Binary files /dev/null and b/docs/images/app-connections/cloudflare/cloudflare-workers-configure-permissions.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-created.png b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-created.png
new file mode 100644
index 000000000..25c366ac9
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-created.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-destination.png b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-destination.png
new file mode 100644
index 000000000..dae054651
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-destination.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-details.png b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-details.png
new file mode 100644
index 000000000..b02555bc6
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-details.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-options.png b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-options.png
new file mode 100644
index 000000000..d3e9f4c22
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-options.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-review.png b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-review.png
new file mode 100644
index 000000000..64769357e
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-review.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-source.png b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-source.png
new file mode 100644
index 000000000..ea1de6824
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/cloudflare-workers-sync-source.png differ
diff --git a/docs/images/secret-syncs/cloudflare-workers/select-cloudflare-workers-option.png b/docs/images/secret-syncs/cloudflare-workers/select-cloudflare-workers-option.png
new file mode 100644
index 000000000..9a3681f4e
Binary files /dev/null and b/docs/images/secret-syncs/cloudflare-workers/select-cloudflare-workers-option.png differ
diff --git a/docs/integrations/app-connections/cloudflare.mdx b/docs/integrations/app-connections/cloudflare.mdx
index 66ba1256f..6d79d2567 100644
--- a/docs/integrations/app-connections/cloudflare.mdx
+++ b/docs/integrations/app-connections/cloudflare.mdx
@@ -35,6 +35,17 @@ Infisical supports connecting to Cloudflare using API tokens and Account ID for
- **Account** - **Cloudflare Pages** - **Edit**
- **Account** - **Account Settings** - **Read**
+ Add these permissions to your API token and click **Continue to summary**, then **Create Token** to generate your API token.
+
+
+ Use the following permissions to grant Infisical access to sync secrets to Cloudflare Workers:
+
+ 
+
+ **Required Permissions:**
+ - **Account** - **Workers Scripts** - **Edit**
+ - **Account** - **Account Settings** - **Read**
+
Add these permissions to your API token and click **Continue to summary**, then **Create Token** to generate your API token.
@@ -44,7 +55,7 @@ Infisical supports connecting to Cloudflare using API tokens and Account ID for
After creation, copy and securely store your API token as it will not be shown again.
-
+

diff --git a/docs/integrations/secret-syncs/cloudflare-workers.mdx b/docs/integrations/secret-syncs/cloudflare-workers.mdx
new file mode 100644
index 000000000..974d40e82
--- /dev/null
+++ b/docs/integrations/secret-syncs/cloudflare-workers.mdx
@@ -0,0 +1,130 @@
+---
+title: "Cloudflare Workers Sync"
+description: "Learn how to configure a Cloudflare Workers Sync for Infisical."
+---
+
+**Prerequisites:**
+
+- Set up and add secrets to [Infisical Cloud](https://app.infisical.com)
+- Create a [Cloudflare Connection](/integrations/app-connections/cloudflare)
+
+
+
+ 1. Navigate to **Project** > **Integrations** and select the **Secret Syncs** tab. Click on the **Add Sync** button.
+ 
+
+ 2. Select the **Cloudflare Workers** option.
+ 
+
+ 3. Configure the **Source** from where secrets should be retrieved, then click **Next**.
+ 
+
+ - **Environment**: The project environment to retrieve secrets from.
+ - **Secret Path**: The folder path to retrieve secrets from.
+
+
+ If you need to sync secrets from multiple folder locations, check out [secret imports](/documentation/platform/secret-reference#secret-imports).
+
+
+ 4. Configure the **Destination** to where secrets should be deployed, then click **Next**.
+ 
+
+ - **Cloudflare Connection**: The Cloudflare Connection to authenticate with.
+ - **Cloudflare Workers Script**: Choose the Cloudflare Workers script you want to sync secrets to.
+
+ 5. Configure the **Sync Options** to specify how secrets should be synced, then click **Next**.
+ 
+
+ - **Initial Sync Behavior**: Determines how Infisical should resolve the initial sync.
+ - **Overwrite Destination Secrets**: Removes any secrets at the destination endpoint not present in Infisical.
+ - **Key Schema**: Template that determines how secret names are transformed when syncing, using `{{secretKey}}` as a placeholder for the original secret name and `{{environment}}` for the environment.
+ - **Auto-Sync Enabled**: If enabled, secrets will automatically be synced from the source location when changes occur. Disable to enforce manual syncing only.
+ - **Disable Secret Deletion**: If enabled, Infisical will not remove secrets from the sync destination. Enable this option if you intend to manage some secrets manually outside of Infisical.
+
+ 6. Configure the **Details** of your Cloudflare Workers Sync, then click **Next**.
+ 
+
+ - **Name**: The name of your sync. Must be slug-friendly.
+ - **Description**: An optional description for your sync.
+
+ 7. Review your Cloudflare Workers Sync configuration, then click **Create Sync**.
+ 
+
+ 8. If enabled, your Cloudflare Workers Sync will begin syncing your secrets to the destination endpoint.
+ 
+
+
+
+ To create a **Cloudflare Workers Sync**, make an API request to the [Create Cloudflare Workers Sync](/api-reference/endpoints/secret-syncs/cloudflare-workers/create) API endpoint.
+
+ ### Sample request
+
+ ```bash Request
+ curl --request POST \
+ --url https://app.infisical.com/api/v1/secret-syncs/cloudflare-workers \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "name": "my-cloudflare-workers-sync",
+ "projectId": "your-project-id",
+ "description": "an example sync",
+ "connectionId": "your-cloudflare-connection-id",
+ "environment": "production",
+ "secretPath": "/my-secrets",
+ "isEnabled": true,
+ "syncOptions": {
+ "initialSyncBehavior": "overwrite-destination"
+ },
+ "destinationConfig": {
+ "projectId": "your-cloudflare-workers-project-id",
+ "scriptId": "my-workers-project"
+ }
+ }'
+ ```
+
+ ### Sample response
+
+ ```bash Response
+ {
+ "secretSync": {
+ "id": "your-sync-id",
+ "name": "my-cloudflare-workers-sync",
+ "description": "an example sync",
+ "isEnabled": true,
+ "version": 1,
+ "folderId": "your-folder-id",
+ "connectionId": "your-cloudflare-connection-id",
+ "createdAt": "2024-05-01T12:00:00Z",
+ "updatedAt": "2024-05-01T12:00:00Z",
+ "syncStatus": "succeeded",
+ "lastSyncJobId": "123",
+ "lastSyncMessage": null,
+ "lastSyncedAt": "2024-05-01T12:00:00Z",
+ "syncOptions": {
+ "initialSyncBehavior": "overwrite-destination"
+ },
+ "projectId": "your-project-id",
+ "connection": {
+ "app": "cloudflare",
+ "name": "my-cloudflare-connection",
+ "id": "your-cloudflare-connection-id"
+ },
+ "environment": {
+ "slug": "production",
+ "name": "Production",
+ "id": "your-env-id"
+ },
+ "folder": {
+ "id": "your-folder-id",
+ "path": "/my-secrets"
+ },
+ "destination": "cloudflare-workers",
+ "destinationConfig": {
+ "projectId": "your-cloudflare-workers-project-id",
+ "scriptId": "my-workers-project"
+ }
+ }
+ }
+ ```
+
+
+