diff --git a/backend/src/ee/services/secret-scanning-v2/bitbucket/bitbucket-secret-scanning-factory.ts b/backend/src/ee/services/secret-scanning-v2/bitbucket/bitbucket-secret-scanning-factory.ts
index e624c7d5d..f51c75daa 100644
--- a/backend/src/ee/services/secret-scanning-v2/bitbucket/bitbucket-secret-scanning-factory.ts
+++ b/backend/src/ee/services/secret-scanning-v2/bitbucket/bitbucket-secret-scanning-factory.ts
@@ -149,9 +149,9 @@ export const BitbucketSecretScanningFactory = () => {
filteredRepos.push(...repos.filter((repo) => includeRepos.includes(repo.full_name)));
}
- return filteredRepos.map(({ full_name }) => ({
+ return filteredRepos.map(({ full_name, uuid }) => ({
name: full_name,
- externalId: full_name,
+ externalId: uuid,
type: SecretScanningResource.Repository
}));
};
@@ -188,7 +188,7 @@ export const BitbucketSecretScanningFactory = () => {
> = ({ repository }) => {
return {
name: repository.full_name,
- externalId: repository.full_name,
+ externalId: repository.uuid,
type: SecretScanningResource.Repository
};
};
diff --git a/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-union-schemas.ts b/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-union-schemas.ts
index bfac2b531..671d4e16b 100644
--- a/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-union-schemas.ts
+++ b/backend/src/ee/services/secret-scanning-v2/secret-scanning-v2-union-schemas.ts
@@ -9,6 +9,14 @@ export const SecretScanningDataSourceSchema = z.discriminatedUnion("type", [
]);
export const SecretScanningFindingSchema = z.discriminatedUnion("dataSourceType", [
- GitHubFindingSchema,
- BitbucketFindingSchema
+ GitHubFindingSchema.describe(
+ JSON.stringify({
+ title: "GitHub"
+ })
+ ),
+ BitbucketFindingSchema.describe(
+ JSON.stringify({
+ title: "Bitbucket"
+ })
+ )
]);
diff --git a/backend/src/server/plugins/secret-scanner-v2.ts b/backend/src/server/plugins/secret-scanner-v2.ts
index ad631b683..63a7f97ce 100644
--- a/backend/src/server/plugins/secret-scanner-v2.ts
+++ b/backend/src/server/plugins/secret-scanner-v2.ts
@@ -1,6 +1,5 @@
import type { EmitterWebhookEventName } from "@octokit/webhooks/dist-types/types";
import { PushEvent } from "@octokit/webhooks-types";
-import crypto from "crypto";
import { Probot } from "probot";
import { z } from "zod";
diff --git a/backend/src/server/routes/v1/app-connection-routers/bitbucket-connection-router.ts b/backend/src/server/routes/v1/app-connection-routers/bitbucket-connection-router.ts
index 3f9ca9059..7fe5113e5 100644
--- a/backend/src/server/routes/v1/app-connection-routers/bitbucket-connection-router.ts
+++ b/backend/src/server/routes/v1/app-connection-routers/bitbucket-connection-router.ts
@@ -66,7 +66,7 @@ export const registerBitbucketConnectionRouter = async (server: FastifyZodProvid
}),
response: {
200: z.object({
- repositories: z.object({ slug: z.string(), full_name: z.string() }).array()
+ repositories: z.object({ slug: z.string(), full_name: z.string(), uuid: z.string() }).array()
})
}
},
diff --git a/backend/src/services/app-connection/bitbucket/bitbucket-connection-types.ts b/backend/src/services/app-connection/bitbucket/bitbucket-connection-types.ts
index 53e93b479..b0694c6e3 100644
--- a/backend/src/services/app-connection/bitbucket/bitbucket-connection-types.ts
+++ b/backend/src/services/app-connection/bitbucket/bitbucket-connection-types.ts
@@ -34,6 +34,7 @@ export type TBitbucketWorkspace = {
};
export type TBitbucketRepo = {
+ uuid: string;
full_name: string; // workspace-slug/repo-slug
slug: string;
};
diff --git a/docs/documentation/platform/secret-scanning/bitbucket.mdx b/docs/documentation/platform/secret-scanning/bitbucket.mdx
index 397ee6017..c5feb5b06 100644
--- a/docs/documentation/platform/secret-scanning/bitbucket.mdx
+++ b/docs/documentation/platform/secret-scanning/bitbucket.mdx
@@ -6,7 +6,7 @@ description: "Learn how to configure secret scanning for Bitbucket."
## Prerequisites
-- Create a [Bitbucket Connection](/integrations/app-connections/bitbucket)
+- Create a [Bitbucket Connection](/integrations/app-connections/bitbucket) with Secret Scanning permissions
## Create a Bitbucket Data Source in Infisical
@@ -17,6 +17,8 @@ description: "Learn how to configure secret scanning for Bitbucket."
2. Select the **Bitbucket** option.
+ 
+
3. Configure which workspace and repositories you would like to scan. Then click **Next**.

diff --git a/docs/images/app-connections/bitbucket/step-4.png b/docs/images/app-connections/bitbucket/step-4.png
index 95b4095d8..e69de29bb 100644
Binary files a/docs/images/app-connections/bitbucket/step-4.png and b/docs/images/app-connections/bitbucket/step-4.png differ
diff --git a/docs/images/platform/secret-scanning/bitbucket/step-2.png b/docs/images/platform/secret-scanning/bitbucket/step-2.png
new file mode 100644
index 000000000..0d10951a4
Binary files /dev/null and b/docs/images/platform/secret-scanning/bitbucket/step-2.png differ
diff --git a/docs/integrations/app-connections/bitbucket.mdx b/docs/integrations/app-connections/bitbucket.mdx
index 0af1a23b6..6c09505af 100644
--- a/docs/integrations/app-connections/bitbucket.mdx
+++ b/docs/integrations/app-connections/bitbucket.mdx
@@ -5,21 +5,29 @@ description: "Learn how to configure a Bitbucket Connection for Infisical."
Infisical supports the use of [API Tokens](https://support.atlassian.com/bitbucket-cloud/docs/api-tokens/) to connect with Bitbucket.
+
+ Infisical recommends creating a dedicated Bitbucket account with access restricted to only the repositories you want to scan.
+
+
## Create Bitbucket Access Token
- Go to [Account API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens) and click 'Create API token with scopes'.
+ Go to [Account API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens) and click **Create API token with scopes**.

- Set the name and expiration date of the token, then click 'Next'. Keep in mind that you'll need to manually replace the token after it expires.
+ Set the name and expiration date of the token, then click **Next**.

+
+
+ Keep in mind that you'll need to manually replace the token after it expires.
+
- Select 'Bitbucket' and then click 'Next'.
+ Select 'Bitbucket' and then click **Next**.

@@ -36,12 +44,13 @@ Infisical supports the use of [API Tokens](https://support.atlassian.com/bitbuck
delete:webhook:bitbucket
read:repository:bitbucket
```
+
+ 
Click 'Next'.
- 
Save the API Token for later steps.
@@ -61,7 +70,7 @@ Infisical supports the use of [API Tokens](https://support.atlassian.com/bitbuck

- Click the 'Add new connection' button and select 'Bitbucket' from the list of available connections.
+ Click the **Add new connection** button and select 'Bitbucket' from the list of available connections.
Complete the Bitbucket Connection form by entering:
diff --git a/frontend/src/hooks/api/appConnections/bitbucket/types.ts b/frontend/src/hooks/api/appConnections/bitbucket/types.ts
index 5d00e4e81..e7e653a93 100644
--- a/frontend/src/hooks/api/appConnections/bitbucket/types.ts
+++ b/frontend/src/hooks/api/appConnections/bitbucket/types.ts
@@ -3,6 +3,7 @@ export type TBitbucketWorkspace = {
};
export type TBitbucketRepo = {
+ uuid: string;
slug: string;
full_name: string; // workspace-slug/repo-slug
};
diff --git a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesTable.tsx b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesTable.tsx
index f07e229a9..2e6698a48 100644
--- a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesTable.tsx
+++ b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourcesTable.tsx
@@ -294,7 +294,7 @@ export const SecretScanningDataSourcesTable = ({ dataSources }: Props) => {
- | Platform |
+ Platform |
Name
|