feat(orgs): add organization and organization-repository APIs: getOrg, getOrgRepos, createOrg, createOrgRepo
This commit is contained in:
@@ -1,5 +1,14 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-02-28 - 1.1.0 - feat(orgs)
|
||||||
|
add organization and organization-repository APIs: getOrg, getOrgRepos, createOrg, createOrgRepo
|
||||||
|
|
||||||
|
- Added getOrg(orgName): fetch a single organization by name
|
||||||
|
- Added getOrgRepos(orgName, opts?): list repositories in an organization with pagination, sorting by updated, and optional search query
|
||||||
|
- Added createOrg(name, opts?): create a new organization with fullName, description, and visibility (defaults to public)
|
||||||
|
- Added createOrgRepo(orgName, name, opts?): create a repository within an organization; description optional and private defaults to true
|
||||||
|
- Endpoints use encodeURIComponent for orgName in URLs to ensure safe requests
|
||||||
|
|
||||||
## 2026-02-24 - 1.0.3 - fix(gitea)
|
## 2026-02-24 - 1.0.3 - fix(gitea)
|
||||||
no changes detected in the diff; no code or doc updates
|
no changes detected in the diff; no code or doc updates
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@apiclient.xyz/gitea',
|
name: '@apiclient.xyz/gitea',
|
||||||
version: '1.0.3',
|
version: '1.1.0',
|
||||||
description: 'A TypeScript client for the Gitea API, providing easy access to repositories, organizations, secrets, and action runs.'
|
description: 'A TypeScript client for the Gitea API, providing easy access to repositories, organizations, secrets, and action runs.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,6 +149,56 @@ export class GiteaClient {
|
|||||||
return this.request<IGiteaOrganization[]>('GET', `/api/v1/orgs?page=${page}&limit=${limit}`);
|
return this.request<IGiteaOrganization[]>('GET', `/api/v1/orgs?page=${page}&limit=${limit}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a single organization by name
|
||||||
|
*/
|
||||||
|
public async getOrg(orgName: string): Promise<IGiteaOrganization> {
|
||||||
|
return this.request<IGiteaOrganization>('GET', `/api/v1/orgs/${encodeURIComponent(orgName)}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List repositories within an organization
|
||||||
|
*/
|
||||||
|
public async getOrgRepos(orgName: string, opts?: IListOptions): Promise<IGiteaRepository[]> {
|
||||||
|
const page = opts?.page || 1;
|
||||||
|
const limit = opts?.perPage || 50;
|
||||||
|
let url = `/api/v1/orgs/${encodeURIComponent(orgName)}/repos?page=${page}&limit=${limit}&sort=updated`;
|
||||||
|
if (opts?.search) {
|
||||||
|
url += `&q=${encodeURIComponent(opts.search)}`;
|
||||||
|
}
|
||||||
|
return this.request<IGiteaRepository[]>('GET', url);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new organization
|
||||||
|
*/
|
||||||
|
public async createOrg(name: string, opts?: {
|
||||||
|
fullName?: string;
|
||||||
|
description?: string;
|
||||||
|
visibility?: string;
|
||||||
|
}): Promise<IGiteaOrganization> {
|
||||||
|
return this.request<IGiteaOrganization>('POST', '/api/v1/orgs', {
|
||||||
|
username: name,
|
||||||
|
full_name: opts?.fullName || name,
|
||||||
|
description: opts?.description || '',
|
||||||
|
visibility: opts?.visibility || 'public',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a repository within an organization
|
||||||
|
*/
|
||||||
|
public async createOrgRepo(orgName: string, name: string, opts?: {
|
||||||
|
description?: string;
|
||||||
|
private?: boolean;
|
||||||
|
}): Promise<IGiteaRepository> {
|
||||||
|
return this.request<IGiteaRepository>('POST', `/api/v1/orgs/${encodeURIComponent(orgName)}/repos`, {
|
||||||
|
name,
|
||||||
|
description: opts?.description || '',
|
||||||
|
private: opts?.private ?? true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Repository Secrets
|
// Repository Secrets
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user