Projects
Create, list, update, and delete projects. Projects are the top-level organizational unit for validation runs and issues.
14 methods
client.projects.list()
List all projects for the authenticated user.
Return Fields
idrequiredstringuuidProject ID.
namerequiredstringProject name.
ownerIdrequiredstringuuidOwner user ID.
createdAtrequiredstringdate-timeCreation timestamp.
updatedAtrequiredstringdate-timeLast update timestamp.
list(): Promise<Project[]>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.list();
console.log(result.id);// Promise<Project[]>
{
id: string;
name: string;
ownerId: string;
createdAt: string;
updatedAt: string;
}client.projects.get()
Get a project by ID or name.
Parameters
idOrNamerequiredstringProject ID (UUID) or name.
Return Fields
idrequiredstringuuidProject ID.
namerequiredstringProject name.
ownerIdrequiredstringuuidOwner user ID.
createdAtrequiredstringdate-timeCreation timestamp.
updatedAtrequiredstringdate-timeLast update timestamp.
get(idOrName: string): Promise<Project>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.get('my-project');
console.log(result.id);// Promise<Project>
{
id: string;
name: string;
ownerId: string;
createdAt: string;
updatedAt: string;
}client.projects.create()
Create a new project. Project names must be unique within the account.
ParametersCreateProjectInput
namerequiredstringProject name. Must be unique, 1-200 characters.
Return Fields
idrequiredstringuuidProject ID.
namerequiredstringProject name.
createdAtrequiredstringdate-timeCreation timestamp.
create(input: CreateProjectInput): Promise<Project>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.create({ name: 'my-project' });
console.log(result.id);// Promise<Project>
{
id: string;
name: string;
createdAt: string;
}client.projects.update()
Update a project's fields.
ParametersUpdateProjectInput
idOrNamerequiredstringProject ID or name.
nameoptionalstringNew project name.
Return Fields
idrequiredstringuuidProject ID.
namerequiredstringProject name.
update(idOrName: string, input: UpdateProjectInput): Promise<Project>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.update({ idOrName: 'my-project' });
console.log(result.id);// Promise<Project>
{
id: string;
name: string;
}client.projects.delete()
Permanently delete a project. Requires confirmation phrase matching the project name.
ParametersDeleteProjectInput
idOrNamerequiredstringProject ID or name.
confirmrequiredtrueMust be literal `true`.
confirmationPhraserequiredstringMust match the project name exactly.
Return Fields
deletedrequiredbooleanAlways `true` on success.
delete(idOrName: string, input: DeleteProjectInput): Promise<DeleteResult>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.delete({
idOrName: 'my-project',
confirm: true,
confirmationPhrase: 'DELETE my-project',
});
console.log(result.deleted);// Promise<DeleteResult>
{
deleted: boolean;
}client.projects.softDelete()
Soft-delete a project. Can be restored later with `restore()`.
ParametersDeleteProjectInput
idOrNamerequiredstringProject ID or name.
confirmrequiredtrueMust be literal `true`.
confirmationPhraserequiredstringMust match the project name exactly.
Return Fields
deletedrequiredbooleanAlways `true` on success.
softDelete(idOrName: string, input: DeleteProjectInput): Promise<DeleteResult>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.softDelete({
idOrName: 'my-project',
confirm: 'example-value',
confirmationPhrase: 'DELETE my-project',
});
console.log(result.deleted);// Promise<DeleteResult>
{
deleted: boolean;
}client.projects.restore()
Restore a soft-deleted project.
Parameters
idOrNamerequiredstringProject ID or name.
restore(idOrName: string): Promise<Project>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.restore('my-project');Promise<Project>client.projects.rename()
Rename a project by old name.
ParametersRenameProjectInput
oldNamerequiredstringCurrent project name.
newNamerequiredstringNew project name.
rename(input: RenameProjectInput): Promise<Project>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.rename({ oldName: 'example-value', newName: 'my-fork' });Promise<Project>client.projects.getSummary()
Get project summary with issue counts and run statistics.
Parameters
idOrNamerequiredstringProject ID or name.
Return Fields
projectrequiredPublicProjectProject metadata.
statsrequiredobjectSummary statistics.
getSummary(idOrName: string): Promise<ProjectSummaryResponse>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.getSummary('my-project');
console.log(result.project);// Promise<ProjectSummaryResponse>
{
project: PublicProject;
stats: object;
}client.projects.getTrends()
Get issue trend data over time for a project.
Parameters
idOrNamerequiredstringProject ID or name.
daysoptionalnumberTime window in days (1-365).
Default:30Return Fields
projectrequiredProjectProject metadata.
daysrequirednumberTime window used.
dailyrequiredDailyIssueCounts[]Daily issue counts.
summaryrequiredTrendsSummaryAggregate summary of trend data.
getTrends(idOrName: string, query?: ProjectTrendsQuery): Promise<ProjectTrends>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.getTrends('my-project');
console.log(result.project);// Promise<ProjectTrends>
{
project: Project;
days: number;
daily: DailyIssueCounts[];
summary: TrendsSummary;
}client.projects.listIssues()
List issues in a project with optional filters.
Parameters
idOrNamerequiredstringProject ID or name.
statusoptionalStatusFilterFilter by status.
opencompleteddeferredwontfixmergedfalse-positiveobservationallpriorityoptionalPriorityFilter by priority.
criticalhighsuggestedbacklogagentoptionalstringFilter by agent name.
limitoptionalnumberMax results (1-100).
Default:50offsetoptionalnumberPagination offset.
Default:0listIssues(idOrName: string, query?: ListProjectIssuesQuery): Promise<Issue[]>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.listIssues('my-project');Promise<Issue[]>client.projects.bulkUpdateIssueStatus()
Bulk update issue statuses in a project.
Parameters
idOrNamerequiredstringProject ID or name.
updatesrequiredBulkIssueStatusUpdate[]Array of status updates.
Return Fields
idrequiredstringuuidIssue ID.
previousStatusrequiredStatusPrevious status.
newStatusrequiredStatusUpdated status.
updatedAtrequiredstringdate-timeUpdate timestamp.
bulkUpdateIssueStatus(idOrName: string, updates: BulkIssueStatusUpdate[]): Promise<BulkIssueStatusResult>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.bulkUpdateIssueStatus({
idOrName: 'my-project',
updates: [{
issueId: '550e8400-e29b-41d4-a716-446655440000',
status: 'open',
}],
});
console.log(result.id);// Promise<BulkIssueStatusResult>
{
id: string;
previousStatus: Status;
newStatus: Status;
updatedAt: string;
}client.projects.mergeIssues()
Merge multiple issues into one target issue.
ParametersMergeIssuesInput
idOrNamerequiredstringProject ID or name.
targetIssueIdrequiredstringuuidID of the target issue.
sourceIssueIdsrequiredstring[]IDs of issues to merge into target.
strategyoptionalstringMerge strategy.
keep_targetkeep_highest_prioritykeep_targetReturn Fields
targetIssueIdrequiredstringuuidTarget issue ID.
mergedCountrequirednumberNumber of source issues merged.
migratedOccurrencesrequirednumberTotal occurrences migrated.
mergeIssues(idOrName: string, input: MergeIssuesInput): Promise<MergeIssuesResult>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.mergeIssues({
idOrName: 'my-project',
targetIssueId: '550e8400-e29b-41d4-a716-446655440000',
sourceIssueIds: [],
});
console.log(result.targetIssueId);// Promise<MergeIssuesResult>
{
targetIssueId: string;
mergedCount: number;
migratedOccurrences: number;
}client.projects.listIssuesWithCount()
List issues in a project with total count for pagination. Preserves the API's envelope count field.
Parameters
idOrNamerequiredstringProject ID or name.
statusoptionalStatusFilterFilter by status.
opencompleteddeferredwontfixmergedfalse-positiveobservationallpriorityoptionalPriorityFilter by priority.
criticalhighsuggestedbacklogagentoptionalstringFilter by agent name.
limitoptionalnumberMax results (1-100).
Default:50offsetoptionalnumberPagination offset.
Default:0Return Fields
issuesrequiredIssue[]Paginated issues.
countrequirednumberTotal issue count matching filters.
listIssuesWithCount(idOrName: string, query?: ListProjectIssuesQuery): Promise<{ issues: Issue[]; count: number }>import { OpsClient } from '@uluops/ops-sdk';
const client = new OpsClient({
apiKey: 'ulr_your-api-key',
});
const result = await client.projects.listIssuesWithCount('my-project');
console.log(result.issues);// Promise<{ issues: Issue[]; count: number }>
{
issues: Issue[];
count: number;
}