Class: Infisical::Secrets
- Inherits:
-
Object
- Object
- Infisical::Secrets
- Defined in:
- lib/infisical/secrets.rb
Overview
CRUD operations against Infisical's v4 secrets API.
Constant Summary collapse
- BASE_PATH =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
"api/v4/secrets"
Instance Method Summary collapse
-
#create(secret_name, secret_value, project_id:, environment:, secret_path: "/", secret_comment: nil, skip_multiline_encoding: nil) ⇒ Models::Secret
Creates a new secret.
-
#delete(secret_name, project_id:, environment:, secret_path: "/") ⇒ Models::Secret
Deletes a secret.
-
#get(secret_name, project_id:, environment:, secret_path: "/", include_imports: true) ⇒ Models::Secret
Fetches a single secret by name.
-
#initialize(http_client) ⇒ Secrets
constructor
A new instance of Secrets.
-
#list(project_id:, environment:, secret_path: "/", include_imports: true, recursive: false, skip_unique_validation: false, attach_to_process_env: false) ⇒ Array<Models::Secret>
Lists the secrets in a project environment, sorted by key.
-
#update(secret_name, project_id:, environment:, secret_value: nil, new_secret_name: nil, secret_path: "/", skip_multiline_encoding: nil) ⇒ Models::Secret
Updates a secret's value, name, or both.
Constructor Details
#initialize(http_client) ⇒ Secrets
Returns a new instance of Secrets.
14 15 16 |
# File 'lib/infisical/secrets.rb', line 14 def initialize(http_client) @http_client = http_client end |
Instance Method Details
#create(secret_name, secret_value, project_id:, environment:, secret_path: "/", secret_comment: nil, skip_multiline_encoding: nil) ⇒ Models::Secret
Creates a new secret.
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/infisical/secrets.rb', line 92 def create(secret_name, secret_value, project_id:, environment:, secret_path: "/", secret_comment: nil, skip_multiline_encoding: nil) response = @http_client.post( secret_path_for(secret_name), body: { projectId: project_id, environment: environment, secretPath: secret_path, secretValue: secret_value, secretComment: secret_comment, skipMultilineEncoding: skip_multiline_encoding }.compact ) Models::Secret.from_api(response["secret"]) end |
#delete(secret_name, project_id:, environment:, secret_path: "/") ⇒ Models::Secret
Deletes a secret.
151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/infisical/secrets.rb', line 151 def delete(secret_name, project_id:, environment:, secret_path: "/") response = @http_client.delete( secret_path_for(secret_name), body: { projectId: project_id, environment: environment, secretPath: secret_path } ) Models::Secret.from_api(response["secret"]) end |
#get(secret_name, project_id:, environment:, secret_path: "/", include_imports: true) ⇒ Models::Secret
Fetches a single secret by name.
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/infisical/secrets.rb', line 66 def get(secret_name, project_id:, environment:, secret_path: "/", include_imports: true) response = @http_client.get( secret_path_for(secret_name), params: { projectId: project_id, environment: environment, secretPath: secret_path, includeImports: include_imports } ) Models::Secret.from_api(response["secret"]) end |
#list(project_id:, environment:, secret_path: "/", include_imports: true, recursive: false, skip_unique_validation: false, attach_to_process_env: false) ⇒ Array<Models::Secret>
Lists the secrets in a project environment, sorted by key.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/infisical/secrets.rb', line 35 def list(project_id:, environment:, secret_path: "/", include_imports: true, recursive: false, skip_unique_validation: false, attach_to_process_env: false) response = @http_client.get( BASE_PATH, params: { projectId: project_id, environment: environment, secretPath: secret_path, includeImports: include_imports, recursive: recursive } ) secrets = Array(response["secrets"]).map { |secret| Models::Secret.from_api(secret) } secrets = ensure_unique_secrets_by_key(secrets, skip_unique_validation) if recursive secrets = merge_imported_secrets(secrets, response["imports"]) if include_imports secrets = secrets.sort_by(&:secret_key) attach_to_env(secrets) if attach_to_process_env secrets end |
#update(secret_name, project_id:, environment:, secret_value: nil, new_secret_name: nil, secret_path: "/", skip_multiline_encoding: nil) ⇒ Models::Secret
Updates a secret's value, name, or both.
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/infisical/secrets.rb', line 122 def update(secret_name, project_id:, environment:, secret_value: nil, new_secret_name: nil, secret_path: "/", skip_multiline_encoding: nil) if secret_value.nil? && new_secret_name.nil? raise ArgumentError, "update requires at least one of secret_value: or new_secret_name:" end response = @http_client.patch( secret_path_for(secret_name), body: { projectId: project_id, environment: environment, secretPath: secret_path, secretValue: secret_value, newSecretName: new_secret_name, skipMultilineEncoding: skip_multiline_encoding }.compact ) Models::Secret.from_api(response["secret"]) end |