Forum Discussion

zcutlip's avatar
zcutlip
Dedicated Contributor
4 years ago

pyonepassword 2.0, now with item creation

I'm pleased to share the release of pyonepassword 2.0. It's seen a lot of changes in the past few months, but the biggest is probably item creation. Previously you could only query existing entries, not create new ones. Currently only Login and Server items are supported, but more are planned.

Note: if Secrets Automation is a good fit for you, you should probably stick with that. But if you're currently using op on the command line or in shell scripts, but wish you had an API around all the JSON, pyonepassword may be worth looking into.

Here are a couple of examples of item creation:

Creating a Login Item

The OP class provides a convenience method to create a login item.

```Python
op = do_signin()
username = "testuser"
password = "testpass"
url = "https://example.website"
item_name = "login 3"

result: OPLoginItem
result = op.create_login_item(item_name, username, password, url=url)

result is an actual OPLoginItem object queried from 1Password after item creation

Among other things it provides the UUID of the created object

print(f"Item UUID: {result.uuid}")
```

Creating a Login Item with Custom Sections

Rather than use the convenience method, you may add custom sections and section fields to the item template before creation.

```python
newlogin = OPLoginItemTemplate(username, password)

user-visible section title is required

section name (not user visible) is optional and will be randomly generated if not provided

section title -----v v-------- section name

section = newlogin.add_section("New Section", "new_section")

section = newlogin.add_section("New Section")

field name is not user visible

field label is user visible

section.add_field("example field name", "example value", "string", "example field label")

op.create_item(newlogin, "login 3")
```

Another noteworthy change is formal deprecation of initial sign-in. It is now expected that the user will have performed initial sign-in manually. Details about this, including rationale, can be found in the README.

More examples are in the README, and even more examples are in the examples folder in the source tree.

As usual you can install via pip:


pip3 install pyonepassword

Here's the project on GitHub:
https://github.com/zcutlip/pyonepassword

Cheers,
Zach


1Password Version: Not Provided
Extension Version: Not Provided
OS Version: Not Provided

1 Reply

  • 1P_Simon's avatar
    1P_Simon
    Icon for 1Password Team rank1Password Team

    This is awesome, Zach! Thank you for sharing. ❤️

    Have you seen that we're working on a 2.0 of the CLI? I want to make sure you see these changes early and make sure you have everything you need to port the library as well. I've just granted you access to the Early Access and https://1password.community/discussion/125399/1password-cli-2-0-early-access-%F0%9F%A5%B3. We're here to help if there's anything we can do.