saltext.bitwarden


Namesaltext.bitwarden JSON
Version 0.0.1b15 PyPI version JSON
download
home_pagehttps://gitlab.com/ggiesen/salt-ext-bitwarden
SummarySalt Extension Modules for Bitwarden
upload_time2023-10-19 19:24:26
maintainer
docs_urlNone
authorGary T. Giesen
requires_python>=3.8
licenseApache Software License
keywords salt-extension
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # bitwarden

Salt Extension Modules for Bitwarden

## Introduction
This extension for [Salt](https://saltproject.io) enables Salt to access and administer a
[Bitwarden](https://bitwarden.com/) vault/instance.

This project aims to eventually have 100% coverage of the
[Bitwarden Vault Management API](https://bitwarden.com/help/vault-management-api/) and the
[Bitwarden Public (Organization Management) API](https://bitwarden.com/help/api/). This extension
is changing quickly, and while attempts will be made to not make breaking changes, the current
focus is on functionality rather than syntax/API stability.

## Requirements
This extension requires the `bw` Bitwarden CLI utility to be installed for functions that depend
on the `Bitwarden Vault Management API`. Installation instructions are available
[here](https://bitwarden.com/help/cli/#download-and-install). It also has dependencies on the
[pyhumps](https://github.com/nficano/humps), [requests](https://github.com/psf/requests), and
[validators](https://github.com/python-validators/validators) python packages, which are automatically installed.

## Installation
An example state file for installing and configuring this extension on EL8 (RHEL, AlmaLinux, Rocky
Linux, Oracle Linux, Scientific Linux, etc.):

```yaml
# Install the NodeSource EL8 repo to get Node.js
cmd_nodesource-el8.repo:
  cmd.run:
    - name: curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
    - creates:
        - /etc/yum.repos.d/nodesource-el8.repo

# Bitwarden CLI depends on Node.js
pkg_nodejs:
  pkg.installed:
    - name: nodejs
    - require:
        - cmd_nodesource-el8.repo

# Install the Bitwarden CLI client (which includes the Vault Management REST API
# server)
npm_bitwarden_cli:
  npm.installed:
    - name: '@bitwarden/cli'
    - require:
        - pkg_nodejs

# Install the Bitwarden Salt Extension
pip_saltext.bitwarden:
  pip.installed:
    - name: saltext.bitwarden
    - require:
        - npm_bitwarden_cli

# Configure server options for Bitwarden REST API Server
file_/etc/sysconfig/bw-api:
  file.managed:
    - name: /etc/sysconfig/bw-api
    - user: root
    - group: root
    - mode: "0644"
    - contents: |
        # Command-line options for bw serve
        BITWARDENCLI_APPDATA_DIR=/etc/salt/.bitwarden
        OPTIONS="--hostname localhost --port 8087"
    - require:
        - pip_saltext.bitwarden
    - watch_in:
        - service_bw-api

# Create a systemd service unit file since one is not included in the package.
# Reloads systemctl if the file changes.
file_/etc/systemd/system/bw-api.service:
  file.managed:
    - name: /etc/systemd/system/bw-api.service
    - user: root
    - group: root
    - mode: "0644"
    - contents: |
        [Unit]
        Description=Bitwarden Vault Management API
        Documentation=https://bitwarden.com/help/cli/
        After=network.target

        [Service]
        EnvironmentFile=-/etc/sysconfig/bw-api
        User=salt
        Group=salt
        Type=simple
        WorkingDirectory=~
        ExecStart=/bin/bw serve $OPTIONS
        Restart=always

        [Install]
        WantedBy=multi-user.target
    - require:
        - file_/etc/sysconfig/bw-api
    - watch_in:
        - service_bw-api

# You must manually create files in /etc/salt/master.d/bitwarden.conf or
# /etc/salt/minion.d/bitwarden.conf (or both) depending on the context, with the following contents
# (substituting values as appropriate):
#
#  bitwarden:
#    driver: bitwarden
#    cli_path: /bin/bw
#    cli_conf_dir: /etc/salt/.bitwarden
#    cli_runas: salt
#    vault_url: https://bitwarden.com
#    email: user@example.com
#    password: CorrectHorseBatteryStaple
#    vault_api_url: http://localhost:8087
#    public_api_url: https://api.bitwarden.com
#    client_id: 25fa6fc6-deeb-4b42-a279-5e680b51aa58
#    client_secret: AofieD0oexiex1mie3eigi9oojooF3
#    org_client_id: organization.d0e19db4-38aa-4284-be3d-e80cff306e6c
#    org_client_secret: aWMk2MBf4NWXfaevrKyxa3uqNXYVQy

# Used for runner and SDB modules
file_/etc/salt/master.d/bitwarden.conf:
  file.exists:
    - name: /etc/salt/master.d/bitwarden.conf
    - require:
        - pip_saltext.bitwarden

# Used for execution, SDB and state modules
file_/etc/salt/minion.d/bitwarden.conf:
  file.exists:
    - name: /etc/salt/minion.d/bitwarden.conf
    - require:
        - pip_saltext.bitwarden

# Make sure the Bitwarden vault is logged in before we start the REST API server
# service otherwise the service will refuse to start
bitwarden_logged_in:
  bitwarden.logged_in:
    - name: logged_in
    - use_cli: True
    - profile: bitwarden

# Run the Bitwarden Vault Management REST API server `bw serve`
service_bw-api:
  service.running:
    - name: bw-api
    - enable: True
    - init_delay: 10
    - require:
        - bitwarden_logged_in

# State to reload systemctl
service_systemctl_reload:
  module.run:
    - name: service.systemctl_reload
    - onchanges:
        - file_/etc/systemd/system/bw-api.service

# Use firewalld to protect the Bitwarden Vault Management REST API server
service_firewalld:
  service.running:
    - name: firewalld
    - enable: True
    - reload: True

# Lock down access to the Bitwarden Vault Management REST API to only the root user (uid 0) using
# firewalld because once the vault is unlocked, access is completely unauthenticated.
#
# See https://github.com/bitwarden/clients/issues/3932
#
# We directly manage the direct rules configuration file because the Salt firewalld state module
# doesn't support direct rules.
file_/etc/firewalld/direct.xml:
  file.managed:
    - name: /etc/firewalld/direct.xml
    - user: root
    - group: root
    - mode: "0644"
    - contents: |
        <?xml version="1.0" encoding="utf-8"?>
        <!--
        ########################################################################
        #                                                                      #
        #              THIS FILE IS MANAGED BY SALT - DO NOT EDIT              #
        #                                                                      #
        # The contents of this file are managed by Salt. Any changes to this   #
        # file may be overwritten automatically and without warning.           #
        ########################################################################
        -->
        <direct>
          <rule ipv="ipv4" table="filter" chain="OUTPUT" priority="0">-o lo -p tcp --dport 8087 -m owner --uid-owner root -j ACCEPT</rule>
          <rule ipv="ipv4" table="filter" chain="OUTPUT" priority="0">-o lo -p tcp --dport 8087 -m owner --uid-owner salt -j ACCEPT</rule>
          <rule ipv="ipv4" table="filter" chain="OUTPUT" priority="1">-o lo -p tcp --dport 8087 -j REJECT</rule>
          <rule ipv="ipv6" table="filter" chain="OUTPUT" priority="0">-o lo -p tcp --dport 8087 -m owner --uid-owner root -j ACCEPT</rule>
          <rule ipv="ipv6" table="filter" chain="OUTPUT" priority="0">-o lo -p tcp --dport 8087 -m owner --uid-owner salt -j ACCEPT</rule>
          <rule ipv="ipv6" table="filter" chain="OUTPUT" priority="1">-o lo -p tcp --dport 8087 -j REJECT</rule>
        </direct>
    - watch_in:
        - service_firewalld
```

The configuration files required vary depending on which module you wish to use:

| module type | file type      |
|-------------|----------------|
| execution   | minion         |
| runner      | master         |
| sdb         | master, minion |
| state       | minion         |

## Usage

This extension currently provides only read-only access to Bitwarden vaults using the `sdb` module,
with other modules primarily for vault management such as logging in and unlocking the vault.

```bash
# SDB via runner module
salt-run sdb.get 'sdb://bitwarden/by-uuid/2fcd790a-70f7-43a2-b265-08a763873980/password'
CorrectHorseBatteryStaple
```

```bash
# SDB via execution module
salt-call sdb.get 'sdb://bitwarden/by-uuid/2fcd790a-70f7-43a2-b265-08a763873980/password'
local:
    CorrectHorseBatteryStaple
```

As always, you can also reference SDB modules in your pillar files:

```yaml
example_pillar:
  some_password: {{ salt['sdb.get']('sdb://bitwarden/by-uuid/2fcd790a-70f7-43a2-b265-08a763873980/password') }}
```

The format of the SDB URI is as follows:

`sdb://<profile>/by-uuid/<uuid>/<object>`

Where `<profile>` is the profile defined in the master or minion configuration
file, `<uuid>` is the UUID of the item, and `<object>` is one of:

- name
- username
- password
- totp
- notes
- creation_date
- revision_date
- deleted_date
- password_revision_date

Additionally, password history can be retrieved with the following SDB URI
format:

`sdb://<profile>/by-uuid/<uuid>/password_history/by-index/<index>`

Where ``<profile>`` is the profile defined in the master or minion configuration
file, ``<uuid>`` is the UUID of the item, and ``index`` is a non-negative
integer specifying which password to retrieve from the history (0 being the
current password, 1 being the previous password, and so forth).

Lastly, custom fields can be retrieved with the following SDB URI format:

`sdb://<profile>/by-uuid/<uuid>/fields/by-name/<field_name>/<object>`

Where `<profile>` is the profile defined in the master or minion configuration
file, `<uuid>` is the UUID of the item, `<field_name>` is the name of
custom field, and object is one of:

- value
- type
- linked_id

Note that the custom field name must be unique within an item.
Bitwarden does not enforce unique custom field names, so that is left up to the
user.

The UUID of an item can be found using the Bitwarden CLI:

```bash
bw list items --search "Google Account" --pretty
[
  {
    "object": "item",
    "id": "2fa63ad5-e4e4-43d4-a089-3fadcf455be2",
    "organizationId": null,
    "folderId": null,
    "type": 1,
    "reprompt": 0,
    "name": "Google Account",
    "notes": null,
    "favorite": false,
    "login": {
      "uris": [
        {
          "match": null,
          "uri": "https://accounts.google.com"
        }
      ],
      "username": "user@example.com",
      "password": "aTjSsJvhQY5E24",
      "totp": "AEM1HEESIEV8YAED8THUBEHOOW",
      "passwordRevisionDate": null
    },
    "collectionIds": [],
    "revisionDate": "1970-01-01T00:00:00.000Z"
  }
]
```

## Docs
Module documentation is available at [https://ggiesen.gitlab.io/salt-ext-bitwarden](https://ggiesen.gitlab.io/salt-ext-bitwarden).

## Bugs
Bugs can be reported using the [Issue Tracker](https://gitlab.com/ggiesen/salt-ext-bitwarden/-/issues).

## Contributing
All contributions are welcome and very much appreciated. Contributing guide coming soon.
Contributing can take many forms, including:

 - Reporting bugs
 - Feature requests
 - Code submissions (bug fixes/new features/improve code quality)
 - Writing tests
 - Writing documentation
 - Detailing use cases
 - Writing blog posts

## License
This project is licensed under the Apache Software License. See `LICENSE` for the licence text.

            

Raw data

            {
    "_id": null,
    "home_page": "https://gitlab.com/ggiesen/salt-ext-bitwarden",
    "name": "saltext.bitwarden",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "salt-extension",
    "author": "Gary T. Giesen",
    "author_email": "ggiesen@giesen.me",
    "download_url": "https://files.pythonhosted.org/packages/67/8e/f3c88fdc7cdd91ff1e93e3aecd88e849ace7dc6c9ed25040199122f8272b/saltext.bitwarden-0.0.1b15.tar.gz",
    "platform": "any",
    "description": "# bitwarden\n\nSalt Extension Modules for Bitwarden\n\n## Introduction\nThis extension for [Salt](https://saltproject.io) enables Salt to access and administer a\n[Bitwarden](https://bitwarden.com/) vault/instance.\n\nThis project aims to eventually have 100% coverage of the\n[Bitwarden Vault Management API](https://bitwarden.com/help/vault-management-api/) and the\n[Bitwarden Public (Organization Management) API](https://bitwarden.com/help/api/). This extension\nis changing quickly, and while attempts will be made to not make breaking changes, the current\nfocus is on functionality rather than syntax/API stability.\n\n## Requirements\nThis extension requires the `bw` Bitwarden CLI utility to be installed for functions that depend\non the `Bitwarden Vault Management API`. Installation instructions are available\n[here](https://bitwarden.com/help/cli/#download-and-install). It also has dependencies on the\n[pyhumps](https://github.com/nficano/humps), [requests](https://github.com/psf/requests), and\n[validators](https://github.com/python-validators/validators) python packages, which are automatically installed.\n\n## Installation\nAn example state file for installing and configuring this extension on EL8 (RHEL, AlmaLinux, Rocky\nLinux, Oracle Linux, Scientific Linux, etc.):\n\n```yaml\n# Install the NodeSource EL8 repo to get Node.js\ncmd_nodesource-el8.repo:\n  cmd.run:\n    - name: curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -\n    - creates:\n        - /etc/yum.repos.d/nodesource-el8.repo\n\n# Bitwarden CLI depends on Node.js\npkg_nodejs:\n  pkg.installed:\n    - name: nodejs\n    - require:\n        - cmd_nodesource-el8.repo\n\n# Install the Bitwarden CLI client (which includes the Vault Management REST API\n# server)\nnpm_bitwarden_cli:\n  npm.installed:\n    - name: '@bitwarden/cli'\n    - require:\n        - pkg_nodejs\n\n# Install the Bitwarden Salt Extension\npip_saltext.bitwarden:\n  pip.installed:\n    - name: saltext.bitwarden\n    - require:\n        - npm_bitwarden_cli\n\n# Configure server options for Bitwarden REST API Server\nfile_/etc/sysconfig/bw-api:\n  file.managed:\n    - name: /etc/sysconfig/bw-api\n    - user: root\n    - group: root\n    - mode: \"0644\"\n    - contents: |\n        # Command-line options for bw serve\n        BITWARDENCLI_APPDATA_DIR=/etc/salt/.bitwarden\n        OPTIONS=\"--hostname localhost --port 8087\"\n    - require:\n        - pip_saltext.bitwarden\n    - watch_in:\n        - service_bw-api\n\n# Create a systemd service unit file since one is not included in the package.\n# Reloads systemctl if the file changes.\nfile_/etc/systemd/system/bw-api.service:\n  file.managed:\n    - name: /etc/systemd/system/bw-api.service\n    - user: root\n    - group: root\n    - mode: \"0644\"\n    - contents: |\n        [Unit]\n        Description=Bitwarden Vault Management API\n        Documentation=https://bitwarden.com/help/cli/\n        After=network.target\n\n        [Service]\n        EnvironmentFile=-/etc/sysconfig/bw-api\n        User=salt\n        Group=salt\n        Type=simple\n        WorkingDirectory=~\n        ExecStart=/bin/bw serve $OPTIONS\n        Restart=always\n\n        [Install]\n        WantedBy=multi-user.target\n    - require:\n        - file_/etc/sysconfig/bw-api\n    - watch_in:\n        - service_bw-api\n\n# You must manually create files in /etc/salt/master.d/bitwarden.conf or\n# /etc/salt/minion.d/bitwarden.conf (or both) depending on the context, with the following contents\n# (substituting values as appropriate):\n#\n#  bitwarden:\n#    driver: bitwarden\n#    cli_path: /bin/bw\n#    cli_conf_dir: /etc/salt/.bitwarden\n#    cli_runas: salt\n#    vault_url: https://bitwarden.com\n#    email: user@example.com\n#    password: CorrectHorseBatteryStaple\n#    vault_api_url: http://localhost:8087\n#    public_api_url: https://api.bitwarden.com\n#    client_id: 25fa6fc6-deeb-4b42-a279-5e680b51aa58\n#    client_secret: AofieD0oexiex1mie3eigi9oojooF3\n#    org_client_id: organization.d0e19db4-38aa-4284-be3d-e80cff306e6c\n#    org_client_secret: aWMk2MBf4NWXfaevrKyxa3uqNXYVQy\n\n# Used for runner and SDB modules\nfile_/etc/salt/master.d/bitwarden.conf:\n  file.exists:\n    - name: /etc/salt/master.d/bitwarden.conf\n    - require:\n        - pip_saltext.bitwarden\n\n# Used for execution, SDB and state modules\nfile_/etc/salt/minion.d/bitwarden.conf:\n  file.exists:\n    - name: /etc/salt/minion.d/bitwarden.conf\n    - require:\n        - pip_saltext.bitwarden\n\n# Make sure the Bitwarden vault is logged in before we start the REST API server\n# service otherwise the service will refuse to start\nbitwarden_logged_in:\n  bitwarden.logged_in:\n    - name: logged_in\n    - use_cli: True\n    - profile: bitwarden\n\n# Run the Bitwarden Vault Management REST API server `bw serve`\nservice_bw-api:\n  service.running:\n    - name: bw-api\n    - enable: True\n    - init_delay: 10\n    - require:\n        - bitwarden_logged_in\n\n# State to reload systemctl\nservice_systemctl_reload:\n  module.run:\n    - name: service.systemctl_reload\n    - onchanges:\n        - file_/etc/systemd/system/bw-api.service\n\n# Use firewalld to protect the Bitwarden Vault Management REST API server\nservice_firewalld:\n  service.running:\n    - name: firewalld\n    - enable: True\n    - reload: True\n\n# Lock down access to the Bitwarden Vault Management REST API to only the root user (uid 0) using\n# firewalld because once the vault is unlocked, access is completely unauthenticated.\n#\n# See https://github.com/bitwarden/clients/issues/3932\n#\n# We directly manage the direct rules configuration file because the Salt firewalld state module\n# doesn't support direct rules.\nfile_/etc/firewalld/direct.xml:\n  file.managed:\n    - name: /etc/firewalld/direct.xml\n    - user: root\n    - group: root\n    - mode: \"0644\"\n    - contents: |\n        <?xml version=\"1.0\" encoding=\"utf-8\"?>\n        <!--\n        ########################################################################\n        #                                                                      #\n        #              THIS FILE IS MANAGED BY SALT - DO NOT EDIT              #\n        #                                                                      #\n        # The contents of this file are managed by Salt. Any changes to this   #\n        # file may be overwritten automatically and without warning.           #\n        ########################################################################\n        -->\n        <direct>\n          <rule ipv=\"ipv4\" table=\"filter\" chain=\"OUTPUT\" priority=\"0\">-o lo -p tcp --dport 8087 -m owner --uid-owner root -j ACCEPT</rule>\n          <rule ipv=\"ipv4\" table=\"filter\" chain=\"OUTPUT\" priority=\"0\">-o lo -p tcp --dport 8087 -m owner --uid-owner salt -j ACCEPT</rule>\n          <rule ipv=\"ipv4\" table=\"filter\" chain=\"OUTPUT\" priority=\"1\">-o lo -p tcp --dport 8087 -j REJECT</rule>\n          <rule ipv=\"ipv6\" table=\"filter\" chain=\"OUTPUT\" priority=\"0\">-o lo -p tcp --dport 8087 -m owner --uid-owner root -j ACCEPT</rule>\n          <rule ipv=\"ipv6\" table=\"filter\" chain=\"OUTPUT\" priority=\"0\">-o lo -p tcp --dport 8087 -m owner --uid-owner salt -j ACCEPT</rule>\n          <rule ipv=\"ipv6\" table=\"filter\" chain=\"OUTPUT\" priority=\"1\">-o lo -p tcp --dport 8087 -j REJECT</rule>\n        </direct>\n    - watch_in:\n        - service_firewalld\n```\n\nThe configuration files required vary depending on which module you wish to use:\n\n| module type | file type      |\n|-------------|----------------|\n| execution   | minion         |\n| runner      | master         |\n| sdb         | master, minion |\n| state       | minion         |\n\n## Usage\n\nThis extension currently provides only read-only access to Bitwarden vaults using the `sdb` module,\nwith other modules primarily for vault management such as logging in and unlocking the vault.\n\n```bash\n# SDB via runner module\nsalt-run sdb.get 'sdb://bitwarden/by-uuid/2fcd790a-70f7-43a2-b265-08a763873980/password'\nCorrectHorseBatteryStaple\n```\n\n```bash\n# SDB via execution module\nsalt-call sdb.get 'sdb://bitwarden/by-uuid/2fcd790a-70f7-43a2-b265-08a763873980/password'\nlocal:\n    CorrectHorseBatteryStaple\n```\n\nAs always, you can also reference SDB modules in your pillar files:\n\n```yaml\nexample_pillar:\n  some_password: {{ salt['sdb.get']('sdb://bitwarden/by-uuid/2fcd790a-70f7-43a2-b265-08a763873980/password') }}\n```\n\nThe format of the SDB URI is as follows:\n\n`sdb://<profile>/by-uuid/<uuid>/<object>`\n\nWhere `<profile>` is the profile defined in the master or minion configuration\nfile, `<uuid>` is the UUID of the item, and `<object>` is one of:\n\n- name\n- username\n- password\n- totp\n- notes\n- creation_date\n- revision_date\n- deleted_date\n- password_revision_date\n\nAdditionally, password history can be retrieved with the following SDB URI\nformat:\n\n`sdb://<profile>/by-uuid/<uuid>/password_history/by-index/<index>`\n\nWhere ``<profile>`` is the profile defined in the master or minion configuration\nfile, ``<uuid>`` is the UUID of the item, and ``index`` is a non-negative\ninteger specifying which password to retrieve from the history (0 being the\ncurrent password, 1 being the previous password, and so forth).\n\nLastly, custom fields can be retrieved with the following SDB URI format:\n\n`sdb://<profile>/by-uuid/<uuid>/fields/by-name/<field_name>/<object>`\n\nWhere `<profile>` is the profile defined in the master or minion configuration\nfile, `<uuid>` is the UUID of the item, `<field_name>` is the name of\ncustom field, and object is one of:\n\n- value\n- type\n- linked_id\n\nNote that the custom field name must be unique within an item.\nBitwarden does not enforce unique custom field names, so that is left up to the\nuser.\n\nThe UUID of an item can be found using the Bitwarden CLI:\n\n```bash\nbw list items --search \"Google Account\" --pretty\n[\n  {\n    \"object\": \"item\",\n    \"id\": \"2fa63ad5-e4e4-43d4-a089-3fadcf455be2\",\n    \"organizationId\": null,\n    \"folderId\": null,\n    \"type\": 1,\n    \"reprompt\": 0,\n    \"name\": \"Google Account\",\n    \"notes\": null,\n    \"favorite\": false,\n    \"login\": {\n      \"uris\": [\n        {\n          \"match\": null,\n          \"uri\": \"https://accounts.google.com\"\n        }\n      ],\n      \"username\": \"user@example.com\",\n      \"password\": \"aTjSsJvhQY5E24\",\n      \"totp\": \"AEM1HEESIEV8YAED8THUBEHOOW\",\n      \"passwordRevisionDate\": null\n    },\n    \"collectionIds\": [],\n    \"revisionDate\": \"1970-01-01T00:00:00.000Z\"\n  }\n]\n```\n\n## Docs\nModule documentation is available at [https://ggiesen.gitlab.io/salt-ext-bitwarden](https://ggiesen.gitlab.io/salt-ext-bitwarden).\n\n## Bugs\nBugs can be reported using the [Issue Tracker](https://gitlab.com/ggiesen/salt-ext-bitwarden/-/issues).\n\n## Contributing\nAll contributions are welcome and very much appreciated. Contributing guide coming soon.\nContributing can take many forms, including:\n\n - Reporting bugs\n - Feature requests\n - Code submissions (bug fixes/new features/improve code quality)\n - Writing tests\n - Writing documentation\n - Detailing use cases\n - Writing blog posts\n\n## License\nThis project is licensed under the Apache Software License. See `LICENSE` for the licence text.\n",
    "bugtrack_url": null,
    "license": "Apache Software License",
    "summary": "Salt Extension Modules for Bitwarden",
    "version": "0.0.1b15",
    "project_urls": {
        "Documentation": "https://ggiesen.gitlab.io/salt-ext-bitwarden",
        "Homepage": "https://gitlab.com/ggiesen/salt-ext-bitwarden",
        "Source": "https://gitlab.com/ggiesen/salt-ext-bitwarden",
        "Tracker": "https://gitlab.com/ggiesen/salt-ext-bitwarden/-/issues"
    },
    "split_keywords": [
        "salt-extension"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5ddcb805a425f0bf7143524f1b39f81cfb1462cd6ff97b342613782a1bebce5c",
                "md5": "5481499b1750510264372da107507ec9",
                "sha256": "eb1df8d9df2fc499b51712de3bf475de3a623fcb6274ef63fafd02b11934ad25"
            },
            "downloads": -1,
            "filename": "saltext.bitwarden-0.0.1b15-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5481499b1750510264372da107507ec9",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.8",
            "size": 32872,
            "upload_time": "2023-10-19T19:24:23",
            "upload_time_iso_8601": "2023-10-19T19:24:23.929837Z",
            "url": "https://files.pythonhosted.org/packages/5d/dc/b805a425f0bf7143524f1b39f81cfb1462cd6ff97b342613782a1bebce5c/saltext.bitwarden-0.0.1b15-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "678ef3c88fdc7cdd91ff1e93e3aecd88e849ace7dc6c9ed25040199122f8272b",
                "md5": "8bd1636ad523e943d64732230f4fc518",
                "sha256": "3a14e1fda8d3aa296155f7d14aac90c837de15a18c6a195b67fbaaff19a5172d"
            },
            "downloads": -1,
            "filename": "saltext.bitwarden-0.0.1b15.tar.gz",
            "has_sig": false,
            "md5_digest": "8bd1636ad523e943d64732230f4fc518",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 28329,
            "upload_time": "2023-10-19T19:24:26",
            "upload_time_iso_8601": "2023-10-19T19:24:26.325372Z",
            "url": "https://files.pythonhosted.org/packages/67/8e/f3c88fdc7cdd91ff1e93e3aecd88e849ace7dc6c9ed25040199122f8272b/saltext.bitwarden-0.0.1b15.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-19 19:24:26",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "ggiesen",
    "gitlab_project": "salt-ext-bitwarden",
    "lcname": "saltext.bitwarden"
}
        
Elapsed time: 0.16991s