Skip to content

Latest commit

 

History

History
323 lines (220 loc) · 7.91 KB

segments.mdx

File metadata and controls

323 lines (220 loc) · 7.91 KB
title
/api/admin/segments

import ApiRequest from '@site/src/components/ApiRequest' export const basePath = "api/admin/segments" export const path = (p) => ${basePath}/${p}

:::info Availability Segments are an experimental feature available to some Unleash Pro and Unleash Enterprise users. Get in touch if you'd like to help us develop this feature. :::

:::note To use the admin API, you'll need to create and use an admin API token. :::

The segments API lets you create, read, update, and delete segments.

Get all segments

Retrieve all segments that exist in this Unleash instance. Returns a list of segment objects.

Example responses

200 OK

[
  {
    "id": 1,
    "name": "my-segment",
    "description": "a segment description",
    "constraints": [],
    "createdBy": "user@example.com",
    "createdAt": "2022-04-01T14:02:25.491Z"
  }
]

Create segment

Create a new segment with the specified configuration.

<ApiRequest verb="post" url={basePath} title="Create a new segment." payload={{ "name": "my-segment", "description": "a segment description", "constraints": [] }} />

Example responses

201 Created

The segment was successfully created. This response has no body.

400 Bad Request

A segment with the provided name already exists.

Payload structure

Use a JSON object with the following properties to create a new segment.

Property Type Required Description Example value
name string Yes The name of the segment. "mobile-users"
description string No A description of the segment. "This segment is for users on mobile devices."
constraints list of constraint objects Yes The constraints in this segment. []

Get segment by ID

Retrieves the segment with the specified ID. <ApiRequest verb="Get" url={path("")} title="Retrieve the segment with the provided ID."/>

Example responses

200 OK

{
  "id": 1,
  "name": "my-segment",
  "description": "a segment description",
  "constraints": [],
  "createdBy": "user@example.com",
  "createdAt": "2022-04-01T14:02:25.491Z"
}

404 Not Found

No segment with the provided ID exists.

Update an existing segment

Replace the data of the specified segment with the provided payload.

<ApiRequest verb="put" url={path("")} title="Update a segment with new data." payload={{ "name": "my-segment", "description": "this is a newly provided description.", "constraints": [] }} />

Example responses

204 No Content

The update was successful. This response has no body.

404 Not Found

No segment with the provided ID exists.

Delete a segment

Delete the request with the specified ID.

<ApiRequest verb="delete" url={path("")} title="Delete a segment." />

Example responses

204 No Content

The segment was deleted successfully.

404 Not Found

No segment with the provided ID exists.

409 Conflict

The segment is being used by at least one strategy and can not be deleted. To delete the segment, first remove it from any strategies that use it.

List strategies that use a specific segment

Retrieve all strategies that use the specified segment. Returns a list of activation strategy objects.

<ApiRequest verb="Get" url={path("/strategies")} title="Retrieve all activation strategies that use the specified segment."/>

Example responses

200 OK

[
  {
    "id": "strategy-id",
    "featureName": "my-feature",
    "projectId": "my-project",
    "environment": "development",
    "strategyName": "my strategy",
    "parameters": {},
    "constraints": [],
    "createdAt": "2022-04-01T14:02:25.491Z"
  }
]

404 Not Found

No segment with the provided id exists.

List segments applied to a specific strategy

Retrieve all segments that are applied to the specified strategy. Returns a list of segment objects.

<ApiRequest verb="Get" url={path("strategies/")} title="Retrieve all segments that are used by the specified strategy."/>

Example responses

200 OK

[
  {
    "id": 1,
    "name": "my-segment",
    "description": "a segment description",
    "constraints": [],
    "createdBy": "user@example.com",
    "createdAt": "2022-04-01T14:02:25.491Z"
  }
]

404 Not Found

No strategy with the provided id exists.

Replace activation strategy segments

Replace the segments applied to the specified activation strategy with the provided segment list.

<ApiRequest verb="post" url={path("strategies")} title="Replace the segments to the specified strategy." payload={{ "projectId": "my-project", "strategyId": "my-strategy", "environmentId": "development", "segmentIds": [] }} />

Remove all segments from an activation strategy

To remove all segments from an activation strategy, use this endpoint and provide an empty list of segmentIds. For instance, the following payload would remove all segments from the strategy "my-strategy".

{
  "projectId": "my-project",
  "strategyId": "my-strategy",
  "environmentId": "development",
  "segmentIds": []
}
Example responses

201 Created

The strategy's list of segments was successfully updated.

403 Forbidden

You do not have access to edit this activation strategy.

404 Not Found

No strategy with the provided ID exists.

Payload structure

Use a JSON object with the following properties to update the list of applied segments.

Property Type Required Description Example value
projectId string Yes The ID of the feature toggle's project. "my-project"
strategyId string Yes The ID of the strategy. "my-strategy"
environmentId string Yes The ID of the environment. "development"
segmentIds list of segment IDs (numbers) Yes The list of segment IDs to apply to the strategy. []

Types

ISegment: segment interface {#isegment}

export interface ISegment {
    id: number;
    name: string;
    description?: string;
    constraints: IConstraint[];
    createdBy?: string;
    createdAt: Date;
}

IConstraint: constraint interface {#iconstraint}

export interface IConstraint {
    contextName: string;
    operator: string;
    values?: string[];
    value?: string;
    inverted?: boolean;
    caseInsensitive?: boolean;
}

IFeatureStrategy: strategy interface {#ifeaturestrategy}

export interface IFeatureStrategy {
    id: string;
    featureName: string;
    projectId: string;
    environment: string;
    strategyName: string;
    parameters: object;
    sortOrder?: number;
    constraints: IConstraint[];
    createdAt?: Date;
}