1- from typing import List , Union
1+ from typing import List , Union , Optional , Dict , Any
22
33from infisical_sdk .infisical_requests import InfisicalRequests
44from infisical_sdk .api_types import ListSecretsResponse , SingleSecretResponse , BaseSecret
@@ -14,14 +14,15 @@ def __init__(self, requests: InfisicalRequests, cache: SecretsCache) -> None:
1414
1515 def list_secrets (
1616 self ,
17- project_id : str ,
1817 environment_slug : str ,
1918 secret_path : str ,
19+ project_id : str = None ,
2020 expand_secret_references : bool = True ,
2121 view_secret_value : bool = True ,
2222 recursive : bool = False ,
2323 include_imports : bool = True ,
24- tag_filters : List [str ] = []) -> ListSecretsResponse :
24+ tag_filters : List [str ] = [],
25+ project_slug : str = None ) -> ListSecretsResponse :
2526
2627 params = {
2728 "workspaceId" : project_id ,
@@ -31,8 +32,12 @@ def list_secrets(
3132 "expandSecretReferences" : str (expand_secret_references ).lower (),
3233 "recursive" : str (recursive ).lower (),
3334 "include_imports" : str (include_imports ).lower (),
35+ "workspaceSlug" : project_slug
3436 }
3537
38+ if project_slug is None and project_id is None :
39+ raise ValueError ("project_slug or project_id must be provided" )
40+
3641 if tag_filters :
3742 params ["tagSlugs" ] = "," .join (tag_filters )
3843
@@ -58,16 +63,18 @@ def list_secrets(
5863 def get_secret_by_name (
5964 self ,
6065 secret_name : str ,
61- project_id : str ,
6266 environment_slug : str ,
6367 secret_path : str ,
68+ project_id : str = None ,
69+ project_slug : str = None ,
6470 expand_secret_references : bool = True ,
6571 include_imports : bool = True ,
6672 view_secret_value : bool = True ,
6773 version : str = None ) -> BaseSecret :
6874
6975 params = {
7076 "workspaceId" : project_id ,
77+ "workspaceSlug" : project_slug ,
7178 "viewSecretValue" : str (view_secret_value ).lower (),
7279 "environment" : environment_slug ,
7380 "secretPath" : secret_path ,
@@ -76,6 +83,9 @@ def get_secret_by_name(
7683 "version" : version
7784 }
7885
86+ if project_slug is None and project_id is None :
87+ raise ValueError ("project_slug or project_id must be provided" )
88+
7989 cache_params = {
8090 "project_id" : project_id ,
8191 "environment_slug" : environment_slug ,
@@ -105,27 +115,37 @@ def get_secret_by_name(
105115 def create_secret_by_name (
106116 self ,
107117 secret_name : str ,
108- project_id : str ,
109118 secret_path : str ,
110119 environment_slug : str ,
120+ project_id : str = None ,
111121 secret_value : str = None ,
112122 secret_comment : str = None ,
113123 skip_multiline_encoding : bool = False ,
114124 secret_reminder_repeat_days : Union [float , int ] = None ,
115- secret_reminder_note : str = None ) -> BaseSecret :
125+ secret_reminder_note : str = None ,
126+ project_slug : str = None ,
127+ secret_metadata : Optional [List [Dict [str , Any ]]] = None ,
128+ tags_ids : Optional [List [str ]] = None ,
129+ ) -> BaseSecret :
116130
117131 requestBody = {
118132 "workspaceId" : project_id ,
133+ "projectSlug" : project_slug ,
119134 "environment" : environment_slug ,
120135 "secretPath" : secret_path ,
121136 "secretValue" : secret_value ,
122137 "secretComment" : secret_comment ,
123- "tagIds" : None ,
138+ "tagIds" : tags_ids ,
124139 "skipMultilineEncoding" : skip_multiline_encoding ,
125140 "type" : "shared" ,
126141 "secretReminderRepeatDays" : secret_reminder_repeat_days ,
127- "secretReminderNote" : secret_reminder_note
142+ "secretReminderNote" : secret_reminder_note ,
143+ "secretMetadata" : secret_metadata ,
128144 }
145+
146+ if project_slug is None and project_id is None :
147+ raise ValueError ("project_slug or project_id must be provided" )
148+
129149 result = self .requests .post (
130150 path = f"/api/v3/secrets/raw/{ secret_name } " ,
131151 json = requestBody ,
@@ -152,30 +172,39 @@ def create_secret_by_name(
152172 def update_secret_by_name (
153173 self ,
154174 current_secret_name : str ,
155- project_id : str ,
156175 secret_path : str ,
157176 environment_slug : str ,
177+ project_id : str = None ,
158178 secret_value : str = None ,
159179 secret_comment : str = None ,
160180 skip_multiline_encoding : bool = False ,
161181 secret_reminder_repeat_days : Union [float , int ] = None ,
162182 secret_reminder_note : str = None ,
163- new_secret_name : str = None ) -> BaseSecret :
183+ new_secret_name : str = None ,
184+ project_slug : str = None ,
185+ secret_metadata : Optional [List [Dict [str , Any ]]] = None ,
186+ tags_ids : Optional [List [str ]] = None ,
187+ ) -> BaseSecret :
164188
165189 requestBody = {
166190 "workspaceId" : project_id ,
191+ "projectSlug" : project_slug ,
167192 "environment" : environment_slug ,
168193 "secretPath" : secret_path ,
169194 "secretValue" : secret_value ,
170195 "secretComment" : secret_comment ,
171196 "newSecretName" : new_secret_name ,
172- "tagIds" : None ,
197+ "tagIds" : tags_ids ,
173198 "skipMultilineEncoding" : skip_multiline_encoding ,
174199 "type" : "shared" ,
175200 "secretReminderRepeatDays" : secret_reminder_repeat_days ,
176- "secretReminderNote" : secret_reminder_note
201+ "secretReminderNote" : secret_reminder_note ,
202+ "secretMetadata" : secret_metadata ,
177203 }
178204
205+ if project_slug is None and project_id is None :
206+ raise ValueError ("project_slug or project_id must be provided" )
207+
179208 result = self .requests .patch (
180209 path = f"/api/v3/secrets/raw/{ current_secret_name } " ,
181210 json = requestBody ,
@@ -201,12 +230,17 @@ def update_secret_by_name(
201230 def delete_secret_by_name (
202231 self ,
203232 secret_name : str ,
204- project_id : str ,
205233 secret_path : str ,
206- environment_slug : str ) -> BaseSecret :
234+ environment_slug : str ,
235+ project_id : str = None ,
236+ project_slug : str = None ) -> BaseSecret :
237+
238+ if project_slug is None and project_id is None :
239+ raise ValueError ("project_slug or project_id must be provided" )
207240
208241 requestBody = {
209242 "workspaceId" : project_id ,
243+ "projectSlug" : project_slug ,
210244 "environment" : environment_slug ,
211245 "secretPath" : secret_path ,
212246 "type" : "shared" ,
0 commit comments