@@ -24,192 +24,189 @@ async def main():
2424 )
2525 # [developer-docs.sdk.python.client-initialization]-end
2626
27- # # [developer-docs.sdk.python.list-vaults]-start
28- # vaults = await client.vaults.list()
29- # for vault in vaults:
30- # print(vault)
31- # # [developer-docs.sdk.python.list-vaults]-end
32-
33- # # [developer-docs.sdk.python.list-items]-start
34- # overviews = await client.items.list(vault.id)
35- # for overview in overviews:
36- # print(overview.title)
37- # # [developer-docs.sdk.python.list-items]-end
38- # # [developer-docs.sdk.python.use-item-filters]-start
39- # archived_overviews = await client.items.list(
40- # vault.id,
41- # ItemListFilterByState(
42- # content=ItemListFilterByStateInner(active=False, archived=True)
43- # ),
44- # )
45- # for overview in archived_overviews:
46- # print(overview.title)
47- # # [developer-docs.sdk.python.use-item-filters]-end
48- # # [developer-docs.sdk.python.validate-secret-reference]-start
49- # # Validate secret reference to ensure no syntax errors
50- # try:
51- # Secrets.validate_secret_reference("op://vault/item/field")
52- # except Exception as error:
53- # print(error)
54- # # [developer-docs.sdk.python.validate-secret-reference]-end
55-
56- # vault_id = os.getenv("OP_VAULT_ID")
57- # if vault_id is None:
58- # raise Exception("OP_VAULT_ID environment variable is not set")
59-
60- # # [developer-docs.sdk.python.create-item]-start
61- # # Create an Item and add it to your vault.
62- # to_create = ItemCreateParams(
63- # title="MyName",
64- # category=ItemCategory.LOGIN,
65- # vault_id=vault_id,
66- # fields=[
67- # ItemField(
68- # id="username",
69- # title="username",
70- # field_type=ItemFieldType.TEXT,
71- # value="mynameisjeff",
72- # ),
73- # ItemField(
74- # id="password",
75- # title="password",
76- # field_type=ItemFieldType.CONCEALED,
77- # value="jeff",
78- # ),
79- # ItemField(
80- # id="onetimepassword",
81- # title="one-time-password",
82- # field_type=ItemFieldType.TOTP,
83- # section_id="totpsection",
84- # value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
85- # ),
86- # ],
87- # sections=[
88- # ItemSection(id="", title=""),
89- # ItemSection(id="totpsection", title=""),
90- # ],
91- # tags=["test tag 1", "test tag 2"],
92- # websites=[
93- # Website(
94- # label="my custom website",
95- # url="https://example.com",
96- # autofill_behavior=AutofillBehavior.NEVER,
97- # )
98- # ],
99- # )
100- # created_item = await client.items.create(to_create)
101- # # [developer-docs.sdk.python.create-item]-end
102-
103- # print(dict(created_item))
104-
105- # # [developer-docs.sdk.python.resolve-secret]-start
106- # # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
107- # value = await client.secrets.resolve(
108- # f"op://{created_item.vault_id}/{created_item.id}/username"
109- # )
110- # print(value)
111- # # [developer-docs.sdk.python.resolve-secret]-end
112-
113- # # [developer-docs.sdk.python.resolve-totp-code]-start
114- # # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
115- # code = await client.secrets.resolve(
116- # f"op://{created_item.vault_id}/{created_item.id}/TOTP_onetimepassword?attribute=totp"
117- # )
118- # print(code)
119- # # [developer-docs.sdk.python.resolve-totp-code]-end
120- # await resolve_all_secrets(
121- # client, created_item.vault_id, created_item.id, "username", "password"
122- # )
123- # # [developer-docs.sdk.python.get-totp-item-crud]-start
124- # # Fetch a totp code from the item
125- # for f in created_item.fields:
126- # if f.field_type == "Totp":
127- # if f.details.content.error_message is not None:
128- # print(f.details.content.error_message)
129- # else:
130- # print(f.details.content.code)
131- # # [developer-docs.sdk.python.get-totp-item-crud]-end
132-
133- # # [developer-docs.sdk.python.get-item]-start
134- # # Retrieve an item from your vault.
135- # item = await client.items.get(created_item.vault_id, created_item.id)
136- # # [developer-docs.sdk.python.get-item]-end
137-
138- # print(dict(item))
139-
140- # # [developer-docs.sdk.python.update-item]-start
141- # # Update a field in your item
142- # item.fields[0].value = "new_value"
143- # item.websites.append(
144- # Website(
145- # label="my custom website 2",
146- # url="https://example2.com",
147- # autofill_behavior=AutofillBehavior.NEVER,
148- # ),
149- # )
150- # updated_item = await client.items.put(item)
151- # # [developer-docs.sdk.python.update-item]-end
152-
153- # print(dict(updated_item))
154-
155- # # [developer-docs.sdk.python.generate-pin-password]-start
156- # pin_password = Secrets.generate_password(
157- # PasswordRecipePin(parameters=PasswordRecipePinInner(length=8))
158- # )
159- # print(pin_password)
160- # # [developer-docs.sdk.python.generate-pin-password]-end
161-
162- # # [developer-docs.sdk.python.generate-memorable-password]-start
163- # memorable_password = Secrets.generate_password(
164- # PasswordRecipeMemorable(
165- # parameters=PasswordRecipeMemorableInner(
166- # separatorType=SeparatorType.UNDERSCORES,
167- # wordListType=WordListType.SYLLABLES,
168- # capitalize=False,
169- # wordCount=3,
170- # )
171- # ),
172- # )
173- # print(memorable_password)
174- # # [developer-docs.sdk.python.generate-memorable-password]-end
175-
176- # # [developer-docs.sdk.python.generate-random-password]-start
177- # random_password = Secrets.generate_password(
178- # PasswordRecipeRandom(
179- # parameters=PasswordRecipeRandomInner(
180- # length=10,
181- # includeDigits=False,
182- # includeSymbols=False,
183- # )
184- # ),
185- # )
186- # print(random_password)
187- # # [developer-docs.sdk.python.generate-random-password]-end
188-
189- # await share_item(client, updated_item.vault_id, updated_item.id)
190-
191- # await create_ssh_key_item(client, vault_id)
192-
193- # await create_and_replace_document_item(client, vault_id)
194-
195- # await create_attach_and_delete_file_field_item(client, vault_id)
196-
197- # await archive_item(client, updated_item.vault_id, updated_item.id)
198-
199- # # [developer-docs.sdk.python.delete-item]-start
200- # # Delete a item from your vault.
201- # await client.items.delete(created_item.vault_id, updated_item.id)
202- # # [developer-docs.sdk.python.delete-item]-end
203-
204- # await showcase_vault_operations(client)
205-
206- # await showcase_batch_item_operations(client, vault_id)
27+ vault_id = os .getenv ("OP_VAULT_ID" )
28+ if vault_id is None :
29+ raise Exception ("OP_VAULT_ID environment variable is not set" )
30+
31+ # [developer-docs.sdk.python.list-items]-start
32+ overviews = await client .items .list (vault_id )
33+ for overview in overviews :
34+ print (overview .title )
35+ # [developer-docs.sdk.python.list-items]-end
36+
37+ # [developer-docs.sdk.python.use-item-filters]-start
38+ archived_overviews = await client .items .list (
39+ vault_id ,
40+ ItemListFilterByState (
41+ content = ItemListFilterByStateInner (active = False , archived = True )
42+ ),
43+ )
44+ for overview in archived_overviews :
45+ print (overview .title )
46+ # [developer-docs.sdk.python.use-item-filters]-end
47+
48+ # [developer-docs.sdk.python.validate-secret-reference]-start
49+
50+ # Validate secret reference to ensure no syntax errors
51+ try :
52+ Secrets .validate_secret_reference ("op://vault/item/field" )
53+ except Exception as error :
54+ print (error )
55+ # [developer-docs.sdk.python.validate-secret-reference]-end
56+
57+ # [developer-docs.sdk.python.create-item]-start
58+ # Create an Item and add it to your vault.
59+ to_create = ItemCreateParams (
60+ title = "MyName" ,
61+ category = ItemCategory .LOGIN ,
62+ vault_id = vault_id ,
63+ fields = [
64+ ItemField (
65+ id = "username" ,
66+ title = "username" ,
67+ field_type = ItemFieldType .TEXT ,
68+ value = "mynameisjeff" ,
69+ ),
70+ ItemField (
71+ id = "password" ,
72+ title = "password" ,
73+ field_type = ItemFieldType .CONCEALED ,
74+ value = "jeff" ,
75+ ),
76+ ItemField (
77+ id = "onetimepassword" ,
78+ title = "one-time-password" ,
79+ field_type = ItemFieldType .TOTP ,
80+ section_id = "totpsection" ,
81+ value = "otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password" ,
82+ ),
83+ ],
84+ sections = [
85+ ItemSection (id = "" , title = "" ),
86+ ItemSection (id = "totpsection" , title = "" ),
87+ ],
88+ tags = ["test tag 1" , "test tag 2" ],
89+ websites = [
90+ Website (
91+ label = "my custom website" ,
92+ url = "https://example.com" ,
93+ autofill_behavior = AutofillBehavior .NEVER ,
94+ )
95+ ],
96+ )
97+ created_item = await client .items .create (to_create )
98+ # [developer-docs.sdk.python.create-item]-end
99+
100+ print (dict (created_item ))
101+
102+ # [developer-docs.sdk.python.resolve-secret]-start
103+ # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
104+ value = await client .secrets .resolve (
105+ f"op://{ created_item .vault_id } /{ created_item .id } /username"
106+ )
107+ print (value )
108+ # [developer-docs.sdk.python.resolve-secret]-end
109+
110+ # [developer-docs.sdk.python.resolve-totp-code]-start
111+ # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
112+ code = await client .secrets .resolve (
113+ f"op://{ created_item .vault_id } /{ created_item .id } /TOTP_onetimepassword?attribute=totp"
114+ )
115+ print (code )
116+ # [developer-docs.sdk.python.resolve-totp-code]-end
117+ await resolve_all_secrets (
118+ client , created_item .vault_id , created_item .id , "username" , "password"
119+ )
120+ # [developer-docs.sdk.python.get-totp-item-crud]-start
121+ # Fetch a totp code from the item
122+ for f in created_item .fields :
123+ if f .field_type == "Totp" :
124+ if f .details .content .error_message is not None :
125+ print (f .details .content .error_message )
126+ else :
127+ print (f .details .content .code )
128+ # [developer-docs.sdk.python.get-totp-item-crud]-end
129+
130+ # [developer-docs.sdk.python.get-item]-start
131+ # Retrieve an item from your vault.
132+ item = await client .items .get (created_item .vault_id , created_item .id )
133+ # [developer-docs.sdk.python.get-item]-end
134+
135+ print (dict (item ))
136+
137+ # [developer-docs.sdk.python.update-item]-start
138+ # Update a field in your item
139+ item .fields [0 ].value = "new_value"
140+ item .websites .append (
141+ Website (
142+ label = "my custom website 2" ,
143+ url = "https://example2.com" ,
144+ autofill_behavior = AutofillBehavior .NEVER ,
145+ ),
146+ )
147+ updated_item = await client .items .put (item )
148+ # [developer-docs.sdk.python.update-item]-end
149+
150+ print (dict (updated_item ))
151+
152+ # [developer-docs.sdk.python.generate-pin-password]-start
153+ pin_password = Secrets .generate_password (
154+ PasswordRecipePin (parameters = PasswordRecipePinInner (length = 8 ))
155+ )
156+ print (pin_password )
157+ # [developer-docs.sdk.python.generate-pin-password]-end
158+
159+ # [developer-docs.sdk.python.generate-memorable-password]-start
160+ memorable_password = Secrets .generate_password (
161+ PasswordRecipeMemorable (
162+ parameters = PasswordRecipeMemorableInner (
163+ separatorType = SeparatorType .UNDERSCORES ,
164+ wordListType = WordListType .SYLLABLES ,
165+ capitalize = False ,
166+ wordCount = 3 ,
167+ )
168+ ),
169+ )
170+ print (memorable_password )
171+ # [developer-docs.sdk.python.generate-memorable-password]-end
172+
173+ # [developer-docs.sdk.python.generate-random-password]-start
174+ random_password = Secrets .generate_password (
175+ PasswordRecipeRandom (
176+ parameters = PasswordRecipeRandomInner (
177+ length = 10 ,
178+ includeDigits = False ,
179+ includeSymbols = False ,
180+ )
181+ ),
182+ )
183+ print (random_password )
184+ # [developer-docs.sdk.python.generate-random-password]-end
185+
186+ await share_item (client , updated_item .vault_id , updated_item .id )
187+
188+ await create_ssh_key_item (client , vault_id )
189+
190+ await create_and_replace_document_item (client , vault_id )
191+
192+ await create_attach_and_delete_file_field_item (client , vault_id )
193+
194+ await archive_item (client , updated_item .vault_id , updated_item .id )
195+
196+ # [developer-docs.sdk.python.delete-item]-start
197+ # Delete a item from your vault.
198+ await client .items .delete (created_item .vault_id , updated_item .id )
199+ # [developer-docs.sdk.python.delete-item]-end
200+
201+ await showcase_vault_operations (client )
202+
203+ await showcase_batch_item_operations (client , vault_id )
207204
208205 group_id = os .environ .get ("OP_GROUP_ID" )
209206 if group_id is None :
210207 raise Exception ("OP_GROUP_ID is required" )
211208
212- await showcase_group_permission_operations (client , "" , group_id )
209+ await showcase_group_permission_operations (client , vault_id , group_id )
213210
214211async def showcase_vault_operations (client : Client ):
215212 # [developer-docs.sdk.python.create-vault]-start
0 commit comments