Corpus Permission Client - gunpal5/Google_GenerativeAI GitHub Wiki
Introduction
The CorpusPermissionClient
provides methods for interacting with the Gemini API's Corpus Permissions endpoint. This allows you to manage access control for corpora by granting and revoking permissions for users or groups. This is essential for controlling who can access and modify your corpora.
Details
The CorpusPermissionClient
offers the following functionalities:
Creating a Permission
The CreatePermissionAsync
method grants a new permission for a corpus.
CreatePermissionAsync Method Documentation
using GenerativeAI.Clients;
using GenerativeAI.Types;
// ... other code ...
var corpusPermissionClient = new CorpusPermissionClient(platform, httpClient, logger);
// Initialize CorpusPermissionClient
var parentCorpus = "corpora/my-corpus-id"; // Replace with the parent corpus name
var permission = new Permission
{
GranteeType = GranteeType.User, // Or GranteeType.Group, GranteeType.Everyone
EmailAddress = "[email address removed]", // Required if GranteeType is User or Group
Role = Role.Reader // Or Role.Writer
};
var createdPermission = await corpusPermissionClient.CreatePermissionAsync(parentCorpus, permission);
if (createdPermission != null)
{
Console.WriteLine($"Permission created: {createdPermission.Name}");
}
else
{
Console.WriteLine("Failed to create permission.");
}
Listing Permissions
The ListPermissionsAsync
method retrieves a list of permissions for a corpus.
ListPermissionsAsync Method Documentation
using GenerativeAI.Clients;
using GenerativeAI.Types;
// ... other code ...
var corpusPermissionClient = new CorpusPermissionClient(platform, httpClient, logger);
// Initialize CorpusPermissionClient
var parentCorpus = "corpora/my-corpus-id"; // Replace with the parent corpus name
var listPermissionsResponse = await corpusPermissionClient.ListPermissionsAsync(parentCorpus);
// You can provide pageSize and pageToken
if (listPermissionsResponse != null && listPermissionsResponse.Permissions != null)
{
foreach (var permission in listPermissionsResponse.Permissions)
{
Console.WriteLine($"Permission Name: {permission.Name}");
Console.WriteLine($"Grantee: {permission.EmailAddress}");
Console.WriteLine($"Role: {permission.Role}");
}
}
else
{
Console.WriteLine("No permissions found.");
}
Getting a Permission
The GetPermissionAsync
method retrieves a specific permission by name.
GetPermissionAsync Method Documentation
using GenerativeAI.Clients;
using GenerativeAI.Types;
// ... other code ...
var corpusPermissionClient = new CorpusPermissionClient(platform, httpClient, logger);
// Initialize CorpusPermissionClient
var permissionName = "corpora/my-corpus-id/permissions/my-permission-id";
// Replace with the permission name
var permission = await corpusPermissionClient.GetPermissionAsync(permissionName);
if (permission != null)
{
Console.WriteLine($"Permission Grantee: {permission.EmailAddress}");
Console.WriteLine($"Permission Role: {permission.Role}");
}
else
{
Console.WriteLine("Permission not found.");
}
Updating a Permission
The UpdatePermissionAsync
method updates an existing permission.
UpdatePermissionAsync Method Documentation
using GenerativeAI.Clients;
using GenerativeAI.Types;
// ... other code ...
var corpusPermissionClient = new CorpusPermissionClient(platform, httpClient, logger);
// Initialize CorpusPermissionClient
var permissionName = "corpora/my-corpus-id/permissions/my-permission-id";
// Replace with the permission name
var updatedPermission = new Permission
{
Name = permissionName, // Important: Include the name in the updated permission object.
Role = Role.Writer // Update the role
// ... other properties to update ...
};
string updateMask = "role"; // Specify the fields to update
var resultPermission = await corpusPermissionClient.UpdatePermissionAsync(
permissionName,
updatedPermission,
updateMask
);
if (resultPermission != null)
{
Console.WriteLine($"Permission updated: {resultPermission.Role}");
}
else
{
Console.WriteLine("Failed to update permission.");
}
Deleting a Permission
The DeletePermissionAsync
method revokes a permission.
DeletePermissionAsync Method Documentation
using GenerativeAI.Clients;
// ... other code ...
var corpusPermissionClient = new CorpusPermissionClient(platform, httpClient, logger);
// Initialize CorpusPermissionClient
var permissionName = "corpora/my-corpus-id/permissions/my-permission-id";
// Replace with the permission name
await corpusPermissionClient.DeletePermissionAsync(permissionName);
Console.WriteLine($"Permission deleted: {permissionName}");
Important Considerations
- Ensure proper authorization is configured before using the
CorpusPermissionClient
. See the Authentication page. - Replace placeholder permission names, IDs, and corpus names with actual values.
- Handle potential exceptions during API calls.
- Be mindful of rate limits when making frequent requests. See the official documentation for details.
- The
updateMask
parameter inUpdatePermissionAsync
is crucial. It specifies which fields of thePermission
object should be updated. Only the fields listed in theupdateMask
will be modified.