Optimizely Groups API

APIs to interact with mutual exclusion groups

Operations 12

GET /projects/{project_id}/groups List Exclusion Groups #
PATCH /projects/{project_id}/groups Update Exclusion Groups #
POST /projects/{project_id}/groups Create an Exclusion Group #
POST /projects/{project_id}/groups/archived Archive Exclusion Groups #
POST /projects/{project_id}/groups/unarchived Unarchive Exclusion Groups #
DELETE /projects/{project_id}/groups/{group_id} Delete an Exclusion Group #
GET /projects/{project_id}/groups/{group_id} Fetch a Single Exclusion Group #
GET /groups List Exclusion Groups #
POST /groups Create an Exclusion Group #
DELETE /groups/{group_id} Archive an Exclusion Group #
GET /groups/{group_id} Get an Exclusion Group #
PATCH /groups/{group_id} Update an Exclusion Group #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/optimizely-groups-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optimizely-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Optimizely Groups API
  x-refined-note:
  - x-logo differs across the merged source definitions and was not carried
  version: '1.0'
  description: 'Operations tagged Groups across 2 of this provider''s published API definitions: optimizely-feature-experimentation-optimizely-feature-experimentation-api-openapi.json, optimizely-web-experimentation-optimizely-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.optimizely.com/flags/v1/
- url: https://api.optimizely.com/v2
security:
- apiKey: []
- OAuth2:
  - read
  - write
tags:
- description: APIs to interact with mutual exclusion groups
  name: Groups
paths:
  /projects/{project_id}/groups:
    get:
      description: 'Get a list of exclusion groups within a project


        You can use query parameters to filter/sort the response.

        '
      operationId: list_groups
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/pageToken'
      - $ref: '#/components/parameters/pageWindow'
      - allowReserved: true
        description: 'Sort the Groups based on the attributes from left to right.

          '
        in: query
        name: sort
        required: false
        schema:
          items:
            enum:
            - name:asc
            - name:desc
            - created_time:asc
            - created_time:desc
            - updated_time:asc
            - updated_time:desc
            type: string
          type: array
      - description: 'Filter the Groups by archived. A Group can be either archived (archived=true) or unarchived (archived=false)

          '
        in: query
        name: archived
        required: false
        schema:
          type: boolean
      - description: 'Filter the Groups by enabled. A Group can be either enabled (enabled=true) or disabled (enabled=false)

          '
        in: query
        name: enabled
        required: false
        schema:
          type: boolean
      - description: 'Filter the Groups by the environment

          '
        in: query
        name: environment
        required: false
        schema:
          items:
            example: production
            type: string
          type: array
      - description: 'Filter the Groups by name or

          description substring

          '
        in: query
        name: query
        required: false
        schema:
          type: string
      - description: 'Ensure that the group id listed is returned first

          '
        explode: false
        in: query
        name: include
        required: false
        schema:
          items:
            type: string
          type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Groups'
          description: 'Successful retrieval of a page of Groups.


            The response includes RESTful JSON (https://restfuljson.org/) styled links and pagination metadata.

            Objects in this API MAY include a url property for a link to itself and MAY append _url to properties for related links.

            If a link is not present in the response, it indicates a user is not authorized to access the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
      summary: List Exclusion Groups
      tags:
      - Groups
    patch:
      description: 'Update one or more Groups in a project using a json patch structure.


        Properties that are readOnly that are present in the request body will be ignored as well as

        unknown properties.

        '
      operationId: update_groups
      parameters:
      - $ref: '#/components/parameters/projectId'
      requestBody:
        content:
          application/json-patch+json:
            example:
            - op: replace
              path: /123/rules/456/traffic_allocation
              value: 8000
            schema:
              items:
                $ref: '#/components/schemas/PatchRequestBody'
              type: array
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                '987':
                  archive_url: /projects/12345/groups/archived
                  archived: false
                  created_time: '2019-05-08T00:00:00.000Z'
                  delete_url: /projects/12345/groups/456
                  description: Updated description for group
                  environment_key: production
                  id: 987
                  name: Promo Group
                  project_id: 12345
                  rules:
                    '456':
                      created_time: '2022-01-08T00:00:00.000Z'
                      flag_key: recurring_revenue
                      flag_name: Recurring Revenue
                      flag_status: unarchived
                      rule_key: experiment_one
                      rule_name: Experiment One
                      traffic_allocation: 2000
                      updated_time: '2022-01-08T00:00:00.000Z'
                  unarchive_url: /projects/12345/groups/unarchived
                  update_url: /projects/12345/groups
                  updated_time: '2019-05-08T00:00:00.000Z'
                  url: /projects/12345/groups/456
                  urn: groups.flag.optimizely.com::987
              schema:
                $ref: '#/components/schemas/GroupMap'
          description: 'Successful update, archive or unarchive of Groups.


            The response includes RESTful JSON (https://restfuljson.org/) styled links. If a

            link is not present in the response, it indicates a user is not authorized to access

            the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '409':
          $ref: '#/components/responses/ConflictResponse'
      summary: Update Exclusion Groups
      tags:
      - Groups
    post:
      description: 'Creates a new exclusion group in a project.


        This operation corresponds to the `create_url` in a Groups response.


        Required properties must be present in the request body.


        Note that key for each object in "rules" (if provided), must be a stringified

        rule ID.

        '
      operationId: create_group
      parameters:
      - $ref: '#/components/parameters/projectId'
      requestBody:
        $ref: '#/components/requestBodies/GroupRequest'
      responses:
        '201':
          $ref: '#/components/responses/GroupSuccessResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
      summary: Create an Exclusion Group
      tags:
      - Groups
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/groups/archived:
    post:
      description: 'Archive one or more exclusion groups in a project.


        This operation corresponds to the `archive_url` in a Groups response.

        '
      operationId: archive_groups
      parameters:
      - $ref: '#/components/parameters/projectId'
      requestBody:
        content:
          application/json:
            example:
              keys:
              - 1, 2
            schema:
              $ref: '#/components/schemas/BulkOperationsRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                '987':
                  archive_url: /projects/12345/groups/archived
                  archived: true
                  created_time: '2019-05-08T00:00:00.000Z'
                  description: Promo group description
                  environment_key: production
                  id: 987
                  name: Promo group
                  project_id: 12345
                  revision: 1
                  rules:
                    '321':
                      created_time: '2022-01-08T00:00:00.000Z'
                      flag_key: recurring_revenue
                      flag_name: Recurring Revenue
                      flag_status: unarchived
                      rule_key: experiment_one
                      rule_name: Experiment One
                      traffic_allocation: 2000
                      updated_time: '2022-01-08T00:00:00.000Z'
                  unarchive_url: /projects/12345/groups/unarchived
                  update_url: /projects/12345/groups
                  updated_time: '2019-05-08T00:00:00.000Z'
                  url: /projects/12345/groups/123
                  urn: groups.flag.optimizely.com::987
              schema:
                $ref: '#/components/schemas/GroupMap'
          description: 'Successful archive of Groups.


            The response includes RESTful JSON (https://restfuljson.org/) styled links. If a

            link is not present in the response, it indicates a user is not authorized to access

            the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '409':
          $ref: '#/components/responses/ConflictResponse'
      summary: Archive Exclusion Groups
      tags:
      - Groups
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/groups/unarchived:
    post:
      description: 'Unarchive one or more exclusion groups in a project.


        This operation corresponds to the `unarchive_url` in a Groups response.

        '
      operationId: unarchive_groups
      parameters:
      - $ref: '#/components/parameters/projectId'
      requestBody:
        content:
          application/json:
            example:
              keys:
              - 1,2
            schema:
              $ref: '#/components/schemas/BulkOperationsRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                '987':
                  archive_url: /projects/12345/groups/archived
                  archived: false
                  created_time: '2019-05-08T00:00:00.000Z'
                  description: Promo group description
                  environment_key: production
                  id: 987
                  name: Promo group
                  project_id: 12345
                  revision: 1
                  rules:
                    '321':
                      created_time: '2022-01-08T00:00:00.000Z'
                      flag_key: recurring_revenue
                      flag_name: Recurring Revenue
                      flag_status: unarchived
                      rule_key: experiment_one
                      rule_name: Experiment One
                      traffic_allocation: 2000
                      updated_time: '2022-01-08T00:00:00.000Z'
                  unarchive_url: /projects/12345/groups/unarchived
                  update_url: /projects/12345/groups
                  updated_time: '2019-05-08T00:00:00.000Z'
                  url: /projects/12345/groups/123
                  urn: groups.flag.optimizely.com::987
              schema:
                $ref: '#/components/schemas/GroupMap'
          description: 'Successful unarchive of Groups.


            The response includes RESTful JSON (https://restfuljson.org/) styled links. If a

            link is not present in the response, it indicates a user is not authorized to access

            the related resource.

            '
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '409':
          $ref: '#/components/responses/ConflictResponse'
      summary: Unarchive Exclusion Groups
      tags:
      - Groups
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /projects/{project_id}/groups/{group_id}:
    delete:
      description: 'Permanently delete an exclusion group by id.


        There will be no way to access this data after deleting. If you want to

        stop seeing a Group without deleting it permanently, archive

        instead.

        '
      operationId: delete_group
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/groupId'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
      summary: Delete an Exclusion Group
      tags:
      - Groups
    get:
      description: 'Fetch a single exclusion group by its id.


        This operation corresponds to the `fetch_group_url` in a Groups response.

        '
      operationId: fetch_group
      parameters:
      - $ref: '#/components/parameters/projectId'
      - $ref: '#/components/parameters/groupId'
      responses:
        '200':
          $ref: '#/components/responses/GroupSuccessResponse'
        '400':
          $ref: '#/components/responses/BadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
      summary: Fetch a Single Exclusion Group
      tags:
      - Groups
    servers:
    - url: https://api.optimizely.com/flags/v1/
  /groups:
    get:
      description: List Exclusion Groups under a Project
      operationId: list_groups
      parameters:
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/page'
      - description: The ID of the Project you would like to list all Exclusion Groups for
        in: query
        name: project_id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Group_2'
                type: array
          description: Return all Exclusion Groups in the specified Project
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to access the Exclusion Groups in the specified Project
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exclusion Groups not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: List Exclusion Groups
      tags:
      - Groups
    post:
      description: Create a new Exclusion Group in a provided project
      operationId: create_group
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Group_2'
        description: A string in JSON format that includes all the fields to create an Exclusion Group
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group_2'
          description: Return the created Exclusion Group
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request body content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to create an Exclusion Group under the specified Project
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Create an Exclusion Group
      tags:
      - Groups
    servers:
    - url: https://api.optimizely.com/v2
  /groups/{group_id}:
    delete:
      description: Archive an Exclusion Group by ID
      operationId: delete_group
      parameters:
      - description: The ID of the Exclusion Group you'd like to archive
        in: path
        name: group_id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '204':
          description: Successfully archived Exclusion Group
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to archive the specified Exclusion Group
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exclusion Group not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Archive an Exclusion Group
      tags:
      - Groups
    get:
      description: Get an Exclusion Group by ID
      operationId: get_group
      parameters:
      - description: The ID of the Exclusion Group you'd like to get
        in: path
        name: group_id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group_2'
          description: Return Exclusion Group info
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid ID supplied
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to access the specified Exclusion Group
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exclusion Group not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Get an Exclusion Group
      tags:
      - Groups
    patch:
      description: Update an exclusion group by ID.
      operationId: update_group
      parameters:
      - description: The group ID of the Exclusion Group you want to change
        in: path
        name: group_id
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupUpdate'
        description: A string in JSON format that includes all the fields you'd like to change for an Exclusion Group
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group_2'
          description: Return the updated Exclusion Group
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid ID or request body supplied
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to edit the specified Exclusion Group
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Experimentation Group not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Update an Exclusion Group
      tags:
      - Groups
    servers:
    - url: https://api.optimizely.com/v2
components:
  schemas:
    AudienceConditionsString:
      description: A valid AudienceConditionsArray represented as a JSON string
      example: "[\n  \"or\",\n  {\n    \"audience_id\": 1038980040\n  },\n  {\n    \"audience_id\": 1033280055\n  },\n  [\n    \"not\",\n    {\n      \"audience_id\": 1120870079\n    }\n  ]\n]"
      type: string
    PatchRequestBody:
      description: A JSONPatch document as defined by RFC 6902
      properties:
        from:
          description: A JSON Pointer to the resource attribute
          type: string
        op:
          description: The operation to be performed
          enum:
          - add
          - remove
          - replace
          - move
          - copy
          - test
          type: string
        path:
          description: A JSON-Pointer to the resource or the resource attribute
          type: string
        value:
          anyOf:
          - type: object
          - items:
              type: string
            type: array
          - $ref: '#/components/schemas/AudienceConditions'
          - type: string
          - type: integer
          - type: boolean
          - items:
              $ref: '#/components/schemas/SubMetric'
            type: array
          description: The value to be used within the operations.
      required:
      - op
      - path
      type: object
    AudienceConditionsArray:
      example:
      - or
      - audience_id: 123
      - - and
        - audience_id: 456
        - audience_id: 789
      items:
        anyOf:
        - description: The logical operator to use (e.g. "and", "or", or "not"). This must be the first item in the audience_conditions array. The "not" operator may only be used in conjunction with a single condition or list.
          type: string
        - description: An invidual conditional, consisting of a JSON object with an "audience_id" value.
          properties:
            audience_id:
              type: integer
          required:
          - audience_id
          type: object
        - $ref: '#/components/schemas/AudienceConditionsArray'
          description: A nested AudienceConditionsArray
          example:
          - - and
            - audience_id: 456
            - audience_id: 789
      type: array
    SubMetric:
      properties:
        aggregator:
          type: string
        event_id:
          type: integer
        event_type:
          type: string
        field:
          type:
          - string
          - 'null'
        role:
          enum:
          - numerator
          - denominator
          type: string
        scope:
          type: string
      type: object
    GroupRule:
      example:
        traffic_allocation: 5000
      properties:
        flag_key:
          description: The Key of the Flag this GroupRule is related
          example: flag_key
          readOnly: true
          type: string
        flag_name:
          description: The name of the Flag this GroupRule is related to.
          example: A Feature Flag
          readOnly: true
          type: string
        flag_status:
          description: Status of the Flag thie GroupRule is related
          enum:
          - archived
          - unarchived
          example: archived
          readOnly: true
          type: string
        rule_enabled:
          description: If the underlying Rule and Ruleset are both enabled
          example: true
          readOnly: true
          type: boolean
        rule_key:
          description: The Key of the Rule this GroupRule belongs to
          example: paid_users
          readOnly: true
          type: string
        rule_name:
          description: The Name of the Rule this GroupRule belongs to
          example: Paid Users
          readOnly: true
          type: string
        rule_status:
          description: The status of the rule
          example: draft
          readOnly: true
          type: string
        traffic_allocation:
          description: The traffic allocation for the Rule
          example: 2000
          maximum: 10000
          minimum: 0
          type: integer
      required:
      - traffic_allocation
      type: object
    GroupRuleMap:
      additionalProperties:
        $ref: '#/components/schemas/GroupRule'
      description: Map of group rules that include rule id as key and group rule as value.
      type: object
    BulkOperationsRequestBody:
      properties:
        keys:
          description: The list of resource keys to perform the desired operation
          items:
            type: string
          type: array
      type: object
    Group:
      example:
        archive_url: /projects/12345/groups/archived
        archived: false
        created_time: '2019-05-08T00:00:00.000Z'
        description: Promo group description
        environment_key: production
        id: 1
        name: Promo group
        project_id: 12345
        revision: 1
        role: viewer
        rules:
          '321':
            created_time: '2022-01-08T00:00:00.000Z'
            flag_key: recurring_revenue
            flag_name: Recurring Revenue
            flag_status: unarchived
            rule_key: experiment_one
            rule_name: Experiment One
            traffic_allocation: 2000
            updated_time: '2022-01-08T00:00:00.000Z'
        unarchive_url: /projects/12345/groups/unarchived
        update_url: /projects/12345/groups
        updated_time: '2019-05-08T00:00:00.000Z'
        url: /projects/12345/groups/123
        urn: groups.flag.optimizely.com::1
      properties:
        archive_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          example: '...'
          readOnly: true
        archived:
          example: false
          type: boolean
        created_time:
          example: '2019-05-08T00:00:00.000Z'
          format: date-time
          readOnly: true
          type: string
        delete_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          readOnly: true
        description:
          example: promotion group
          type: string
        environment_key:
          example: production
          minLength: 1
          type: string
        id:
          example: 1
          readOnly: true
          type: integer
        name:
          example: PromoGroup
          type: string
        project_id:
          description: The ID of the Project this Group belongs to
          format: int64
          type: integer
        revision:
          description: Revision number for tracking changes
          readOnly: true
          type: integer
        role:
          description: Granular permission role
          example: admin
          readOnly: true
          type: string
        rules:
          allOf:
          - $ref: '#/components/schemas/GroupRuleMap'
        unarchive_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          example: '...'
          readOnly: true
        update_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          example: '...'
          readOnly: true
        updated_time:
          example: '2019-05-08T00:00:00.000Z'
          format: date-time
          readOnly: true
          type: string
        url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to self
          example: '...'
          readOnly: true
        urn:
          description: The URN for the Group
          example: groups.flag.optimizely.com::1
          readOnly: true
          type: string
      required:
      - id
      - urn
      - name
      - environment_key
      - created_time
      - updated_time
      type: object
    Groups:
      properties:
        count:
          description: Number of Groups on the current page.
          example: 2
          type: integer
        create_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
        filter_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Url template like '.../{?filter}'
        first_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to first page of Groups in a series.
          example: /projects/123/groups?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#1
        items:
          items:
            $ref: '#/components/schemas/Group'
          type: array
        last_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the last page of Groups in a series.
          example: /projects/123/groups?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#10
        next_url:
          allOf:
          - $ref: '#/components/schemas/UrlList'
          description: "List of links to next pages of Groups in a series.\n\n The first element in the array is the exact next page after the current record, etc.\n"
          example:
          - /projects/123/groups?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#6
          - /projects/123/groups?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#7
        page:
          description: Number of the current page. 1-index based.
          example: 5
          type: integer
        prev_url:
          allOf:
          - $ref: '#/components/schemas/UrlList'
          description: 'List of links to previous pages of Groups in a series.


            The first element in the array is the exact previous page before the current record, etc.

            '
          example:
          - /projects/123/groups?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#4
          - /projects/123/groups?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#3
        reset_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to the default pages of Groups
          example: '...'
        sort_url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Url template like '.../{?sort}'
        total_count:
          description: Total number of Groups for this series.
          example: 20
          type: integer
        total_pages:
          description: Total number of pages for this series.
          example: 10
          type: integer
        url:
          allOf:
          - $ref: '#/components/schemas/UrlValue'
          description: Link to self

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-groups-api-openapi.yml