-
Notifications
You must be signed in to change notification settings - Fork 8
Corpus Permission Client
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.
The CorpusPermissionClient
offers the following functionalities:
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.");
}
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.");
}
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.");
}
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.");
}
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}");
- 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.