diff --git a/README.md b/README.md index b2acb39..982b8bb 100644 --- a/README.md +++ b/README.md @@ -1,482 +1,45 @@ -# Infisical Java SDK - -The Infisical SDK provides a convenient way to interact with the Infisical API. - -## Installation - -Replace `{version}` with the version of the SDK you wish to use. This documentation covers version >=3.0.0. - -### Maven - -```xml - - com.infisical - sdk - {version} - -``` - -### Gradle -```gradle - implementation group: 'com.infisical', name: 'sdk', version: '{version}' -``` - - -### Others -For other build tools, please check our [package snippets](https://central.sonatype.com/artifact/com.infisical/sdk), and select the build tool you're using for your project. - - - -## Getting Started - -```java -package com.example.example; - -import com.infisical.sdk.InfisicalSdk; - -public class Example { - - public static void main(String[] args) { - var sdk = new InfisicalSdk( - new SdkConfig.Builder() - // Optional, will default to https://app.infisical.com - .withSiteUrl("https://your-infisical-instance.com") - .build() - ); - - sdk.Auth().UniversalAuthLogin( - "CLIENT_ID", - "CLIENT_SECRET" - ); - - var secret = sdk.Secrets().GetSecret( - "", - "", - "", - "", - null, // Expand Secret References (boolean, optional) - null, // Include Imports (boolean, optional) - null // Secret Type (shared/personal, defaults to shared, optional) - ); - - - System.out.println(secret); - } -} -``` - -## Core Methods - -The SDK methods are organized into the following high-level categories: - -1. `Auth()`: Handles authentication methods. -2. `Secrets()`: Manages CRUD operations for secrets. - -### `Auth` - -The `Auth` component provides methods for authentication: - -### Universal Auth - -#### Authenticating - -```java -public void UniversalAuthLogin( - String clientId, - String clientSecret -) -throws InfisicalException -``` - -```java -sdk.Auth().UniversalAuthLogin( - "CLIENT_ID", - "CLIENT_SECRET" -); -``` - - -**Parameters:** -- `clientId` (string): The client ID of your Machine Identity. -- `clientSecret` (string): The client secret of your Machine Identity. - -### LDAP Auth - -```java -public void LdapAuthLogin( - LdapAuthLoginInput input -) -throws InfisicalException -``` - -```java -var input = LdapAuthLoginInput - .builder() - .identityId("") - .username("") - .password("") - .build(); - -sdk.Auth().LdapAuthLogin(input); -``` - -**Parameters:** -- `input` (LdapAuthLoginInput): The input for authenticating with LDAP. - - `identityId` (String): The ID of the machine identity to authenticate with. - - `username` (String): The LDAP username. - - `password` (String): The LDAP password. - -### Access Token Auth - -#### Authenticating - -```java -public void SetAccessToken( - String accessToken -) -throws InfisicalException -``` - -```java -sdk.Auth().SetAccessToken("ACCESS_TOKEN"); -``` - -**Parameters:** -- `accessToken` (string): The access token you want to use for authentication. - -### `Secrets` - -This sub-class handles operations related to secrets: - -#### List Secrets - -```java -public List ListSecrets( - String projectId, - String environmentSlug, - String secretPath, - Boolean expandSecretReferences, - Boolean recursive, - Boolean includeImports, - Boolean setSecretsOnSystemProperties -) - -throws InfisicalException -``` - -```java -List secrets = await sdk.Secrets().ListSecrets( - "", - "", // dev, prod, staging, etc. - "/secret/path", // `/` is the root folder - false, // Should expand secret references - false, // Should get secrets recursively from sub folders - false, // Should include imports - false // Should set the fetched secrets as key/value pairs on the system properties. Makes the secrets accessible as System.getProperty("") -); -``` - -**Parameters:** -- `projectId` (string): The ID of your project. -- `environmentSlug` (string): The environment in which to list secrets (e.g., "dev"). -- `secretPath` (string): The path to the secrets. -- `expandSecretReferences` (boolean): Whether to expand secret references. -- `recursive` (boolean): Whether to list secrets recursively. -- `includeImports` (boolean): Whether to include imported secrets. -- `setSecretsOnSystemProperties` (boolean): Set the retrieved secrets as key/value pairs on the system properties, making them accessible through `System.getProperty("")` - -**Returns:** -- `List`: The response containing the list of secrets. - -#### Create Secret - - -```java -public Secret CreateSecret( - String secretName, - String secretValue, - String projectId, - String environmentSlug, - String secretPath -) -throws InfisicalException -``` - -```java -Secret newSecret = sdk.Secrets().CreateSecret( - "NEW_SECRET_NAME", - "secret-value", - "", - "", // dev, prod, staging, etc. - "/secret/path", // `/` is the root folder -); -``` - -**Parameters:** -- `secretName` (string): The name of the secret to create -- `secretValue` (string): The value of the secret. -- `projectId` (string): The ID of your project. -- `environmentSlug` (string): The environment in which to create the secret. -- `secretPath` (string, optional): The path to the secret. - -**Returns:** -- `Secret`: The created secret. - -#### Update Secret - -```java -public Secret UpdateSecret( - String secretName, - String projectId, - String environmentSlug, - String secretPath, - String newSecretValue, - String newSecretName - ) - -throws InfisicalException -``` - - -```java -Secret updatedSecret = sdk.Secrets().UpdateSecret( - "SECRET_NAME", - "", - "", // dev, prod, staging, etc. - "/secret/path", // `/` is the root folder - "NEW_SECRET_VALUE", // nullable - "NEW_SECRET_NAME" // nullable -); -``` - -**Parameters:** -- `secretName` (string): The name of the secret to update.` -- `projectId` (string): The ID of your project. -- `environmentSlug` (string): The environment in which to update the secret. -- `secretPath` (string): The path to the secret. -- `newSecretValue` (string, nullable): The new value of the secret. -- `newSecretName` (string, nullable): A new name for the secret. - -**Returns:** -- `Secret`: The updated secret. - -#### Get Secret by Name - -```java -public Secret GetSecret( - String secretName, - String projectId, - String environmentSlug, - String secretPath, - Boolean expandSecretReferences, - Boolean includeImports, - String secretType - ) -throws InfisicalException -``` - -```java -Secret secret = sdk.Secrets().GetSecret( - "SECRET_NAME", - "", - "", // dev, prod, staging, etc. - "/secret/path", // `/` is the root folder - false, // Should expand secret references - false, // Should get secrets recursively from sub folders - false, // Should include imports - "shared" // Optional Secret Type (defaults to "shared") -); -``` - -**Parameters:** -- `secretName` (string): The name of the secret to get` -- `projectId` (string): The ID of your project. -- `environmentSlug` (string): The environment in which to retrieve the secret. -- `secretPath` (string): The path to the secret. -- `expandSecretReferences` (boolean, optional): Whether to expand secret references. -- `includeImports` (boolean, optional): Whether to include imported secrets. -- `secretType` (personal | shared, optional): The type of secret to fetch. - - -**Returns:** -- `Secret`: The fetched secret. - -#### Delete Secret by Name - -```java -public Secret DeleteSecret( - String secretName, - String projectId, - String environmentSlug, - String secretPath - ) -throws InfisicalException -``` - -```java -Secret deletedSecret = sdk.Secrets().DeleteSecret( - "SECRET_NAME", - "", - "", // dev, prod, staging, etc. - "/secret/path", // `/` is the root folder -); -``` - -**Parameters:** -- `secretName` (string): The name of the secret to delete. -- `projectId` (string): The ID of your project. -- `environmentSlug` (string): The environment in which to delete the secret. -- `secretPath` (string, optional): The path to the secret. - -**Returns:** -- `Secret`: The deleted secret. - - -### `Folders` - -#### Get Folder By Name - -```java -public Folder Get( - String folderId -); -throws InfisicalException -``` - -```java -Folder folder = sdk.Folders().Get(""); -``` - -**Parameters:** -- `folderId` (String): The ID of the folder to retrieve. - -**Returns:** -- `Folder`: The retrieved folder. - -#### List Folders - -```java -public List List( - ListFoldersInput input -) -throws InfisicalException -``` - -```java -ListFoldersInput input = ListFoldersInput - .builder() - .projectId("") - .environmentSlug("") - .folderPath("/") - .recursive(false) - .build(); - -List folders = sdk.Folders().List(input); -``` - - -**Parameters:** -- `input` (ListFoldersInput): The input for listing folders. - - `projectId` (String): The ID of the project to list folders from. - - `environmentSlug` (String): The slug of the environment to list folders from. - - `folderPath` (String): The path to list folders from. Defaults to `/`. - - `recursive` (Boolean): Whether or not to list sub-folders recursively from the specified folder path and downwards. Defaults to `false`. - -**Returns:** -- `List`: The retrieved folders. - -#### Create Folder - -```java -public Folder Create( - CreateFolderInput input -) -throws InfisicalException -``` - -```java -var input = CreateFolderInput - .builder() - .projectId("") - .environmentSlug("") - .folderName("") - .folderPath("/") - .description("Optional folder description") - .build(); - -Folder createdFolder = sdk.Folders().Create(input); -``` - -**Parameters:** -- `input` (CreateFolderInput): The input for creating a folder. - - `projectId` (String): The ID of the project to create the folder in. - - `environmentSlug` (String): The slug of the environment to create the folder in. - - `folderPath` (String): The path to create the folder in. Defaults to `/`. - - `folderName` (String): The name of the folder to create. - - `description` (String): The description of the folder to create. This is optional. - -**Returns:** -- `Folder`: The created folder. - -#### Update Folder - -```java -public Folder Update( - UpdateFolderInput input -) -throws InfisicalException -``` - -```java -var input = UpdateFolderInput - .builder() - .projectId("") - .environmentSlug("") - .folderId("") - .newFolderName("") - .folderPath("/") - .build(); - -Folder updatedFolder = sdk.Folders().Update(input); -``` - -**Parameters:** -- `input` (UpdateFolderInput): The input for updating a folder. - - `projectId` (String): The ID of the project where the folder exists. - - `environmentSlug` (String): The slug of the environment where the folder exists. - - `folderPath` (String): The path of the folder to update. - - `folderId` (String): The ID of the folder to update. - - `newFolderName` (String): The new folder name. - -**Returns:** -- `Folder`: The updated folder. - -#### Delete Folder - -```java -public Folder Delete( - DeleteFolderInput input -) -throws InfisicalException -``` - -```java -var input = DeleteFolderInput - .builder() - .folderId("") - .environmentSlug("") - .projectId("") - .build(); - -Folder deletedFolder = sdk.Folders().Delete(input); -``` - - -**Parameters:** -- `input` (DeleteFolderInput): The input for deleting a folder. - - `projectId` (String): The ID of the project where the folder exists. - - `environmentSlug` (String): The slug of the environment where the folder exists. - - `folderId` (String): The ID of the folder to delete. - -**Returns:** -- `Folder`: The deleted folder. \ No newline at end of file +

+ infisical +

+

+

Infisical Java SDK

+

+ Slack | + Infisical Cloud | + Self-Hosting | + Docs | + Website +

+ +

+ + Infisical is released under the MIT license. + + + PRs welcome! + + + git commit activity + + + Slack community channel + + + Infisical Twitter + +

+ +## Introduction + +**[Infisical](https://infisical.com)** is the open source secret management platform that teams use to centralize their secrets like API keys, database credentials, and configurations. + +## Documentation +You can find the documentation for the Java SDK on our [SDK documentation page](https://infisical.com/docs/sdks/languages/java) + +## Security + +Please do not file GitHub issues or post on our public forum for security vulnerabilities, as they are public! + +Infisical takes security issues very seriously. If you have any concerns about Infisical or believe you have uncovered a vulnerability, please get in touch via the e-mail address security@infisical.com. In the message, try to provide a description of the issue and ideally a way of reproducing it. The security team will get back to you as soon as possible. + +Note that this security address should be used only for undisclosed vulnerabilities. Please report any security problems to us before disclosing it publicly. \ No newline at end of file