Skip to content

Commit 6a6558b

Browse files
committed
added vault crudl and group permissions management to example files
1 parent 5611833 commit 6a6558b

2 files changed

Lines changed: 179 additions & 185 deletions

File tree

example/desktop_app.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ async def showcase_group_permission_operations(client: Client, vault_id: str, gr
114114
GroupVaultAccess(
115115
vault_id=vault_id,
116116
group_id=group_id,
117-
permissions=MANAGE_VAULT,
117+
permissions= READ_ITEMS | CREATE_ITEMS | UPDATE_ITEMS,
118118
)
119119
],
120120
)
@@ -135,9 +135,6 @@ async def showcase_group_permission_operations(client: Client, vault_id: str, gr
135135
print(group)
136136
# [developer-docs.sdk.python.get-group]-end
137137

138-
# Delete temporary vault
139-
await client.vaults.delete(vault_id)
140-
141138
async def showcase_batch_item_operations(client: Client, vault_id: str):
142139
# [developer-docs.sdk.python.batch-create-items]-start
143140
items_to_create = []

example/example.py

Lines changed: 178 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -24,192 +24,189 @@ async def main():
2424
)
2525
# [developer-docs.sdk.python.client-initialization]-end
2626

27-
# # [developer-docs.sdk.python.list-vaults]-start
28-
# vaults = await client.vaults.list()
29-
# for vault in vaults:
30-
# print(vault)
31-
# # [developer-docs.sdk.python.list-vaults]-end
32-
33-
# # [developer-docs.sdk.python.list-items]-start
34-
# overviews = await client.items.list(vault.id)
35-
# for overview in overviews:
36-
# print(overview.title)
37-
# # [developer-docs.sdk.python.list-items]-end
38-
# # [developer-docs.sdk.python.use-item-filters]-start
39-
# archived_overviews = await client.items.list(
40-
# vault.id,
41-
# ItemListFilterByState(
42-
# content=ItemListFilterByStateInner(active=False, archived=True)
43-
# ),
44-
# )
45-
# for overview in archived_overviews:
46-
# print(overview.title)
47-
# # [developer-docs.sdk.python.use-item-filters]-end
48-
# # [developer-docs.sdk.python.validate-secret-reference]-start
49-
# # Validate secret reference to ensure no syntax errors
50-
# try:
51-
# Secrets.validate_secret_reference("op://vault/item/field")
52-
# except Exception as error:
53-
# print(error)
54-
# # [developer-docs.sdk.python.validate-secret-reference]-end
55-
56-
# vault_id = os.getenv("OP_VAULT_ID")
57-
# if vault_id is None:
58-
# raise Exception("OP_VAULT_ID environment variable is not set")
59-
60-
# # [developer-docs.sdk.python.create-item]-start
61-
# # Create an Item and add it to your vault.
62-
# to_create = ItemCreateParams(
63-
# title="MyName",
64-
# category=ItemCategory.LOGIN,
65-
# vault_id=vault_id,
66-
# fields=[
67-
# ItemField(
68-
# id="username",
69-
# title="username",
70-
# field_type=ItemFieldType.TEXT,
71-
# value="mynameisjeff",
72-
# ),
73-
# ItemField(
74-
# id="password",
75-
# title="password",
76-
# field_type=ItemFieldType.CONCEALED,
77-
# value="jeff",
78-
# ),
79-
# ItemField(
80-
# id="onetimepassword",
81-
# title="one-time-password",
82-
# field_type=ItemFieldType.TOTP,
83-
# section_id="totpsection",
84-
# value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
85-
# ),
86-
# ],
87-
# sections=[
88-
# ItemSection(id="", title=""),
89-
# ItemSection(id="totpsection", title=""),
90-
# ],
91-
# tags=["test tag 1", "test tag 2"],
92-
# websites=[
93-
# Website(
94-
# label="my custom website",
95-
# url="https://example.com",
96-
# autofill_behavior=AutofillBehavior.NEVER,
97-
# )
98-
# ],
99-
# )
100-
# created_item = await client.items.create(to_create)
101-
# # [developer-docs.sdk.python.create-item]-end
102-
103-
# print(dict(created_item))
104-
105-
# # [developer-docs.sdk.python.resolve-secret]-start
106-
# # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
107-
# value = await client.secrets.resolve(
108-
# f"op://{created_item.vault_id}/{created_item.id}/username"
109-
# )
110-
# print(value)
111-
# # [developer-docs.sdk.python.resolve-secret]-end
112-
113-
# # [developer-docs.sdk.python.resolve-totp-code]-start
114-
# # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
115-
# code = await client.secrets.resolve(
116-
# f"op://{created_item.vault_id}/{created_item.id}/TOTP_onetimepassword?attribute=totp"
117-
# )
118-
# print(code)
119-
# # [developer-docs.sdk.python.resolve-totp-code]-end
120-
# await resolve_all_secrets(
121-
# client, created_item.vault_id, created_item.id, "username", "password"
122-
# )
123-
# # [developer-docs.sdk.python.get-totp-item-crud]-start
124-
# # Fetch a totp code from the item
125-
# for f in created_item.fields:
126-
# if f.field_type == "Totp":
127-
# if f.details.content.error_message is not None:
128-
# print(f.details.content.error_message)
129-
# else:
130-
# print(f.details.content.code)
131-
# # [developer-docs.sdk.python.get-totp-item-crud]-end
132-
133-
# # [developer-docs.sdk.python.get-item]-start
134-
# # Retrieve an item from your vault.
135-
# item = await client.items.get(created_item.vault_id, created_item.id)
136-
# # [developer-docs.sdk.python.get-item]-end
137-
138-
# print(dict(item))
139-
140-
# # [developer-docs.sdk.python.update-item]-start
141-
# # Update a field in your item
142-
# item.fields[0].value = "new_value"
143-
# item.websites.append(
144-
# Website(
145-
# label="my custom website 2",
146-
# url="https://example2.com",
147-
# autofill_behavior=AutofillBehavior.NEVER,
148-
# ),
149-
# )
150-
# updated_item = await client.items.put(item)
151-
# # [developer-docs.sdk.python.update-item]-end
152-
153-
# print(dict(updated_item))
154-
155-
# # [developer-docs.sdk.python.generate-pin-password]-start
156-
# pin_password = Secrets.generate_password(
157-
# PasswordRecipePin(parameters=PasswordRecipePinInner(length=8))
158-
# )
159-
# print(pin_password)
160-
# # [developer-docs.sdk.python.generate-pin-password]-end
161-
162-
# # [developer-docs.sdk.python.generate-memorable-password]-start
163-
# memorable_password = Secrets.generate_password(
164-
# PasswordRecipeMemorable(
165-
# parameters=PasswordRecipeMemorableInner(
166-
# separatorType=SeparatorType.UNDERSCORES,
167-
# wordListType=WordListType.SYLLABLES,
168-
# capitalize=False,
169-
# wordCount=3,
170-
# )
171-
# ),
172-
# )
173-
# print(memorable_password)
174-
# # [developer-docs.sdk.python.generate-memorable-password]-end
175-
176-
# # [developer-docs.sdk.python.generate-random-password]-start
177-
# random_password = Secrets.generate_password(
178-
# PasswordRecipeRandom(
179-
# parameters=PasswordRecipeRandomInner(
180-
# length=10,
181-
# includeDigits=False,
182-
# includeSymbols=False,
183-
# )
184-
# ),
185-
# )
186-
# print(random_password)
187-
# # [developer-docs.sdk.python.generate-random-password]-end
188-
189-
# await share_item(client, updated_item.vault_id, updated_item.id)
190-
191-
# await create_ssh_key_item(client, vault_id)
192-
193-
# await create_and_replace_document_item(client, vault_id)
194-
195-
# await create_attach_and_delete_file_field_item(client, vault_id)
196-
197-
# await archive_item(client, updated_item.vault_id, updated_item.id)
198-
199-
# # [developer-docs.sdk.python.delete-item]-start
200-
# # Delete a item from your vault.
201-
# await client.items.delete(created_item.vault_id, updated_item.id)
202-
# # [developer-docs.sdk.python.delete-item]-end
203-
204-
# await showcase_vault_operations(client)
205-
206-
# await showcase_batch_item_operations(client, vault_id)
27+
vault_id = os.getenv("OP_VAULT_ID")
28+
if vault_id is None:
29+
raise Exception("OP_VAULT_ID environment variable is not set")
30+
31+
# [developer-docs.sdk.python.list-items]-start
32+
overviews = await client.items.list(vault_id)
33+
for overview in overviews:
34+
print(overview.title)
35+
# [developer-docs.sdk.python.list-items]-end
36+
37+
# [developer-docs.sdk.python.use-item-filters]-start
38+
archived_overviews = await client.items.list(
39+
vault_id,
40+
ItemListFilterByState(
41+
content=ItemListFilterByStateInner(active=False, archived=True)
42+
),
43+
)
44+
for overview in archived_overviews:
45+
print(overview.title)
46+
# [developer-docs.sdk.python.use-item-filters]-end
47+
48+
# [developer-docs.sdk.python.validate-secret-reference]-start
49+
50+
# Validate secret reference to ensure no syntax errors
51+
try:
52+
Secrets.validate_secret_reference("op://vault/item/field")
53+
except Exception as error:
54+
print(error)
55+
# [developer-docs.sdk.python.validate-secret-reference]-end
56+
57+
# [developer-docs.sdk.python.create-item]-start
58+
# Create an Item and add it to your vault.
59+
to_create = ItemCreateParams(
60+
title="MyName",
61+
category=ItemCategory.LOGIN,
62+
vault_id=vault_id,
63+
fields=[
64+
ItemField(
65+
id="username",
66+
title="username",
67+
field_type=ItemFieldType.TEXT,
68+
value="mynameisjeff",
69+
),
70+
ItemField(
71+
id="password",
72+
title="password",
73+
field_type=ItemFieldType.CONCEALED,
74+
value="jeff",
75+
),
76+
ItemField(
77+
id="onetimepassword",
78+
title="one-time-password",
79+
field_type=ItemFieldType.TOTP,
80+
section_id="totpsection",
81+
value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
82+
),
83+
],
84+
sections=[
85+
ItemSection(id="", title=""),
86+
ItemSection(id="totpsection", title=""),
87+
],
88+
tags=["test tag 1", "test tag 2"],
89+
websites=[
90+
Website(
91+
label="my custom website",
92+
url="https://example.com",
93+
autofill_behavior=AutofillBehavior.NEVER,
94+
)
95+
],
96+
)
97+
created_item = await client.items.create(to_create)
98+
# [developer-docs.sdk.python.create-item]-end
99+
100+
print(dict(created_item))
101+
102+
# [developer-docs.sdk.python.resolve-secret]-start
103+
# Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
104+
value = await client.secrets.resolve(
105+
f"op://{created_item.vault_id}/{created_item.id}/username"
106+
)
107+
print(value)
108+
# [developer-docs.sdk.python.resolve-secret]-end
109+
110+
# [developer-docs.sdk.python.resolve-totp-code]-start
111+
# Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
112+
code = await client.secrets.resolve(
113+
f"op://{created_item.vault_id}/{created_item.id}/TOTP_onetimepassword?attribute=totp"
114+
)
115+
print(code)
116+
# [developer-docs.sdk.python.resolve-totp-code]-end
117+
await resolve_all_secrets(
118+
client, created_item.vault_id, created_item.id, "username", "password"
119+
)
120+
# [developer-docs.sdk.python.get-totp-item-crud]-start
121+
# Fetch a totp code from the item
122+
for f in created_item.fields:
123+
if f.field_type == "Totp":
124+
if f.details.content.error_message is not None:
125+
print(f.details.content.error_message)
126+
else:
127+
print(f.details.content.code)
128+
# [developer-docs.sdk.python.get-totp-item-crud]-end
129+
130+
# [developer-docs.sdk.python.get-item]-start
131+
# Retrieve an item from your vault.
132+
item = await client.items.get(created_item.vault_id, created_item.id)
133+
# [developer-docs.sdk.python.get-item]-end
134+
135+
print(dict(item))
136+
137+
# [developer-docs.sdk.python.update-item]-start
138+
# Update a field in your item
139+
item.fields[0].value = "new_value"
140+
item.websites.append(
141+
Website(
142+
label="my custom website 2",
143+
url="https://example2.com",
144+
autofill_behavior=AutofillBehavior.NEVER,
145+
),
146+
)
147+
updated_item = await client.items.put(item)
148+
# [developer-docs.sdk.python.update-item]-end
149+
150+
print(dict(updated_item))
151+
152+
# [developer-docs.sdk.python.generate-pin-password]-start
153+
pin_password = Secrets.generate_password(
154+
PasswordRecipePin(parameters=PasswordRecipePinInner(length=8))
155+
)
156+
print(pin_password)
157+
# [developer-docs.sdk.python.generate-pin-password]-end
158+
159+
# [developer-docs.sdk.python.generate-memorable-password]-start
160+
memorable_password = Secrets.generate_password(
161+
PasswordRecipeMemorable(
162+
parameters=PasswordRecipeMemorableInner(
163+
separatorType=SeparatorType.UNDERSCORES,
164+
wordListType=WordListType.SYLLABLES,
165+
capitalize=False,
166+
wordCount=3,
167+
)
168+
),
169+
)
170+
print(memorable_password)
171+
# [developer-docs.sdk.python.generate-memorable-password]-end
172+
173+
# [developer-docs.sdk.python.generate-random-password]-start
174+
random_password = Secrets.generate_password(
175+
PasswordRecipeRandom(
176+
parameters=PasswordRecipeRandomInner(
177+
length=10,
178+
includeDigits=False,
179+
includeSymbols=False,
180+
)
181+
),
182+
)
183+
print(random_password)
184+
# [developer-docs.sdk.python.generate-random-password]-end
185+
186+
await share_item(client, updated_item.vault_id, updated_item.id)
187+
188+
await create_ssh_key_item(client, vault_id)
189+
190+
await create_and_replace_document_item(client, vault_id)
191+
192+
await create_attach_and_delete_file_field_item(client, vault_id)
193+
194+
await archive_item(client, updated_item.vault_id, updated_item.id)
195+
196+
# [developer-docs.sdk.python.delete-item]-start
197+
# Delete a item from your vault.
198+
await client.items.delete(created_item.vault_id, updated_item.id)
199+
# [developer-docs.sdk.python.delete-item]-end
200+
201+
await showcase_vault_operations(client)
202+
203+
await showcase_batch_item_operations(client, vault_id)
207204

208205
group_id = os.environ.get("OP_GROUP_ID")
209206
if group_id is None:
210207
raise Exception("OP_GROUP_ID is required")
211208

212-
await showcase_group_permission_operations(client, "", group_id)
209+
await showcase_group_permission_operations(client, vault_id, group_id)
213210

214211
async def showcase_vault_operations(client: Client):
215212
# [developer-docs.sdk.python.create-vault]-start

0 commit comments

Comments
 (0)