diff --git a/src/onepassword/lib/aarch64/libop_uniffi_core.dylib b/src/onepassword/lib/aarch64/libop_uniffi_core.dylib index 430b993..c21605a 100755 Binary files a/src/onepassword/lib/aarch64/libop_uniffi_core.dylib and b/src/onepassword/lib/aarch64/libop_uniffi_core.dylib differ diff --git a/src/onepassword/lib/aarch64/libop_uniffi_core.so b/src/onepassword/lib/aarch64/libop_uniffi_core.so index 7f14693..fe110d5 100755 Binary files a/src/onepassword/lib/aarch64/libop_uniffi_core.so and b/src/onepassword/lib/aarch64/libop_uniffi_core.so differ diff --git a/src/onepassword/lib/x86_64/libop_uniffi_core.dylib b/src/onepassword/lib/x86_64/libop_uniffi_core.dylib index 1062d0f..49f03a3 100755 Binary files a/src/onepassword/lib/x86_64/libop_uniffi_core.dylib and b/src/onepassword/lib/x86_64/libop_uniffi_core.dylib differ diff --git a/src/onepassword/lib/x86_64/libop_uniffi_core.so b/src/onepassword/lib/x86_64/libop_uniffi_core.so index c9ec993..a15e2ad 100755 Binary files a/src/onepassword/lib/x86_64/libop_uniffi_core.so and b/src/onepassword/lib/x86_64/libop_uniffi_core.so differ diff --git a/src/onepassword/lib/x86_64/op_uniffi_core.dll b/src/onepassword/lib/x86_64/op_uniffi_core.dll index e08cb01..ef2271d 100644 Binary files a/src/onepassword/lib/x86_64/op_uniffi_core.dll and b/src/onepassword/lib/x86_64/op_uniffi_core.dll differ diff --git a/src/onepassword/secrets.py b/src/onepassword/secrets.py index ffbd7d5..f1c45475 100644 --- a/src/onepassword/secrets.py +++ b/src/onepassword/secrets.py @@ -9,7 +9,7 @@ class Secrets: """ The Secrets API includes all operations the SDK client can perform on secrets. - Use secret reference URIs to securely load secrets from 1Password: op:///[/]/ + Use secret reference URIs to securely load secrets from 1Password: `op:///[/]/` """ def __init__(self, client_id, core: Core): diff --git a/src/onepassword/types.py b/src/onepassword/types.py index e0989e7..0119cc3 100644 --- a/src/onepassword/types.py +++ b/src/onepassword/types.py @@ -242,12 +242,47 @@ class Group(BaseModel): vault_access: Optional[List[VaultAccess]] = Field(alias="vaultAccess", default=None) +class GroupAccess(BaseModel): + """ + Represents a group's access to a 1Password vault. + This is used for granting permissions + """ + + group_id: str + """ + The group's ID + """ + permissions: int + """ + The group's set of permissions for the vault + """ + + class GroupGetParams(BaseModel): model_config = ConfigDict(populate_by_name=True) vault_permissions: Optional[bool] = Field(alias="vaultPermissions", default=None) +class GroupVaultAccess(BaseModel): + """ + Represents a group's access to a 1Password vault. + """ + + vault_id: str + """ + The vault's ID + """ + group_id: str + """ + The group's ID + """ + permissions: int + """ + The group's set of permissions for the vault + """ + + class ItemCategory(str, Enum): LOGIN = "Login" SECURENOTE = "SecureNote" @@ -385,7 +420,7 @@ class AutofillBehavior(str, Enum): Controls the auto-fill behavior of a website. - For more information, visit https://support.1password.com/autofill-behavior/ + For more information, visit """ ANYWHEREONWEBSITE = "AnywhereOnWebsite" @@ -417,7 +452,7 @@ class Website(BaseModel): """ The auto-fill behavior of the website - For more information, visit https://support.1password.com/autofill-behavior/ + For more information, visit """ @@ -1493,3 +1528,19 @@ class WordListType(str, Enum): """ Three (random) letter "words" """ + + +ARCHIVE_ITEMS: int = 256 +CREATE_ITEMS: int = 128 +DELETE_ITEMS: int = 512 +EXPORT_ITEMS: int = 4194304 +IMPORT_ITEMS: int = 2097152 +MANAGE_VAULT: int = 2 +NO_ACCESS: int = 0 +PRINT_ITEMS: int = 8388608 +READ_ITEMS: int = 32 +RECOVER_VAULT: int = 1 +REVEAL_ITEM_PASSWORD: int = 16 +SEND_ITEMS: int = 1048576 +UPDATE_ITEMS: int = 64 +UPDATE_ITEM_HISTORY: int = 1024 diff --git a/src/onepassword/vaults.py b/src/onepassword/vaults.py index 09d6adf..45ff05a 100644 --- a/src/onepassword/vaults.py +++ b/src/onepassword/vaults.py @@ -4,6 +4,8 @@ from typing import Optional, List from pydantic import TypeAdapter from .types import ( + GroupAccess, + GroupVaultAccess, Vault, VaultGetParams, VaultListParams, @@ -73,3 +75,63 @@ async def get(self, vault_uuid: str, vault_params: VaultGetParams) -> Vault: response = TypeAdapter(Vault).validate_json(response) return response + + async def grant_group_permissions( + self, vault_id: str, group_permissions_list: List[GroupAccess] + ) -> None: + response = await self.core.invoke( + { + "invocation": { + "clientId": self.client_id, + "parameters": { + "name": "VaultsGrantGroupPermissions", + "parameters": { + "vault_id": vault_id, + "group_permissions_list": [ + o.model_dump(by_alias=True) + for o in group_permissions_list + ], + }, + }, + } + } + ) + + return None + + async def update_group_permissions( + self, group_permissions_list: List[GroupVaultAccess] + ) -> None: + response = await self.core.invoke( + { + "invocation": { + "clientId": self.client_id, + "parameters": { + "name": "VaultsUpdateGroupPermissions", + "parameters": { + "group_permissions_list": [ + o.model_dump(by_alias=True) + for o in group_permissions_list + ] + }, + }, + } + } + ) + + return None + + async def revoke_group_permissions(self, vault_id: str, group_id: str) -> None: + response = await self.core.invoke( + { + "invocation": { + "clientId": self.client_id, + "parameters": { + "name": "VaultsRevokeGroupPermissions", + "parameters": {"vault_id": vault_id, "group_id": group_id}, + }, + } + } + ) + + return None