Skip to content

Commit 1aed96f

Browse files
committed
update examples
1 parent 8a5af19 commit 1aed96f

File tree

1 file changed

+131
-2
lines changed

1 file changed

+131
-2
lines changed

example/example.py

Lines changed: 131 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
# [developer-docs.sdk.python.sdk-import]-start
55
from onepassword import *
66
# [developer-docs.sdk.python.sdk-import]-end
7-
7+
from cryptography.hazmat.primitives.asymmetric import rsa
8+
from cryptography.hazmat.primitives import serialization
9+
from cryptography.hazmat.primitives import hashes
10+
from cryptography.hazmat.primitives.asymmetric import padding
811

912
async def main():
1013
# [developer-docs.sdk.python.client-initialization]-start
@@ -42,7 +45,7 @@ async def main():
4245

4346
# [developer-docs.sdk.python.resolve-secret]-start
4447
# Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
45-
value = await client.secrets.resolve("op://vault/item/field")
48+
value = await client.secrets.resolve("op://tst-vault/.Login/username")
4649
print(value)
4750
# [developer-docs.sdk.python.resolve-secret]-end
4851

@@ -167,6 +170,12 @@ async def main():
167170

168171
await share_item(client, created_item.vault_id, updated_item.id)
169172

173+
await create_ssh_key_item(client)
174+
175+
await create_and_replace_document_item(client)
176+
177+
await create_attach_and_delete_file_field_item(client)
178+
170179
# [developer-docs.sdk.python.delete-item]-start
171180
# Delete a item from your vault.
172181
await client.items.delete(created_item.vault_id, updated_item.id)
@@ -217,6 +226,126 @@ async def share_item(client: Client, vault_id: str, item_id: str):
217226
print(share_link)
218227
# [developer-docs.sdk.python.item-share-create-share]-end
219228

229+
async def create_ssh_key_item(client: Client):
230+
# Generate a 2048-bit RSA private key
231+
private_key = rsa.generate_private_key(
232+
public_exponent=65537,
233+
key_size=4096,
234+
)
235+
236+
# Serialize the private key in PKCS8 format (PEM)
237+
private_pem = private_key.private_bytes(
238+
encoding=serialization.Encoding.PEM,
239+
format=serialization.PrivateFormat.PKCS8,
240+
encryption_algorithm=serialization.NoEncryption()
241+
)
242+
243+
# [developer-docs.sdk.python.create-sshkey-item]-start
244+
# Create an Item containing SSH Key and add it to your vault.
245+
to_create = ItemCreateParams(
246+
title="SSH Key Item Created With Python SDK",
247+
category=ItemCategory.SSHKEY,
248+
vault_id="7turaasywpymt3jecxoxk5roli",
249+
fields=[
250+
ItemField(
251+
id="private_key",
252+
title="private key",
253+
field_type=ItemFieldType.SSHKEY,
254+
value=private_pem,
255+
sectionId="",
256+
),
257+
],
258+
sections=[
259+
ItemSection(id="", title=""),
260+
ItemSection(id="totpsection", title=""),
261+
],
262+
)
263+
created_item = await client.items.create(to_create)
264+
# [developer-docs.sdk.python.create-sshkey-item]-end
265+
266+
print(f"Private Key is: {created_item.fields[0].value}")
267+
print(f"Public Key is: {created_item.fields[0].details.content.public_key}")
268+
print(f"Fingerprint is: {created_item.fields[0].details.content.fingerprint}")
269+
print(f"Key Type is: {created_item.fields[0].details.content.key_type}")
270+
271+
async def create_and_replace_document_item(client: Client):
272+
# [developer-docs.sdk.python.create-document-item]-start
273+
to_create = ItemCreateParams(
274+
title="Document Item Created with Python SDK",
275+
category=ItemCategory.DOCUMENT,
276+
vault_id="7turaasywpymt3jecxoxk5roli",
277+
fields=[
278+
ItemField(
279+
id="onetimepassword",
280+
title="one-time-password",
281+
field_type=ItemFieldType.TOTP,
282+
section_id="totpsection",
283+
value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
284+
),
285+
],
286+
sections=[
287+
ItemSection(id="", title=""),
288+
ItemSection(id="totpsection", title=""),
289+
],
290+
tags=["test tag 1", "test tag 2"],
291+
document=DocumentCreateParams(name="document.txt",content=bytes("Hello World","utf-8"))
292+
)
293+
created_item = await client.items.create(to_create)
294+
# [developer-docs.sdk.python.create-document-item]-end
295+
296+
# [developer-docs.sdk.python.replace-document-item]-start
297+
# Replace the document in the item
298+
replaced_item = await client.items.files.replace_document(created_item,DocumentCreateParams(name="replaced.txt",content=bytes("Hello World. This is a replaced document","utf-8")))
299+
# [developer-docs.sdk.python.replace-document-item]-end
300+
301+
# [developer-docs.sdk.python.read-document-item]-start
302+
# Read the document in the item
303+
content = await client.items.files.read(replaced_item.vault_id,replaced_item.id,replaced_item.document)
304+
# [developer-docs.sdk.python.read-document-item]-end
305+
306+
print(content)
307+
308+
async def create_attach_and_delete_file_field_item(client: Client):
309+
# [developer-docs.sdk.python.create-file-field-item]-start
310+
to_create = ItemCreateParams(
311+
title="FileField Item created with Python SDK",
312+
category=ItemCategory.LOGIN,
313+
vault_id="7turaasywpymt3jecxoxk5roli",
314+
fields=[
315+
ItemField(
316+
id="username",
317+
title="username",
318+
field_type=ItemFieldType.TEXT,
319+
value="mynameisjeff",
320+
),
321+
ItemField(
322+
id="password",
323+
title="password",
324+
field_type=ItemFieldType.CONCEALED,
325+
value="jeff",
326+
),
327+
],
328+
sections=[
329+
ItemSection(id="", title=""),
330+
],
331+
tags=["test tag 1", "test tag 2"],
332+
files=[FileCreateParams(name="file.txt",content=bytes("Hello World","utf-8"),sectionId="",fieldId="file_field")]
333+
)
334+
335+
created_item = await client.items.create(to_create)
336+
# [developer-docs.sdk.python.create-file-field-item]-end
337+
338+
# [developer-docs.sdk.python.attach-file-field-item]-start
339+
# Attach a file to the item
340+
attached_item = await client.items.files.attach(created_item,FileCreateParams(name="attach.txt",content=bytes("Hello World. This is an attached file.","utf-8"),sectionId="",fieldId="new_file_field"))
341+
# [developer-docs.sdk.python.attach-file-field-item]-end
342+
343+
# [developer-docs.sdk.python.delete-file-field-item]-start
344+
# Delete the file from the item
345+
deleted_item = await client.items.files.delete(attached_item, attached_item.files[0].section_id, attached_item.files[0].field_id)
346+
# [developer-docs.sdk.python.delete-file-field-item]-end
347+
348+
print(deleted_item.files)
220349

221350
if __name__ == "__main__":
222351
asyncio.run(main())

0 commit comments

Comments
 (0)