Endpoints
Projects

Projects

🚧

The Testify API is still in alpha and is subject to change without notice. Please contact us if you have any questions.

Get a list of your existing projects, create a new project, update an existing project, or delete a project.

GET /v1/projects

Get a list of your existing projects.

Query Parameters

Relations should be specified as a comma-separated list of values. Valid relations for this endpoint are:

  • cases
  • milestones
  • test_runs
{
  limit?: number;
  offset?: number;
  relations?: string;
}

Response

{
  projects: {
    id: string;
    createdAt: Date;
    createdBy: string;
    updatedAt: Date;
    updatedBy: string;
    name: string;
    identifier: string;
    icon: string;
    color: string;
    cases?: {
      id: string;
      createdAt: Date;
      createdBy: string;
      updatedAt: Date;
      updatedBy: string;
      displayId: number;
      name: string;
      preconditions: string;
      comments?: {
        id: string;
        createdAt: Date;
        createdBy: string;
        updatedAt: Date;
        updatedBy: string;
        content: string;
      }[];
      steps: {
        action: string;
        expectation: string;
      }[];
      customFields: { [key: string]: any };
    }[];
    milestones?: {
      id: string;
      createdAt: Date;
      createdBy: string;
      updatedAt: Date;
      updatedBy: string;
      displayId: number;
      name: string;
      testRuns?: {
        id: string;
        createdAt: Date;
        createdBy: string;
        updatedAt: Date;
        updatedBy: string;
        displayId: number;
        name: string;
        milestoneId?: string;
        tests?: {
          id: string;
          createdAt: Date;
          createdBy: string;
          updatedAt: Date;
          updatedBy: string;
          displayId: number;
          name: string;
          preconditions: string;
          steps: {
            action: string;
            expectation: string;
          }[];
          assignedTo: string;
          result: "passed" | "failed" | "inProgress" | "untested";
          case?: {
            id: string;
            createdAt: Date;
            createdBy: string;
            updatedAt: Date;
            updatedBy: string;
            displayId: number;
            name: string;
            preconditions: string;
            comments?: {
              id: string;
              createdAt: Date;
              createdBy: string;
              updatedAt: Date;
              updatedBy: string;
              content: string;
            }[];
            steps: {
              action: string;
              expectation: string;
            }[];
            customFields: { [key: string]: any };
          };
          caseId: string;
          comments?: {
            id: string;
            createdAt: Date;
            createdBy: string;
            updatedAt: Date;
            updatedBy: string;
            content: string;
          }[];
        }[];
        results?: {
          total: number;
          passed: number;
          failed: number;
          inProgress: number;
          untested: number;
        };
      }[];
    }[];
    testRuns?: {
      id: string;
      createdAt: Date;
      createdBy: string;
      updatedAt: Date;
      updatedBy: string;
      displayId: number;
      name: string;
      milestoneId?: string;
      tests?: {
        id: string;
        createdAt: Date;
        createdBy: string;
        updatedAt: Date;
        updatedBy: string;
        displayId: number;
        name: string;
        preconditions: string;
        steps: {
          action: string;
          expectation: string;
        }[];
        assignedTo: string;
        result: "passed" | "failed" | "inProgress" | "untested";
        case?: {
          id: string;
          createdAt: Date;
          createdBy: string;
          updatedAt: Date;
          updatedBy: string;
          displayId: number;
          name: string;
          preconditions: string;
          comments?: {
            id: string;
            createdAt: Date;
            createdBy: string;
            updatedAt: Date;
            updatedBy: string;
            content: string;
          }[];
          steps: {
            action: string;
            expectation: string;
          }[];
          customFields: { [key: string]: any };
        };
        caseId: string;
        comments?: {
          id: string;
          createdAt: Date;
          createdBy: string;
          updatedAt: Date;
          updatedBy: string;
          content: string;
        }[];
      }[];
      results?: {
        total: number;
        passed: number;
        failed: number;
        inProgress: number;
        untested: number;
      };
    }[];
  }[];
  pagination: {
    total: number;
    limit: number;
    offset: number;
  };
}

PUT /v1/projects

Creates a new project.

Request Body

{
  name: string;
  identifier: string;
  icon: string;
  color: string;
}

Response Body

{
  project: {
    id: string;
    createdAt: Date;
    createdBy: string;
    updatedAt: Date;
    updatedBy: string;
    name: string;
    identifier: string;
    icon: string;
    color: string;
  };
}

POST /v1/projects/:projectId

Updates an existing project.

Request Body

{
  name?: string;
  identifier?: string;
  icon?: string;
  color?: string;
}

Response Body

{
  project: {
    id: string;
    createdAt: Date;
    createdBy: string;
    updatedAt: Date;
    updatedBy: string;
    name: string;
    identifier: string;
    icon: string;
    color: string;
  };
}

DELETE /v1/projects/:projectId

Deletes an existing project.

Response Body

A successful response will return a response with a status code of 200 and no data parameter:

{
  "ok": true,
  "requestId": string,
  "duration": number,
}