@@ -32,107 +32,186 @@ async def main():
3232 print (overview .title )
3333 # [developer-docs.sdk.python.list-items]-end
3434
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
35+ await showcase_vault_operations (client )
36+
37+ await showcase_batch_item_operations (client , vault_id )
38+
39+ group_id = os .environ .get ("OP_GROUP_ID" )
40+ if group_id is None :
41+ raise Exception ("OP_GROUP_ID is required" )
42+
43+ await showcase_group_permission_operations (client , vault_id , group_id )
44+
45+ async def showcase_vault_operations (client : Client ):
46+ # [developer-docs.sdk.python.create-vault]-start
47+ # Create Vault
48+ vault_create_params = VaultCreateParams (
49+ title = "Python SDK Vault" ,
50+ description = "A description" ,
51+ allow_admins_access = False ,
52+ )
53+ created_vault = await client .vaults .create (vault_create_params )
54+ print (f"Created vault: { created_vault .id } - { created_vault .title } " )
55+ # [developer-docs.sdk.python.create-vault]-end
56+
57+ # [developer-docs.sdk.python.vault-overview]-start
58+ vault_overview = await client .vaults .get_overview (created_vault .id )
59+ print (vault_overview )
60+ # [developer-docs.sdk.python.vault-overview]-end
61+
62+ # [developer-docs.sdk.python.update-vault]-start
63+ # Update Vault
64+ update_params = VaultUpdateParams (
65+ title = "Python SDK Updated Name" ,
66+ description = "Updated description" ,
67+ )
68+
69+ await client .vaults .update (created_vault .id , update_params )
70+ # [developer-docs.sdk.python.update-vault]-end
4071
4172 # [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 )
73+ # Get Vault
74+ get_params = VaultGetParams (
75+ accessors = True ,
76+ )
77+
78+ updated_vault = await client .vaults .get (created_vault .id , get_params )
79+ print (f"Updated vault: { updated_vault .id } - { updated_vault .title } " )
4580 # [developer-docs.sdk.python.get-vault-details]-end
4681
47- # [developer-docs.sdk.python.batch-create-items]-start
82+ # [developer-docs.sdk.python.delete-vault]-start
83+ # Delete Vault
84+ await client .vaults .delete (created_vault .id )
85+ # [developer-docs.sdk.python.delete-vault]-end
86+
87+ # [developer-docs.sdk.python.list-vault]-start
88+ # List Vaults
89+ vaults = await client .vaults .list ()
90+ for vault in vaults :
91+ print (vault .title )
92+ # [developer-docs.sdk.python.list-vault]-end
93+
94+ async def showcase_group_permission_operations (client : Client , vault_id : str , group_id : str ):
95+
96+ # [developer-docs.sdk.python.grant-group-permissions]-start
97+ # Grant Group Permissions
98+ await client .vaults .grant_group_permissions (
99+ vault_id = vault_id ,
100+ group_permissions_list = [
101+ GroupAccess (
102+ group_id = group_id ,
103+ permissions = READ_ITEMS ,
104+ )
105+ ],
106+ )
107+ print (f"Granted group { group_id } permissions to vault { vault_id } " )
108+ # [developer-docs.sdk.python.grant-group-permissions]-end
109+
110+ # [developer-docs.sdk.python.update-group-permissions]-start
111+ # Update Group Permissions
112+ await client .vaults .update_group_permissions (
113+ group_permissions_list = [
114+ GroupVaultAccess (
115+ vault_id = vault_id ,
116+ group_id = group_id ,
117+ permissions = READ_ITEMS | CREATE_ITEMS | UPDATE_ITEMS ,
118+ )
119+ ],
120+ )
121+ print (f"Updated group { group_id } permissions to vault { vault_id } " )
122+ # [developer-docs.sdk.python.update-group-permissions]-start
123+
124+ # [developer-docs.sdk.python.revoke-group-permissions]-start
125+ # Revoke Group Permissions
126+ await client .vaults .revoke_group_permissions (
127+ vault_id = vault_id ,
128+ group_id = group_id ,
129+ )
130+ # [developer-docs.sdk.python.update-group-permissions]-end
131+
132+ # [developer-docs.sdk.python.get-group]-start
133+ # Get a group
134+ group = await client .groups .get (group_id , GroupGetParams (vaultPermissions = False ))
135+ print (group )
136+ # [developer-docs.sdk.python.get-group]-end
137+
138+ async def showcase_batch_item_operations (client : Client , vault_id : str ):
139+ # [developer-docs.sdk.python.batch-create-items]-start
48140 items_to_create = []
49141 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 )
142+ items_to_create .append (
143+ ItemCreateParams (
144+ title = "My Login Item {}" .format (i ),
145+ category = ItemCategory .LOGIN ,
146+ vault_id = vault_id ,
147+ fields = [
148+ ItemField (
149+ id = "username" ,
150+ title = "username" ,
151+ field_type = ItemFieldType .TEXT ,
152+ value = "mynameisjeff" ,
153+ ),
154+ ItemField (
155+ id = "password" ,
156+ title = "password" ,
157+ field_type = ItemFieldType .CONCEALED ,
158+ value = "jeff" ,
159+ ),
160+ ItemField (
161+ id = "onetimepassword" ,
162+ title = "one-time-password" ,
163+ field_type = ItemFieldType .TOTP ,
164+ section_id = "totpsection" ,
165+ value = "otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password" ,
166+ ),
167+ ],
168+ sections = [
169+ ItemSection (id = "" , title = "" ),
170+ ItemSection (id = "totpsection" , title = "" ),
171+ ],
172+ tags = ["test tag 1" , "test tag 2" ],
173+ websites = [
174+ Website (
175+ label = "my custom website" ,
176+ url = "https://example.com" ,
177+ autofill_behavior = AutofillBehavior .NEVER ,
178+ )
179+ ],
180+ )
181+ )
182+
183+ # Create all items in the same vault in a single batch
184+ batchCreateResponse = await client .items .create_all (vault_id , items_to_create )
94185
95186 item_ids = []
96187 for res in batchCreateResponse .individual_responses :
97188 if res .content is not None :
98- print ('Created item "{}" ({})' .format (
99- res .content .title , res .content .id ))
189+ print ('Created item "{}" ({})' .format (res .content .title , res .content .id ))
100190 item_ids .append (res .content .id )
101191 elif res .error is not None :
102192 print ("[Batch create] Something went wrong: {}" .format (res .error ))
103193 # [developer-docs.sdk.python.batch-create-items]-end
104194
105195 # [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 )
196+ # Get multiple items form the same vault in a single batch
197+ batchGetReponse = await client .items .get_all (vault_id , item_ids )
108198 for res in batchGetReponse .individual_responses :
109199 if res .content is not None :
110- print ('Obtained item "{}" ({})' .format (
111- res .content .title , res .content .id ))
200+ print ('Obtained item "{}" ({})' .format (res .content .title , res .content .id ))
112201 elif res .error is not None :
113202 print ("[Batch get] Something went wrong: {}" .format (res .error ))
114203 # [developer-docs.sdk.python.batch-get-items]-end
115204
116205 # [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 )
206+ # Delete multiple items from the same vault in a single batch
207+ batchDeleteResponse = await client .items .delete_all (vault_id , item_ids )
119208 for id , res in batchDeleteResponse .individual_responses .items ():
120209 if res .error is not None :
121210 print ("[Batch delete] Something went wrong: {}" .format (res .error ))
122211 else :
123212 print ("Deleted item {}" .format (id ))
124213 # [developer-docs.sdk.python.batch-delete-items]-end
125214
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-
136215
137216if __name__ == "__main__" :
138217 asyncio .run (main ())
0 commit comments