Skip to main content
Glama
organization.ts4.05 kB
import type { GiteaClient } from '../gitea-client.js'; import type { ContextManager } from '../context-manager.js'; import { createLogger } from '../logger.js'; const logger = createLogger('tools:organization'); export interface OrganizationToolsContext { client: GiteaClient; contextManager: ContextManager; } // Base params with token export interface OrganizationParams { token?: string; } // Create organization export interface CreateOrganizationParams extends OrganizationParams { username: string; full_name?: string; description?: string; website?: string; location?: string; email?: string; visibility?: 'public' | 'limited' | 'private'; repo_admin_change_team_access?: boolean; } export async function createOrganization( ctx: OrganizationToolsContext, params: CreateOrganizationParams ): Promise<unknown> { logger.info({ username: params.username }, 'Creating organization'); const body: any = { username: params.username }; if (params.full_name) body.full_name = params.full_name; if (params.description) body.description = params.description; if (params.website) body.website = params.website; if (params.location) body.location = params.location; if (params.email) body.email = params.email; if (params.visibility) body.visibility = params.visibility; if (params.repo_admin_change_team_access !== undefined) { body.repo_admin_change_team_access = params.repo_admin_change_team_access; } const response = await ctx.client.request({ method: 'POST', path: '/orgs', body, token: params.token, }); return response.data; } // Update organization export interface UpdateOrganizationParams extends OrganizationParams { org: string; full_name?: string; description?: string; website?: string; location?: string; visibility?: 'public' | 'limited' | 'private'; repo_admin_change_team_access?: boolean; } export async function updateOrganization( ctx: OrganizationToolsContext, params: UpdateOrganizationParams ): Promise<unknown> { logger.info({ org: params.org }, 'Updating organization'); const body: any = {}; if (params.full_name !== undefined) body.full_name = params.full_name; if (params.description !== undefined) body.description = params.description; if (params.website !== undefined) body.website = params.website; if (params.location !== undefined) body.location = params.location; if (params.visibility) body.visibility = params.visibility; if (params.repo_admin_change_team_access !== undefined) { body.repo_admin_change_team_access = params.repo_admin_change_team_access; } const response = await ctx.client.request({ method: 'PATCH', path: `/orgs/${encodeURIComponent(params.org)}`, body, token: params.token, }); return response.data; } // Delete organization export interface DeleteOrganizationParams extends OrganizationParams { org: string; } export async function deleteOrganization( ctx: OrganizationToolsContext, params: DeleteOrganizationParams ): Promise<unknown> { logger.info({ org: params.org }, 'Deleting organization'); const response = await ctx.client.request({ method: 'DELETE', path: `/orgs/${encodeURIComponent(params.org)}`, token: params.token, }); return response.data; } // List organization repositories export interface ListOrgReposParams extends OrganizationParams { org: string; page?: number; limit?: number; } export async function listOrganizationRepos( ctx: OrganizationToolsContext, params: ListOrgReposParams ): Promise<unknown> { logger.info({ org: params.org }, 'Listing organization repositories'); const queryParams: Record<string, string> = {}; if (params.page !== undefined) queryParams.page = String(params.page); if (params.limit !== undefined) queryParams.limit = String(params.limit); const response = await ctx.client.request({ method: 'GET', path: `/orgs/${encodeURIComponent(params.org)}/repos`, query: queryParams, token: params.token, }); return response.data; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SupenBysz/gitea-mcp-tool'

If you have feedback or need assistance with the MCP directory API, please join our Discord server