From 526568f3d45428afb35c8b2f2d882d7e273b0947 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Wed, 31 Jan 2024 09:43:49 -0500 Subject: [PATCH] Add project permission management APIs --- README.md | 3 +++ neon_client/client.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/README.md b/README.md index 33a3bf6..b4e127b 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,9 @@ Remember that you should never expose your api_key and handle it carefully since - `project_create(project_id, **json)`: Creates a new project. - `project_update(project_id, **json)`: Updates a given project. - `project_delete(project_id)`: Deletes a given project. +- `project_permissions(project_id)`: Returns a list of permissions for a given project. +- `project_permissions_grant(project_id, **json)`: Grant permissions to a given project. +- `project_permissions_revoke(project_id, **json)`: Revoke permissions from a given project. **Manage branches**: diff --git a/neon_client/client.py b/neon_client/client.py index 4e67aec..2800aff 100644 --- a/neon_client/client.py +++ b/neon_client/client.py @@ -178,6 +178,25 @@ class NeonAPI: return self.request("DELETE", f"projects/{ project_id }") + @returns_model(schema.ProjectPermissions) + def project_permissions(self, project_id: str) -> t.Dict[str, t.Any]: + """Get a project permissions.""" + return self.request("GET", f"projects/{ project_id }/permissions") + + @returns_model(schema.ProjectPermission) + def project_permissions_grant( + self, project_id: str, **json: dict + ) -> t.Dict[str, t.Any]: + """Update a project permissions. Accepts all keyword arguments for json body.""" + return self.request("POST", f"projects/{ project_id }/permissions", json=json) + + @returns_model(schema.ProjectPermission) + def project_permissions_revoke( + self, project_id: str, **json: dict + ) -> t.Dict[str, t.Any]: + """Update a project permissions. Accepts all keyword arguments for json body.""" + return self.request("DELETE", f"projects/{ project_id }/permissions", json=json) + @returns_model(schema.BranchesResponse) def branches( self,