Endpoints
Milestones

Milestones

🚧

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

Create, update, or delete a milestone.

GET /v1/milestones/:projectId

Gets all milestones for the given project.

Query Parameters

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

  • test_runs
  • All valid relations for test runs
{
  limit?: number;
  offset?: number;
  relations?: string;
}

Response

{
  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;
      };
    }[];
  }[];
  pagination: {
    total: number;
    limit: number;
    offset: number;
  };
}

PUT /v1/milestones/:projectId

Create a new milestone for the given project.

Request Body

{
  name: string;
  testRunIds: string[];
}

Response

{
  milestone: {
    id: string;
    createdAt: Date;
    createdBy: string;
    updatedAt: Date;
    updatedBy: string;
    displayId: number;
    name: string;
  };
}

POST /v1/milestones/:milestoneId

Update an existing milestone.

Request Body

Request Body

{
  name?: string;
  testRunIds?: string[];
}

Response

{
  milestone: {
    id: string;
    createdAt: Date;
    createdBy: string;
    updatedAt: Date;
    updatedBy: string;
    displayId: number;
    name: string;
  };
}

DELETE /v1/milestones/:milestoneId

Delete an existing milestone.

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,
}

GET /v1/milestones/milestone/:identifier

Get a specific milestone by its identifier. An identifier is different from the milestone ID and is in the form of PROJ-M###, where PROJ is the project identifier.

Query Parameters

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

  • test_runs
  • All valid relations for test runs
{
  relations?: string;
}

Response

{
  milestone: {
    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;
      };
    }[];
  };
}