11# [developer-docs.sdk.python.sdk-import]-start
22from onepassword import *
33import asyncio
4+ import os
45
56
67async def main ():
8+ vault_id = os .environ .get ("OP_VAULT_ID" )
9+ if vault_id is None :
10+ raise Exception ("OP_VAULT_ID is required" )
11+
712 # [developer-docs.sdk.python.client-initialization]-start
813 # Connects to the 1Password desktop app.
914 client = await Client .authenticate (
1015 auth = DesktopAuth (
11- account_name = "YouAccountNameAsShownInDesktopApp " # Set to your 1Password account name.
16+ account_name = "YourAccountNameAsShownInTheDesktopApp " # Set to your 1Password account name.
1217 ),
1318 # Set the following to your own integration name and version.
1419 integration_name = "My 1Password Integration" ,
1520 integration_version = "v1.0.0" ,
1621 )
17-
22+
1823 # [developer-docs.sdk.python.list-vaults]-start
1924 vaults = await client .vaults .list ()
2025 for vault in vaults :
2126 print (vault )
2227 # [developer-docs.sdk.python.list-vaults]-end
2328
2429 # [developer-docs.sdk.python.list-items]-start
25- overviews = await client .items .list (vault_id = vaults [ 0 ]. id )
30+ overviews = await client .items .list (vault_id )
2631 for overview in overviews :
2732 print (overview .title )
2833 # [developer-docs.sdk.python.list-items]-end
2934
35+ # [developer-docs.sdk.python.get-vault-overview]-start
36+ # Get vault overview
37+ vaultOverview = await client .vaults .get_overview (vault_id )
38+ print (vaultOverview )
39+ # [developer-docs.sdk.python.get-vault-overview]-end
40+
41+ # [developer-docs.sdk.python.get-vault-details]-start
42+ # Get vault details
43+ vault = await client .vaults .get (vaultOverview .id , VaultGetParams (accessors = False ))
44+ print (vault )
45+ # [developer-docs.sdk.python.get-vault-details]-end
46+
47+ # [developer-docs.sdk.python.batch-create-items]-start
48+ items_to_create = []
49+ for i in range (1 , 4 ):
50+ items_to_create .append (ItemCreateParams (
51+ title = "My Login Item {}" .format (i ),
52+ category = ItemCategory .LOGIN ,
53+ vault_id = vault .id ,
54+ fields = [
55+ ItemField (
56+ id = "username" ,
57+ title = "username" ,
58+ field_type = ItemFieldType .TEXT ,
59+ value = "mynameisjeff" ,
60+ ),
61+ ItemField (
62+ id = "password" ,
63+ title = "password" ,
64+ field_type = ItemFieldType .CONCEALED ,
65+ value = "jeff" ,
66+ ),
67+ ItemField (
68+ id = "onetimepassword" ,
69+ title = "one-time-password" ,
70+ field_type = ItemFieldType .TOTP ,
71+ section_id = "totpsection" ,
72+ value = "otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password" ,
73+ ),
74+ ],
75+ sections = [
76+ ItemSection (
77+ id = "" , title = "" ),
78+ ItemSection (
79+ id = "totpsection" , title = "" ),
80+ ],
81+ tags = [
82+ "test tag 1" , "test tag 2" ],
83+ websites = [
84+ Website (
85+ label = "my custom website" ,
86+ url = "https://example.com" ,
87+ autofill_behavior = AutofillBehavior .NEVER ,
88+ )
89+ ],
90+ ))
91+
92+ # Create all items in the same vault in a single batch
93+ batchCreateResponse = await client .items .create_all (vault .id , items_to_create )
94+
95+ item_ids = []
96+ for res in batchCreateResponse .individual_responses :
97+ if res .content is not None :
98+ print ('Created item "{}" ({})' .format (
99+ res .content .title , res .content .id ))
100+ item_ids .append (res .content .id )
101+ elif res .error is not None :
102+ print ("[Batch create] Something went wrong: {}" .format (res .error ))
103+ # [developer-docs.sdk.python.batch-create-items]-end
104+
105+ # [developer-docs.sdk.python.batch-get-items]-start
106+ # Get multiple items form the same vault in a single batch
107+ batchGetReponse = await client .items .get_all (vault .id , item_ids )
108+ for res in batchGetReponse .individual_responses :
109+ if res .content is not None :
110+ print ('Obtained item "{}" ({})' .format (
111+ res .content .title , res .content .id ))
112+ elif res .error is not None :
113+ print ("[Batch get] Something went wrong: {}" .format (res .error ))
114+ # [developer-docs.sdk.python.batch-get-items]-end
115+
116+ # [developer-docs.sdk.python.batch-delete-items]-start
117+ # Delete multiple items from the same vault in a single batch
118+ batchDeleteResponse = await client .items .delete_all (vault .id , item_ids )
119+ for id , res in batchDeleteResponse .individual_responses .items ():
120+ if res .error is not None :
121+ print ("[Batch delete] Something went wrong: {}" .format (res .error ))
122+ else :
123+ print ("Deleted item {}" .format (id ))
124+ # [developer-docs.sdk.python.batch-delete-items]-end
125+
126+ group_id = os .environ .get ("OP_GROUP_ID" )
127+ if group_id is None :
128+ raise Exception ("OP_GROUP_ID is required" )
129+
130+ # [developer-docs.sdk.python.get-group]-start
131+ # Get a group
132+ group = await client .groups .get (group_id , GroupGetParams (vaultPermissions = False ))
133+ print (group )
134+ # [developer-docs.sdk.python.get-group]-end
135+
30136
31137if __name__ == "__main__" :
32- asyncio .run (main ())
138+ asyncio .run (main ())
0 commit comments