---
title: "Update multiple 'Milestone' existing entities"
method: PUT
path: "/milestone/bulk"
tags: ["Milestone"]
---

# Update multiple 'Milestone' existing entities

`PUT /milestone/bulk`

## Request

- Base URL: `https://app.testiny.io/api/v1`
- URL: `https://app.testiny.io/api/v1/milestone/bulk`
- Auth: API key in header `X-Api-Key`
- TypeScript: <https://skmtc.dev/testiny/apis/testiny-api/docs/milestone/bulk/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates multiple existing 'Milestone' entities. Returns a full updated entity list including (optional) modification metadata.

## Query parameters

- `force` boolean

## Request body

- Milestone[]
  - `id` integer: The unique entity id - must be a positive integer
  - `title` string: A descriptive title for this entity or mapping (1 to 200 characters)
  - `tags` string: A list of tags for this entity
  - `is_deleted` boolean: If the entity has been soft-deleted this value is true
  - `created_at` string, date-time: The creation time for this entity or mapping value
  - `created_by` number: The creator user id of this entity or mapping value - or zero if created by the system
  - `modified_at` string, date-time: The last modification time for this entity or mapping value
  - `modified_by` number: The id of the user who last modified or undeleted this entity or mapping value - or zero if modified by the system
  - `deleted_at` string, date-time: The soft-deletion time for this entity or mapping value
  - `deleted_by` number: The id of the user who deleted this entity or mapping value - or zero if deleted by the system
  - `_etag` string, required: A tag for detecting conflicting modifications - current value (may be empty) must be passed along in an update (or update must be forced)
  - `project_id` integer: The project id this entity or mapping belongs to
  - `closed_at` string, date-time: The time this milestone was closed
  - `closed_by` number: The id of the user who closed this milestone
  - `is_closed` boolean: Whether the milestone is closed or not. While certain properties of a closed milestone may still be modified, some referenced entities (e.g. test cases, results, ...) before the 'closed_at' date cannot be removed or changed until it is reopened.
  - `parent_id` integer: The optional id of the parent milestone
  - `start_at` string, date-time: The milestone start time
  - `stop_at` string, date-time: The milestone stop time/due time
  - `description` string, nullable: An optional description for this milestone (can be a rich text document, i.e. markdown with header line `<!--markdown-->` or Testiny JSON format)

## Response `200`

Returns an array of Milestone.

- Milestone[]
  - `id` integer: The unique entity id - must be a positive integer
  - `title` string: A descriptive title for this entity or mapping (1 to 200 characters)
  - `tags` string: A list of tags for this entity
  - `is_deleted` boolean: If the entity has been soft-deleted this value is true
  - `created_at` string, date-time: The creation time for this entity or mapping value
  - `created_by` number: The creator user id of this entity or mapping value - or zero if created by the system
  - `modified_at` string, date-time: The last modification time for this entity or mapping value
  - `modified_by` number: The id of the user who last modified or undeleted this entity or mapping value - or zero if modified by the system
  - `deleted_at` string, date-time: The soft-deletion time for this entity or mapping value
  - `deleted_by` number: The id of the user who deleted this entity or mapping value - or zero if deleted by the system
  - `_etag` string, required: A tag for detecting conflicting modifications - current value (may be empty) must be passed along in an update (or update must be forced)
  - `project_id` integer: The project id this entity or mapping belongs to
  - `closed_at` string, date-time: The time this milestone was closed
  - `closed_by` number: The id of the user who closed this milestone
  - `is_closed` boolean: Whether the milestone is closed or not. While certain properties of a closed milestone may still be modified, some referenced entities (e.g. test cases, results, ...) before the 'closed_at' date cannot be removed or changed until it is reopened.
  - `parent_id` integer: The optional id of the parent milestone
  - `start_at` string, date-time: The milestone start time
  - `stop_at` string, date-time: The milestone stop time/due time
  - `description` string, nullable: An optional description for this milestone (can be a rich text document, i.e. markdown with header line `<!--markdown-->` or Testiny JSON format)

## Other responses

- `4XX`: The request failed because invalid request parameters or data were supplied or access was denied.
- `5XX`: The request failed because an error occurred during processing of the request.

---

[API](https://skmtc.dev/testiny/apis/testiny-api.md) - [All operations](https://skmtc.dev/testiny/apis/testiny-api/llms.txt) - [OpenAPI document](https://skmtc.dev/testiny/apis/testiny-api/revisions/8f7643b2429d?raw)
