docs + tweaks
@@ -38,7 +38,7 @@
|
|||||||
"build:frontend": "npm run build --prefix ../frontend",
|
"build:frontend": "npm run build --prefix ../frontend",
|
||||||
"start": "node --enable-source-maps dist/main.mjs",
|
"start": "node --enable-source-maps dist/main.mjs",
|
||||||
"type:check": "tsc --noEmit",
|
"type:check": "tsc --noEmit",
|
||||||
"lint:fix": "node --max-old-space-size=8192 ./node_modules/.bin/eslint --fix --ext js,ts ./src",
|
"lint:fix": "eslint --fix --ext js,ts ./src",
|
||||||
"lint": "eslint 'src/**/*.ts'",
|
"lint": "eslint 'src/**/*.ts'",
|
||||||
"test:unit": "vitest run -c vitest.unit.config.ts",
|
"test:unit": "vitest run -c vitest.unit.config.ts",
|
||||||
"test:e2e": "vitest run -c vitest.e2e.config.ts --bail=1",
|
"test:e2e": "vitest run -c vitest.e2e.config.ts --bail=1",
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ export const listOCICompartments = async (appConnection: TOCIConnection) => {
|
|||||||
const compartments = await identityClient.listCompartments({
|
const compartments = await identityClient.listCompartments({
|
||||||
compartmentId: appConnection.credentials.tenancyOcid,
|
compartmentId: appConnection.credentials.tenancyOcid,
|
||||||
compartmentIdInSubtree: true,
|
compartmentIdInSubtree: true,
|
||||||
accessLevel: identity.requests.ListCompartmentsRequest.AccessLevel.Any
|
accessLevel: identity.requests.ListCompartmentsRequest.AccessLevel.Any,
|
||||||
|
lifecycleState: identity.models.Compartment.LifecycleState.Active
|
||||||
});
|
});
|
||||||
|
|
||||||
return [rootCompartment, ...compartments.items];
|
return [rootCompartment, ...compartments.items];
|
||||||
@@ -90,7 +91,7 @@ export const listOCIVaults = async (appConnection: TOCIConnection, compartmentOc
|
|||||||
compartmentId: compartmentOcid
|
compartmentId: compartmentOcid
|
||||||
});
|
});
|
||||||
|
|
||||||
return vaults.items;
|
return vaults.items.filter((v) => v.lifecycleState === keymanagement.models.Vault.LifecycleState.Active);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const listOCIVaultKeys = async (appConnection: TOCIConnection, compartmentOcid: string, vaultOcid: string) => {
|
export const listOCIVaultKeys = async (appConnection: TOCIConnection, compartmentOcid: string, vaultOcid: string) => {
|
||||||
@@ -113,5 +114,5 @@ export const listOCIVaultKeys = async (appConnection: TOCIConnection, compartmen
|
|||||||
compartmentId: compartmentOcid
|
compartmentId: compartmentOcid
|
||||||
});
|
});
|
||||||
|
|
||||||
return keys.items;
|
return keys.items.filter((v) => v.lifecycleState === keymanagement.models.KeySummary.LifecycleState.Enabled);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Available"
|
||||||
|
openapi: "GET /api/v1/app-connections/oci/available"
|
||||||
|
---
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: "Create"
|
||||||
|
openapi: "POST /api/v1/app-connections/oci"
|
||||||
|
---
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
Check out the configuration docs for [OCI Connections](/integrations/app-connections/oci) to learn how to obtain the required credentials.
|
||||||
|
</Note>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Delete"
|
||||||
|
openapi: "DELETE /api/v1/app-connections/oci/{connectionId}"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Get by ID"
|
||||||
|
openapi: "GET /api/v1/app-connections/oci/{connectionId}"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Get by Name"
|
||||||
|
openapi: "GET /api/v1/app-connections/oci/connection-name/{connectionName}"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "List"
|
||||||
|
openapi: "GET /api/v1/app-connections/oci"
|
||||||
|
---
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: "Update"
|
||||||
|
openapi: "PATCH /api/v1/app-connections/oci/{connectionId}"
|
||||||
|
---
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
Check out the configuration docs for [OCI Connections](/integrations/app-connections/oci) to learn how to obtain the required credentials.
|
||||||
|
</Note>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Create"
|
||||||
|
openapi: "POST /api/v1/secret-syncs/oci-vault"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Delete"
|
||||||
|
openapi: "DELETE /api/v1/secret-syncs/oci-vault/{syncId}"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Get by ID"
|
||||||
|
openapi: "GET /api/v1/secret-syncs/oci-vault/{syncId}"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Get by Name"
|
||||||
|
openapi: "GET /api/v1/secret-syncs/oci-vault/sync-name/{syncName}"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Import Secrets"
|
||||||
|
openapi: "POST /api/v1/secret-syncs/oci-vault/{syncId}/import-secrets"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "List"
|
||||||
|
openapi: "GET /api/v1/secret-syncs/oci-vault"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Remove Secrets"
|
||||||
|
openapi: "POST /api/v1/secret-syncs/oci-vault/{syncId}/remove-secrets"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Sync Secrets"
|
||||||
|
openapi: "POST /api/v1/secret-syncs/oci-vault/{syncId}/sync-secrets"
|
||||||
|
---
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
title: "Update"
|
||||||
|
openapi: "PATCH /api/v1/secret-syncs/oci-vault/{syncId}"
|
||||||
|
---
|
||||||
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 952 KiB |
|
After Width: | Height: | Size: 738 KiB |
|
After Width: | Height: | Size: 765 KiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 299 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 715 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 682 KiB |
|
After Width: | Height: | Size: 654 KiB |
|
After Width: | Height: | Size: 643 KiB |
|
After Width: | Height: | Size: 670 KiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 739 KiB |
|
After Width: | Height: | Size: 683 KiB |
|
After Width: | Height: | Size: 653 KiB |
|
After Width: | Height: | Size: 639 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
@@ -0,0 +1,189 @@
|
|||||||
|
---
|
||||||
|
title: "OCI Connection"
|
||||||
|
description: "Learn how to configure an Oracle Cloud Infrastructure Connection for Infisical."
|
||||||
|
---
|
||||||
|
|
||||||
|
Infisical supports the use of [API Signing Key Authentication](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm) to connect with OCI.
|
||||||
|
|
||||||
|
## Create OCI User
|
||||||
|
|
||||||
|
<Steps>
|
||||||
|
<Step title="Search for 'Domains' and click as shown">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Select domain">
|
||||||
|
Select the domain in which you want to create the Infisical user account.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Navigate to 'Users'">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Click 'Create user'">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Create user">
|
||||||
|
The name, email, and username can be anything.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Navigate to 'API keys'">
|
||||||
|
After you've created a user, you'll be redirected to the user's page. Navigate to 'API keys'.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Add API key">
|
||||||
|
Click on 'Add API key' and then download or import the private key. After you've obtained the private key, click 'Add'.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Store configuration">
|
||||||
|
After creating the API key, you'll be shown a modal with relevant information. Save the highlighted values (and the private key) for later steps.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
## Create OCI Group
|
||||||
|
|
||||||
|
<Steps>
|
||||||
|
<Step title="Search for 'Domains' and click as shown">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Select domain">
|
||||||
|
Select the domain in which you want to create the Infisical user account.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Navigate to 'Groups'">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Create group">
|
||||||
|
The name and description can be anything. **Ensure that you assing the user created in earlier steps to this group**.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Store group name">
|
||||||
|
After creating the group, take note of it's name. It will be used in later steps.
|
||||||
|
</Step>
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
## Create OCI Policy
|
||||||
|
|
||||||
|
<Steps>
|
||||||
|
<Step title="Search for 'Policies' and click as shown">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Click 'Create Policy'">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Create policy">
|
||||||
|
The name and description can be anything. Click 'Show manual editor' and paste in the policy rules relevant to your task:
|
||||||
|
|
||||||
|
<Tabs>
|
||||||
|
<Tab title="Secret Sync">
|
||||||
|
```
|
||||||
|
Allow group <group name> to manage secret-family in compartment <compartment name>
|
||||||
|
Allow group <group name> to use keys in compartment <compartment name>
|
||||||
|
Allow group <group name> to use vaults in compartment <compartment name>
|
||||||
|
Allow group <group name> to inspect compartments in tenancy
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Group Name:** The name of the group you created in earlier steps.
|
||||||
|
- **Compartment Name:** The name of the compartment which has your secrets vault.
|
||||||
|
|
||||||
|
If you'd like to grant Infisical access to all compartments, replace instances of `compartment <compartment name>` with `tenancy`.
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
<Note>
|
||||||
|
**You must create this policy on the root compartment**, otherwise some functionality may not work.
|
||||||
|
</Note>
|
||||||
|
</Step>
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
## Create OCI Connection in Infisical
|
||||||
|
|
||||||
|
<Tabs>
|
||||||
|
<Tab title="Infisical UI">
|
||||||
|
<Steps>
|
||||||
|
<Step title="Navigate to App Connections">
|
||||||
|
In your Infisical dashboard, go to **Organization Settings** and select the [**App Connections**](https://app.infisical.com/organization/app-connections) tab.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Select OCI Connection">
|
||||||
|
Click the **+ Add Connection** button and select the **OCI Connection** option from the available integrations.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Fill out the OCI Connection Modal">
|
||||||
|
Complete the OCI Connection form by entering:
|
||||||
|
- A descriptive name for the connection
|
||||||
|
- An optional description for future reference
|
||||||
|
- The User OCID from [earlier steps](https://infisical.com/docs/integrations/app-connections/oci#create-oci-user)
|
||||||
|
- The Tenancy OCID from [earlier steps](https://infisical.com/docs/integrations/app-connections/oci#create-oci-user)
|
||||||
|
- The Region from [earlier steps](https://infisical.com/docs/integrations/app-connections/oci#create-oci-user)
|
||||||
|
- The Fingerprint from [earlier steps](https://infisical.com/docs/integrations/app-connections/oci#create-oci-user)
|
||||||
|
- The Private Key PEM from [earlier steps](https://infisical.com/docs/integrations/app-connections/oci#create-oci-user)
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Connection Created">
|
||||||
|
After clicking Create, your **OCI Connection** is established and ready to use with your Infisical projects.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
</Steps>
|
||||||
|
</Tab>
|
||||||
|
<Tab title="API">
|
||||||
|
To create an OCI Connection, make an API request to the [Create OCI Connection](/api-reference/endpoints/app-connections/oci/create) API endpoint.
|
||||||
|
|
||||||
|
### Sample request
|
||||||
|
|
||||||
|
```bash Request
|
||||||
|
curl --request POST \
|
||||||
|
--url https://app.infisical.com/api/v1/app-connections/oci \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--data '{
|
||||||
|
"name": "my-oci-connection",
|
||||||
|
"method": "access-key",
|
||||||
|
"credentials": {
|
||||||
|
"userOcid": "ocid1.user.oc1..aaaaaaaagrp35tbkvvad4y2j7sug7xonua7dl2gfp4at2u5i5xj4ghnitg3a",
|
||||||
|
"tenancyOcid": "ocid1.tenancy.oc1..aaaaaaaaotfma465m4zumfe2ua64mj2m5dwmlw2llh4g4dnfttnakiifonta",
|
||||||
|
"region": "us-ashburn-1",
|
||||||
|
"fingerprint": "9c:f6:18:23:92:73:f8:e1:85:2c:6a:e3:2c:7d:ec:8f",
|
||||||
|
"privateKey": "[PRIVATE KEY PEM]"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sample response
|
||||||
|
|
||||||
|
```bash Response
|
||||||
|
{
|
||||||
|
"appConnection": {
|
||||||
|
"id": "e5d18aca-86f7-4026-a95e-efb8aeb0d8e6",
|
||||||
|
"name": "my-oci-connection",
|
||||||
|
"description": null,
|
||||||
|
"version": 1,
|
||||||
|
"orgId": "6f03caa1-a5de-43ce-b127-95a145d3464c",
|
||||||
|
"createdAt": "2025-04-23T19:46:34.831Z",
|
||||||
|
"updatedAt": "2025-04-23T19:46:34.831Z",
|
||||||
|
"isPlatformManagedCredentials": false,
|
||||||
|
"credentialsHash": "7c2d371dec195f82a6a0d5b41c970a229cfcaf88e894a5b6395e2dbd0280661f",
|
||||||
|
"app": "oci",
|
||||||
|
"method": "access-token",
|
||||||
|
"credentials": {
|
||||||
|
"userOcid": "ocid1.user.oc1..aaaaaaaagrp35tbkvvad4y2j7sug7xonua7dl2gfp4at2u5i5xj4ghnitg3a",
|
||||||
|
"tenancyOcid": "ocid1.tenancy.oc1..aaaaaaaaotfma465m4zumfe2ua64mj2m5dwmlw2llh4g4dnfttnakiifonta",
|
||||||
|
"region": "us-ashburn-1",
|
||||||
|
"fingerprint": "9c:f6:18:23:92:73:f8:e1:85:2c:6a:e3:2c:7d:ec:8f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
---
|
||||||
|
title: "OCI Vault Sync"
|
||||||
|
description: "Learn how to configure an Oracle Cloud Infrastructure Vault Sync for Infisical."
|
||||||
|
---
|
||||||
|
|
||||||
|
**Prerequisites:**
|
||||||
|
- Create an [OCI Connection](/integrations/app-connections/oci) with the required **Secret Sync** permissions
|
||||||
|
- [Create](https://docs.oracle.com/en-us/iaas/Content/Identity/compartments/To_create_a_compartment.htm) or use an existing OCI Compartment (which the OCI Connection is authorized to access)
|
||||||
|
- [Create](https://docs.oracle.com/en-us/iaas/Content/KeyManagement/Tasks/managingvaults_topic-To_create_a_new_vault.htm#createnewvault) or use an existing OCI Vault
|
||||||
|
|
||||||
|
<Tabs>
|
||||||
|
<Tab title="Infisical UI">
|
||||||
|
<Steps>
|
||||||
|
<Step title="Add Sync">
|
||||||
|
Navigate to **Project** > **Integrations** and select the **Secret Syncs** tab. Click on the **Add Sync** button.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Select 'OCI Vault'">
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Configure source">
|
||||||
|
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.
|
||||||
|
|
||||||
|
<Tip>
|
||||||
|
If you need to sync secrets from multiple folder locations, check out [secret imports](/documentation/platform/secret-reference#secret-imports).
|
||||||
|
</Tip>
|
||||||
|
</Step>
|
||||||
|
<Step title="Configure destination">
|
||||||
|
Configure the **Destination** to where secrets should be deployed, then click **Next**.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- **OCI Connection**: The OCI Connection to authenticate with.
|
||||||
|
- **Compartment**: The compartment where the vault is located.
|
||||||
|
- **Vault**: The vault to sync secrets to.
|
||||||
|
- **Encryption Key**: The encryption key to use when creating secrets in the vault.
|
||||||
|
</Step>
|
||||||
|
<Step title="Configure sync options">
|
||||||
|
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.
|
||||||
|
- **Import Secrets (Prioritize Infisical)**: Imports secrets from the destination endpoint before syncing, prioritizing values from Infisical over OCI Vault when keys conflict.
|
||||||
|
- **Import Secrets (Prioritize OCI Vault)**: Imports secrets from the destination endpoint before syncing, prioritizing values from OCI Vault over Infisical when keys conflict.
|
||||||
|
|
||||||
|
- **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.
|
||||||
|
</Step>
|
||||||
|
<Step title="Configure details">
|
||||||
|
Configure the **Details** of your OCI Vault Sync, then click **Next**.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
- **Name**: The name of your sync. Must be slug-friendly.
|
||||||
|
- **Description**: An optional description for your sync.
|
||||||
|
</Step>
|
||||||
|
<Step title="Review configuration">
|
||||||
|
Review your OCI Vault Sync configuration, then click **Create Sync**.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Sync created">
|
||||||
|
If enabled, your OCI Vault Sync will begin syncing your secrets to the destination endpoint.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
</Steps>
|
||||||
|
</Tab>
|
||||||
|
<Tab title="API">
|
||||||
|
To create an **OCI Vault Sync**, make an API request to the [Create OCI Vault Sync](/api-reference/endpoints/secret-syncs/oci-vault/create) API endpoint.
|
||||||
|
|
||||||
|
### Sample request
|
||||||
|
|
||||||
|
```bash Request
|
||||||
|
curl --request POST \
|
||||||
|
--url https://app.infisical.com/api/v1/secret-syncs/oci-vault \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--data '{
|
||||||
|
"name": "my-oci-vault-sync",
|
||||||
|
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"description": "an example sync",
|
||||||
|
"connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"environment": "dev",
|
||||||
|
"secretPath": "/my-secrets",
|
||||||
|
"isEnabled": true,
|
||||||
|
"syncOptions": {
|
||||||
|
"initialSyncBehavior": "overwrite-destination"
|
||||||
|
},
|
||||||
|
"destinationConfig": {
|
||||||
|
"compartmentOcid": "...",
|
||||||
|
"vaultOcid": "...",
|
||||||
|
"keyOcid": "..."
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sample response
|
||||||
|
|
||||||
|
```bash Response
|
||||||
|
{
|
||||||
|
"secretSync": {
|
||||||
|
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"name": "my-oci-vault-sync",
|
||||||
|
"description": "an example sync",
|
||||||
|
"isEnabled": true,
|
||||||
|
"version": 1,
|
||||||
|
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"createdAt": "2023-11-07T05:31:56Z",
|
||||||
|
"updatedAt": "2023-11-07T05:31:56Z",
|
||||||
|
"syncStatus": "succeeded",
|
||||||
|
"lastSyncJobId": "123",
|
||||||
|
"lastSyncMessage": null,
|
||||||
|
"lastSyncedAt": "2023-11-07T05:31:56Z",
|
||||||
|
"importStatus": null,
|
||||||
|
"lastImportJobId": null,
|
||||||
|
"lastImportMessage": null,
|
||||||
|
"lastImportedAt": null,
|
||||||
|
"removeStatus": null,
|
||||||
|
"lastRemoveJobId": null,
|
||||||
|
"lastRemoveMessage": null,
|
||||||
|
"lastRemovedAt": null,
|
||||||
|
"syncOptions": {
|
||||||
|
"initialSyncBehavior": "overwrite-destination"
|
||||||
|
},
|
||||||
|
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"connection": {
|
||||||
|
"app": "oci",
|
||||||
|
"name": "my-oci-connection",
|
||||||
|
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
|
||||||
|
},
|
||||||
|
"environment": {
|
||||||
|
"slug": "dev",
|
||||||
|
"name": "Development",
|
||||||
|
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
|
||||||
|
},
|
||||||
|
"folder": {
|
||||||
|
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
|
||||||
|
"path": "/my-secrets"
|
||||||
|
},
|
||||||
|
"destination": "oci-vault",
|
||||||
|
"destinationConfig": {
|
||||||
|
"compartmentOcid": "...",
|
||||||
|
"vaultOcid": "...",
|
||||||
|
"keyOcid": "..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
@@ -448,6 +448,7 @@
|
|||||||
"integrations/app-connections/humanitec",
|
"integrations/app-connections/humanitec",
|
||||||
"integrations/app-connections/ldap",
|
"integrations/app-connections/ldap",
|
||||||
"integrations/app-connections/mssql",
|
"integrations/app-connections/mssql",
|
||||||
|
"integrations/app-connections/oci",
|
||||||
"integrations/app-connections/postgres",
|
"integrations/app-connections/postgres",
|
||||||
"integrations/app-connections/teamcity",
|
"integrations/app-connections/teamcity",
|
||||||
"integrations/app-connections/terraform-cloud",
|
"integrations/app-connections/terraform-cloud",
|
||||||
@@ -474,6 +475,7 @@
|
|||||||
"integrations/secret-syncs/github",
|
"integrations/secret-syncs/github",
|
||||||
"integrations/secret-syncs/hashicorp-vault",
|
"integrations/secret-syncs/hashicorp-vault",
|
||||||
"integrations/secret-syncs/humanitec",
|
"integrations/secret-syncs/humanitec",
|
||||||
|
"integrations/secret-syncs/oci-vault",
|
||||||
"integrations/secret-syncs/teamcity",
|
"integrations/secret-syncs/teamcity",
|
||||||
"integrations/secret-syncs/terraform-cloud",
|
"integrations/secret-syncs/terraform-cloud",
|
||||||
"integrations/secret-syncs/vercel",
|
"integrations/secret-syncs/vercel",
|
||||||
@@ -1140,6 +1142,18 @@
|
|||||||
"api-reference/endpoints/app-connections/mssql/delete"
|
"api-reference/endpoints/app-connections/mssql/delete"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"group": "OCI",
|
||||||
|
"pages": [
|
||||||
|
"api-reference/endpoints/app-connections/oci/list",
|
||||||
|
"api-reference/endpoints/app-connections/oci/available",
|
||||||
|
"api-reference/endpoints/app-connections/oci/get-by-id",
|
||||||
|
"api-reference/endpoints/app-connections/oci/get-by-name",
|
||||||
|
"api-reference/endpoints/app-connections/oci/create",
|
||||||
|
"api-reference/endpoints/app-connections/oci/update",
|
||||||
|
"api-reference/endpoints/app-connections/oci/delete"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"group": "PostgreSQL",
|
"group": "PostgreSQL",
|
||||||
"pages": [
|
"pages": [
|
||||||
@@ -1343,6 +1357,20 @@
|
|||||||
"api-reference/endpoints/secret-syncs/humanitec/remove-secrets"
|
"api-reference/endpoints/secret-syncs/humanitec/remove-secrets"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"group": "OCI",
|
||||||
|
"pages": [
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/list",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/get-by-id",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/get-by-name",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/create",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/update",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/delete",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/sync-secrets",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/import-secrets",
|
||||||
|
"api-reference/endpoints/secret-syncs/oci-vault/remove-secrets"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"group": "TeamCity",
|
"group": "TeamCity",
|
||||||
"pages": [
|
"pages": [
|
||||||
|
|||||||
@@ -126,7 +126,6 @@ export const OCIVaultSyncFields = () => {
|
|||||||
setValue("destinationConfig.keyOcid", "");
|
setValue("destinationConfig.keyOcid", "");
|
||||||
}}
|
}}
|
||||||
options={vaults}
|
options={vaults}
|
||||||
isClearable
|
|
||||||
placeholder="Select a vault..."
|
placeholder="Select a vault..."
|
||||||
getOptionLabel={(option) => option.displayName}
|
getOptionLabel={(option) => option.displayName}
|
||||||
getOptionValue={(option) => option.id}
|
getOptionValue={(option) => option.id}
|
||||||
@@ -166,7 +165,6 @@ export const OCIVaultSyncFields = () => {
|
|||||||
onChange((option as SingleValue<{ id: string }>)?.id ?? null);
|
onChange((option as SingleValue<{ id: string }>)?.id ?? null);
|
||||||
}}
|
}}
|
||||||
options={keys}
|
options={keys}
|
||||||
isClearable
|
|
||||||
placeholder="Select a key..."
|
placeholder="Select a key..."
|
||||||
getOptionLabel={(option) => option.displayName}
|
getOptionLabel={(option) => option.displayName}
|
||||||
getOptionValue={(option) => option.id}
|
getOptionValue={(option) => option.id}
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ export const getSecretSyncDestinationColValues = (secretSync: TSecretSync) => {
|
|||||||
secondaryText = destinationConfig.buildConfig;
|
secondaryText = destinationConfig.buildConfig;
|
||||||
break;
|
break;
|
||||||
case SecretSync.OCIVault:
|
case SecretSync.OCIVault:
|
||||||
// TODO(andrey): Truncating these may make them look better
|
|
||||||
primaryText = destinationConfig.compartmentOcid;
|
primaryText = destinationConfig.compartmentOcid;
|
||||||
secondaryText = destinationConfig.vaultOcid;
|
secondaryText = destinationConfig.vaultOcid;
|
||||||
break;
|
break;
|
||||||
|
|||||||