Skip to content

Commit 6f37a3c

Browse files
committed
Added vault crudl and group permissions to example code
1 parent 0a5935b commit 6f37a3c

2 files changed

Lines changed: 498 additions & 235 deletions

File tree

example/desktop_app.py

Lines changed: 153 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -32,107 +32,189 @@ 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=MANAGE_VAULT,
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+
# Delete temporary vault
139+
await client.vaults.delete(vault_id)
140+
141+
async def showcase_batch_item_operations(client: Client, vault_id: str):
142+
# [developer-docs.sdk.python.batch-create-items]-start
48143
items_to_create = []
49144
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)
145+
items_to_create.append(
146+
ItemCreateParams(
147+
title="My Login Item {}".format(i),
148+
category=ItemCategory.LOGIN,
149+
vault_id=vault_id,
150+
fields=[
151+
ItemField(
152+
id="username",
153+
title="username",
154+
field_type=ItemFieldType.TEXT,
155+
value="mynameisjeff",
156+
),
157+
ItemField(
158+
id="password",
159+
title="password",
160+
field_type=ItemFieldType.CONCEALED,
161+
value="jeff",
162+
),
163+
ItemField(
164+
id="onetimepassword",
165+
title="one-time-password",
166+
field_type=ItemFieldType.TOTP,
167+
section_id="totpsection",
168+
value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
169+
),
170+
],
171+
sections=[
172+
ItemSection(id="", title=""),
173+
ItemSection(id="totpsection", title=""),
174+
],
175+
tags=["test tag 1", "test tag 2"],
176+
websites=[
177+
Website(
178+
label="my custom website",
179+
url="https://example.com",
180+
autofill_behavior=AutofillBehavior.NEVER,
181+
)
182+
],
183+
)
184+
)
185+
186+
# Create all items in the same vault in a single batch
187+
batchCreateResponse = await client.items.create_all(vault_id, items_to_create)
94188

95189
item_ids = []
96190
for res in batchCreateResponse.individual_responses:
97191
if res.content is not None:
98-
print('Created item "{}" ({})'.format(
99-
res.content.title, res.content.id))
192+
print('Created item "{}" ({})'.format(res.content.title, res.content.id))
100193
item_ids.append(res.content.id)
101194
elif res.error is not None:
102195
print("[Batch create] Something went wrong: {}".format(res.error))
103196
# [developer-docs.sdk.python.batch-create-items]-end
104197

105198
# [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)
199+
# Get multiple items form the same vault in a single batch
200+
batchGetReponse = await client.items.get_all(vault_id, item_ids)
108201
for res in batchGetReponse.individual_responses:
109202
if res.content is not None:
110-
print('Obtained item "{}" ({})'.format(
111-
res.content.title, res.content.id))
203+
print('Obtained item "{}" ({})'.format(res.content.title, res.content.id))
112204
elif res.error is not None:
113205
print("[Batch get] Something went wrong: {}".format(res.error))
114206
# [developer-docs.sdk.python.batch-get-items]-end
115207

116208
# [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)
209+
# Delete multiple items from the same vault in a single batch
210+
batchDeleteResponse = await client.items.delete_all(vault_id, item_ids)
119211
for id, res in batchDeleteResponse.individual_responses.items():
120212
if res.error is not None:
121213
print("[Batch delete] Something went wrong: {}".format(res.error))
122214
else:
123215
print("Deleted item {}".format(id))
124216
# [developer-docs.sdk.python.batch-delete-items]-end
125217

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-
136218

137219
if __name__ == "__main__":
138220
asyncio.run(main())

0 commit comments

Comments
 (0)