@@ -13,7 +13,8 @@ async def main():
1313 # Connects to the 1Password desktop app.
1414 client = await Client .authenticate (
1515 auth = DesktopAuth (
16- account_name = "YourAccountNameAsShownInTheDesktopApp" # Set to your 1Password account name as shown at the top left sidebar of the app, or your account UUID.
16+ # Set to your 1Password account name as shown at the top left sidebar of the app, or your account UUID.
17+ account_name = "YourAccountNameAsShownInTheDesktopApp"
1718 ),
1819 # Set the following to your own integration name and version.
1920 integration_name = "My 1Password Integration" ,
@@ -32,65 +33,168 @@ async def main():
3233 print (overview .title )
3334 # [developer-docs.sdk.python.list-items]-end
3435
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
36+ await showcase_vault_operations (client )
37+
38+ await showcase_batch_item_operations (client , vault_id )
39+
40+ group_id = os .environ .get ("OP_GROUP_ID" )
41+ if group_id is None :
42+ raise Exception ("OP_GROUP_ID is required" )
43+
44+ await showcase_group_permission_operations (client , vault_id , group_id )
45+
46+ environment_id = os .environ .get ("OP_ENVIRONMENT_ID" )
47+ if environment_id is not None :
48+ # [developer-docs.sdk.python.get-environment-variables]-start
49+ # Read variables from a 1Password Environment
50+ environment = await client .environments .get_variables (environment_id )
51+ for variable in environment .variables :
52+ print (f"{ variable .name } : { variable .value } (masked: { variable .masked } )" )
53+ # [developer-docs.sdk.python.get-environment-variables]-end
54+
55+
56+ async def showcase_vault_operations (client : Client ):
57+ # [developer-docs.sdk.python.create-vault]-start
58+ # Create Vault
59+ vault_create_params = VaultCreateParams (
60+ title = "Python SDK Vault" ,
61+ description = "A description" ,
62+ allow_admins_access = False ,
63+ )
64+ created_vault = await client .vaults .create (vault_create_params )
65+ print (f"Created vault: { created_vault .id } - { created_vault .title } " )
66+ # [developer-docs.sdk.python.create-vault]-end
67+
68+ # [developer-docs.sdk.python.vault-overview]-start
69+ vault_overview = await client .vaults .get_overview (created_vault .id )
70+ print (vault_overview )
71+ # [developer-docs.sdk.python.vault-overview]-end
72+
73+ # [developer-docs.sdk.python.update-vault]-start
74+ # Update Vault
75+ update_params = VaultUpdateParams (
76+ title = "Python SDK Updated Name" ,
77+ description = "Updated description" ,
78+ )
79+
80+ await client .vaults .update (created_vault .id , update_params )
81+ # [developer-docs.sdk.python.update-vault]-end
4082
4183 # [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 )
84+ # Get Vault
85+ get_params = VaultGetParams (
86+ accessors = True ,
87+ )
88+
89+ updated_vault = await client .vaults .get (created_vault .id , get_params )
90+ print (f"Updated vault: { updated_vault .id } - { updated_vault .title } " )
4591 # [developer-docs.sdk.python.get-vault-details]-end
4692
47- # [developer-docs.sdk.python.batch-create-items]-start
93+ # [developer-docs.sdk.python.delete-vault]-start
94+ # Delete Vault
95+ await client .vaults .delete (created_vault .id )
96+ # [developer-docs.sdk.python.delete-vault]-end
97+
98+ # [developer-docs.sdk.python.list-vault]-start
99+ # List Vaults
100+ vaults = await client .vaults .list ()
101+ for vault in vaults :
102+ print (vault .title )
103+ # [developer-docs.sdk.python.list-vault]-end
104+
105+
106+ async def showcase_group_permission_operations (client : Client , vault_id : str , group_id : str ):
107+
108+ # [developer-docs.sdk.python.grant-group-permissions]-start
109+ # Grant Group Permissions
110+ await client .vaults .grant_group_permissions (
111+ vault_id = vault_id ,
112+ group_permissions_list = [
113+ GroupAccess (
114+ group_id = group_id ,
115+ permissions = READ_ITEMS ,
116+ )
117+ ],
118+ )
119+ print (f"Granted group { group_id } permissions to vault { vault_id } " )
120+ # [developer-docs.sdk.python.grant-group-permissions]-end
121+
122+ # [developer-docs.sdk.python.update-group-permissions]-start
123+ # Update Group Permissions
124+ await client .vaults .update_group_permissions (
125+ group_permissions_list = [
126+ GroupVaultAccess (
127+ vault_id = vault_id ,
128+ group_id = group_id ,
129+ permissions = READ_ITEMS | CREATE_ITEMS | UPDATE_ITEMS ,
130+ )
131+ ],
132+ )
133+ print (f"Updated group { group_id } permissions to vault { vault_id } " )
134+ # [developer-docs.sdk.python.update-group-permissions]-start
135+
136+ # [developer-docs.sdk.python.revoke-group-permissions]-start
137+ # Revoke Group Permissions
138+ await client .vaults .revoke_group_permissions (
139+ vault_id = vault_id ,
140+ group_id = group_id ,
141+ )
142+ # [developer-docs.sdk.python.update-group-permissions]-end
143+
144+ # [developer-docs.sdk.python.get-group]-start
145+ # Get a group
146+ group = await client .groups .get (group_id , GroupGetParams (vaultPermissions = False ))
147+ print (group )
148+ # [developer-docs.sdk.python.get-group]-end
149+
150+
151+ async def showcase_batch_item_operations (client : Client , vault_id : str ):
152+ # [developer-docs.sdk.python.batch-create-items]-start
48153 items_to_create = []
49154 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 )
155+ items_to_create .append (
156+ ItemCreateParams (
157+ title = "My Login Item {}" .format (i ),
158+ category = ItemCategory .LOGIN ,
159+ vault_id = vault_id ,
160+ fields = [
161+ ItemField (
162+ id = "username" ,
163+ title = "username" ,
164+ field_type = ItemFieldType .TEXT ,
165+ value = "mynameisjeff" ,
166+ ),
167+ ItemField (
168+ id = "password" ,
169+ title = "password" ,
170+ field_type = ItemFieldType .CONCEALED ,
171+ value = "jeff" ,
172+ ),
173+ ItemField (
174+ id = "onetimepassword" ,
175+ title = "one-time-password" ,
176+ field_type = ItemFieldType .TOTP ,
177+ section_id = "totpsection" ,
178+ value = "otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password" ,
179+ ),
180+ ],
181+ sections = [
182+ ItemSection (id = "" , title = "" ),
183+ ItemSection (id = "totpsection" , title = "" ),
184+ ],
185+ tags = ["test tag 1" , "test tag 2" ],
186+ websites = [
187+ Website (
188+ label = "my custom website" ,
189+ url = "https://example.com" ,
190+ autofill_behavior = AutofillBehavior .NEVER ,
191+ )
192+ ],
193+ )
194+ )
195+
196+ # Create all items in the same vault in a single batch
197+ batchCreateResponse = await client .items .create_all (vault_id , items_to_create )
94198
95199 item_ids = []
96200 for res in batchCreateResponse .individual_responses :
@@ -103,8 +207,8 @@ async def main():
103207 # [developer-docs.sdk.python.batch-create-items]-end
104208
105209 # [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 )
210+ # Get multiple items form the same vault in a single batch
211+ batchGetReponse = await client .items .get_all (vault_id , item_ids )
108212 for res in batchGetReponse .individual_responses :
109213 if res .content is not None :
110214 print ('Obtained item "{}" ({})' .format (
@@ -114,34 +218,14 @@ async def main():
114218 # [developer-docs.sdk.python.batch-get-items]-end
115219
116220 # [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 )
221+ # Delete multiple items from the same vault in a single batch
222+ batchDeleteResponse = await client .items .delete_all (vault_id , item_ids )
119223 for id , res in batchDeleteResponse .individual_responses .items ():
120224 if res .error is not None :
121225 print ("[Batch delete] Something went wrong: {}" .format (res .error ))
122226 else :
123227 print ("Deleted item {}" .format (id ))
124228 # [developer-docs.sdk.python.batch-delete-items]-end
125229
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-
136- environment_id = os .environ .get ("OP_ENVIRONMENT_ID" )
137- if environment_id is not None :
138- # [developer-docs.sdk.python.get-environment-variables]-start
139- # Read variables from a 1Password Environment
140- environment = await client .environments .get_variables (environment_id )
141- for variable in environment .variables :
142- print (f"{ variable .name } : { variable .value } (masked: { variable .masked } )" )
143- # [developer-docs.sdk.python.get-environment-variables]-end
144-
145-
146230if __name__ == "__main__" :
147231 asyncio .run (main ())
0 commit comments