11import asyncio
22import os
33
4- # [developer-docs.sdk.python.sdk-import]-start
5- from onepassword import *
6- # [developer-docs.sdk.python.sdk-import]-end
4+ from onepassword .client import Client
5+ from onepassword .types import AutofillBehavior , ItemCategory , ItemCreateParams , ItemField , ItemFieldType , ItemSection , Website
76
8-
9- async def main ():
10- # [developer-docs.sdk.python.client-initialization]-start
11- # Gets your service account token from the OP_SERVICE_ACCOUNT_TOKEN environment variable.
7+ # Perform CRUD operations on an item
8+ async def item_crud_operation ():
129 token = os .getenv ("OP_SERVICE_ACCOUNT_TOKEN" )
13- test_vault_id = os .getenv ("CORE_SDK_TEST_VAULT_ID" )
14- test_secret_ref = os .getenv ("CORE_SDK_TEST_SECRET_REF" )
15-
16- if not token or not test_vault_id or not test_secret_ref :
17- raise ValueError ("OP_SERVICE_ACCOUNT_TOKEN, CORE_SDK_TEST_VAULT_ID, and CORE_SDK_TEST_SECRET_REF must be set." )
18-
19- # Connects to 1Password.
10+ if not token :
11+ raise ValueError ("OP_SERVICE_ACCOUNT_TOKEN must be set." )
2012 client = await Client .authenticate (
2113 auth = token ,
2214 # Set the following to your own integration name and version.
2315 integration_name = "My 1Password Integration" ,
2416 integration_version = "v1.0.0" ,
2517 )
26- # [developer-docs.sdk.python.client-initialization]-end
27-
28- # [developer-docs.sdk.python.list-vaults]-start
29- vaults = await client .vaults .list_all ()
30- async for vault in vaults :
31- print (vault .title )
32- # [developer-docs.sdk.python.list-vaults]-end
33-
34- # [developer-docs.sdk.python.list-items]-start
35- items = await client .items .list_all (vault .id )
36- async for item in items :
37- print (item .title )
38- # [developer-docs.sdk.python.list-items]-end
39-
40- # [developer-docs.sdk.python.resolve-secret]-start
41- # Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
42- value = await client .secrets .resolve (test_secret_ref )
43- print (value )
44- # [developer-docs.sdk.python.resolve-secret]-end
45-
46- # [developer-docs.sdk.python.create-item]-start
47- # Create an Item and add it to your vault.
18+ # Fill in a real vault ID below
19+ # You can find this by using the list_vaults.py example
20+ # Or using `op vault list`
21+ vault_id = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
4822 to_create = ItemCreateParams (
4923 title = "MyName" ,
50- category = "Login" ,
51- vaultId = test_vault_id ,
24+ category = ItemCategory . LOGIN ,
25+ vault_id = vault_id ,
5226 fields = [
5327 ItemField (
5428 id = "username" ,
5529 title = "username" ,
56- field_type = "Text" ,
30+ field_type = ItemFieldType . TEXT ,
5731 value = "mynameisjeff" ,
5832 ),
5933 ItemField (
6034 id = "password" ,
6135 title = "password" ,
62- field_type = "Concealed" ,
36+ field_type = ItemFieldType . CONCEALED ,
6337 value = "jeff" ,
6438 ),
6539 ItemField (
6640 id = "onetimepassword" ,
6741 title = "one-time-password" ,
68- field_type = "Totp" ,
42+ field_type = ItemFieldType . TOTP ,
6943 section_id = "totpsection" ,
7044 value = "otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password" ,
7145 ),
@@ -79,7 +53,7 @@ async def main():
7953 Website (
8054 label = "my custom website" ,
8155 url = "https://example.com" ,
82- autofill_behavior = "AnywhereOnWebsite" ,
56+ autofill_behavior = AutofillBehavior . NEVER ,
8357 )
8458 ],
8559 )
@@ -120,7 +94,7 @@ async def main():
12094 Website (
12195 label = "my custom website 2" ,
12296 url = "https://example2.com" ,
123- autofill_behavior = "Never" ,
97+ autofill_behavior = AutofillBehavior . NEVER ,
12498 ),
12599 )
126100 updated_item = await client .items .put (item )
@@ -134,4 +108,4 @@ async def main():
134108
135109
136110if __name__ == "__main__" :
137- asyncio .run (main ())
111+ asyncio .run (item_crud_operation ())
0 commit comments