|
1 | 1 | --- |
2 | 2 | title: Features |
3 | | -description: List, create, and copy features |
| 3 | +description: List, create, update, delete, and copy features |
4 | 4 | --- |
5 | 5 |
|
6 | 6 | Manage features for your products. |
@@ -231,6 +231,82 @@ curl -X POST "https://api.test.io/customer/v2/features" \ |
231 | 231 |
|
232 | 232 | {% /code %} |
233 | 233 |
|
| 234 | +## Update feature |
| 235 | + |
| 236 | +Updates the top-level fields of a feature. All fields are optional — only the fields you provide are updated. |
| 237 | + |
| 238 | +**Endpoint:** `PUT /features/{feature_id}` |
| 239 | + |
| 240 | +**Parameters:** |
| 241 | + |
| 242 | +- `feature_id` (number, required) - ID of the Feature |
| 243 | + |
| 244 | +All attributes must be provided inside the root object `feature`. |
| 245 | + |
| 246 | +**Request Body:** |
| 247 | + |
| 248 | +- `section_ids` (array[number], optional) - Array of section IDs to assign the feature to, replacing its current sections |
| 249 | +- `feature` (object, optional) - Feature object |
| 250 | + - `title` (string, optional) - Feature title |
| 251 | + - `description` (string, optional) - Feature description |
| 252 | + - `howtofind` (string, optional) - Instructions on how to find the feature |
| 253 | + - `target_idx` (string, optional) - Target index |
| 254 | + - `use_markdown` (boolean, optional) - Whether to use markdown formatting |
| 255 | + |
| 256 | +**Query Parameters:** |
| 257 | + |
| 258 | +| Parameter | Type | Required | Description | |
| 259 | +| ------------ | ----- | -------- | ------------------------------------------------------------------------------------------------------------------ | |
| 260 | +| `includes[]` | array | No | Optional associations to expand. Supported value: `user_stories`. See [List features](#list-features) for details. | |
| 261 | + |
| 262 | +**Example Request:** |
| 263 | + |
| 264 | +{% code language="bash" showLineNumbers=true %} |
| 265 | + |
| 266 | +```bash |
| 267 | +curl -X PUT "https://api.test.io/customer/v2/features/15" \ |
| 268 | + -H "Authorization: Token YOUR_API_TOKEN" \ |
| 269 | + -H "Content-Type: application/json" \ |
| 270 | + -d '{ |
| 271 | + "feature": { |
| 272 | + "title": "Account Management (updated)" |
| 273 | + } |
| 274 | + }' |
| 275 | +``` |
| 276 | + |
| 277 | +{% /code %} |
| 278 | + |
| 279 | +**Response:** `200 OK` |
| 280 | + |
| 281 | +Returns the updated feature object. See the response shape in [Create feature](#create-feature) above. |
| 282 | + |
| 283 | +## Delete feature |
| 284 | + |
| 285 | +Deletes the specified feature. |
| 286 | + |
| 287 | +**Endpoint:** `DELETE /features/{feature_id}` |
| 288 | + |
| 289 | +**Parameters:** |
| 290 | + |
| 291 | +- `feature_id` (number, required) - ID of the Feature |
| 292 | + |
| 293 | +{% callout type="note" %} |
| 294 | +If the feature is already in use by a test cycle, it is not permanently deleted — it is hidden instead so historical test results remain intact. Hidden features no longer appear in [List features](#list-features). |
| 295 | +{% /callout %} |
| 296 | + |
| 297 | +**Example Request:** |
| 298 | + |
| 299 | +{% code language="bash" showLineNumbers=true %} |
| 300 | + |
| 301 | +```bash |
| 302 | +curl -X DELETE "https://api.test.io/customer/v2/features/15" \ |
| 303 | + -H "Authorization: Token YOUR_API_TOKEN" |
| 304 | +``` |
| 305 | + |
| 306 | +{% /code %} |
| 307 | + |
| 308 | +**Response:** `204 No Content` |
| 309 | + |
234 | 310 | ## Copy features |
235 | 311 |
|
236 | 312 | Copy all features (including their user stories) from one product to another. The features are duplicated into the destination product. |
|
0 commit comments