Skip to content

Commit 67af771

Browse files
authored
Add beta features examples (#188)
Showcase the new functionality added in the upcoming beta release (`0.4.0b1`).
1 parent e552f5f commit 67af771

File tree

1 file changed

+110
-4
lines changed

1 file changed

+110
-4
lines changed

example/desktop_app.py

Lines changed: 110 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,138 @@
11
# [developer-docs.sdk.python.sdk-import]-start
22
from onepassword import *
33
import asyncio
4+
import os
45

56

67
async 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

31137
if __name__ == "__main__":
32-
asyncio.run(main())
138+
asyncio.run(main())

0 commit comments

Comments
 (0)