{
  "swagger": "2.0",
  "info": {
    "title": "ConfigCat Public Management API",
    "description": "The purpose of this API is to access the ConfigCat platform programmatically.\nYou can **Create**, **Read**, **Update** and **Delete** any entities like **Feature Flags, Configs, Environments** or **Products** within ConfigCat.\n\n**Base API URL**: https://api.configcat.com\n\nIf you prefer the swagger documentation, you can find it here: [Swagger UI](https://api.configcat.com/swagger).\n\nThe API is based on HTTP REST, uses resource-oriented URLs, status codes and supports JSON \nformat. \n\n**Important:** Do not use this API for accessing and evaluating feature flag values. Use the [SDKs](https://configcat.com/docs/sdk-reference/overview) or the [ConfigCat Proxy](https://configcat.com/docs/advanced/proxy/proxy-overview/) instead.\n\n# OpenAPI Specification\n\nThe complete specification is publicly available in the following formats: \n- [OpenAPI v3](https://api.configcat.com/docs/v1/swagger.json)\n- [Swagger v2](https://api.configcat.com/docs/v1/swagger.v2.json)\n\nYou can use it to generate client libraries in various languages with [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator) or\n[Swagger Codegen](https://swagger.io/tools/swagger-codegen/) to interact with this API.\n\n# Authentication\nThis API uses the [Basic HTTP Authentication Scheme](https://en.wikipedia.org/wiki/Basic_access_authentication). \n\n<!-- ReDoc-Inject: <security-definitions> -->\n\n# Throttling and rate limits\nAll the rate limited API calls are returning information about the current rate limit period in the following HTTP headers:\n\n| Header | Description |\n| :- | :- |\n| X-Rate-Limit-Remaining | The maximum number of requests remaining in the current rate limit period. |\n| X-Rate-Limit-Reset     | The time\twhen the current rate limit period resets.\t\t\t\t\t\t  |\n\nWhen the rate limit is exceeded by a request, the API returns with a `HTTP 429 - Too many requests` status along with a `Retry-After` HTTP header.\n",
    "termsOfService": "https://configcat.com/policies",
    "contact": {
      "name": "ConfigCat",
      "url": "https://configcat.com",
      "email": "support@configcat.com"
    },
    "version": "v1",
    "x-logo": {
      "url": "https://api.configcat.com/resources/configcat-logo-horiz.svg"
    }
  },
  "host": "api.configcat.com",
  "schemes": [
    "https"
  ],
  "paths": {
    "/v1/proxy-profiles/{proxyProfileId}": {
      "get": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Get Proxy Profile",
        "description": "This endpoint returns a Proxy Profile \nidentified by the `proxyProfileId`.",
        "operationId": "get-proxy-profile",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the Proxy Profile is returned.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Replace Proxy Profile",
        "description": "This endpoint replaces a Proxy Profile identified by the `proxyProfileId` parameter.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't\nwant to change in its original state. Not listing one means it will reset.",
        "operationId": "replace-proxy-profile",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrUpdateProxyProfileRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the replace was successful.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Update Proxy Profile",
        "description": "This endpoint updates a Proxy Profile identified by the `proxyProfileId` parameter with a collection of [JSON Patch](https://jsonpatch.com) operations.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource without touching attributes that you don't want to change.\n\nFor example: We have the following resource.\n```json\n{\n  \"proxyProfileId\": \"4ebe288d-6415-44a8-85c8-7b9f78316a86\",\n  \"name\": \"production\",\n  \"description\": \"profile for production environments\",\n  \"lastAccessedAt\": \"2019-08-24T14:15:22Z\",\n  \"connectionPreferences\": {\n    \"sdkPollInterval\": 60,\n    \"webhookNotification\": null\n  },\n  \"sdkKeySelectionRules\": []\n}\n```\nIf we send an update request body as below (it changes the `sdkPollInterval` field and adds a new Proxy Webhook URL):\n```json\n[\n  {\n    \"op\": \"replace\", \n    \"path\": \"/connectionPreferences/sdkPollInterval\", \n    \"value\": 120\n  }, \n  {\n    \"op\": \"add\",\n    \"path\": \"/connectionPreferences/webhookNotification\",\n    \"value\": {\n      \"webhookProxyUrl\": \"https://my-proxy-url.com\"\n    }\n  }\n]\n```\nOnly the `sdkPollInterval` and `webhookProxyUrl` are updated and all the other attributes remain unchanged.\nSo we get a response like this:\n```json\n{\n  \"proxyProfileId\": \"4ebe288d-6415-44a8-85c8-7b9f78316a86\",\n  \"name\": \"production\",\n  \"description\": \"profile for production environments\",\n  \"lastAccessedAt\": \"2019-08-24T14:15:22Z\",\n  \"connectionPreferences\": {\n    \"sdkPollInterval\": 120,\n    \"webhookNotification\": {\n      \"webhookProxyUrl\": \"https://my-proxy-url.com\",\n      \"signingKey1\": \"<generated-signing-key>\",\n      \"signingKey2\": null\n    }\n  },\n  \"sdkKeySelectionRules\": []\n}\n```",
        "operationId": "update-proxy-profile",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            },
            "x-examples": {
              "add SDK key selection rule": {
                "description": "This example adds a selection rule to your proxy profile that includes all current and future environments that has `Prod` in its name.",
                "value": [
                  {
                    "op": "add",
                    "path": "/sdkKeySelectionRules/-",
                    "value": {
                      "environmentNameMatchFilter": "*Prod*"
                    }
                  }
                ]
              },
              "change the SDK poll interval": {
                "description": "This example changes the SDK poll interval to 120 seconds.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/connectionPreferences/sdkPollInterval",
                    "value": 120
                  }
                ]
              },
              "set webhook url": {
                "description": "This example sets the Proxy webhook URL.",
                "value": [
                  {
                    "op": "add",
                    "path": "/connectionPreferences/webhookNotification",
                    "value": {
                      "webhookProxyUrl": "https://my-proxy-url.com"
                    }
                  }
                ]
              },
              "disconnect Proxy from receiving notifications": {
                "description": "This example disconnects a Proxy from receiving notifications.",
                "value": [
                  {
                    "op": "remove",
                    "path": "/connectionPreferences/webhookNotification"
                  }
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Delete Proxy Profile",
        "description": "This endpoint removes a Proxy Profile identified by the `proxyProfileId` parameter.",
        "operationId": "delete-proxy-profile",
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "List Organizations",
        "description": "This endpoint returns the list of the Organizations that belongs to the user.",
        "operationId": "get-organizations",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/OrganizationModel"
              }
            }
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List Products",
        "description": "This endpoint returns the list of the Products that belongs to the user.",
        "operationId": "get-products",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ProductModel"
              }
            }
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/proxy-profiles": {
      "get": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "List Proxy Profiles",
        "description": "This endpoint returns the list of Proxy profiles for the given Organization identified by the `organizationId` parameter.",
        "operationId": "get-proxy-profiles",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/ProxyProfileListModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Create Proxy Profile",
        "description": "This endpoint creates a new Proxy Profile in the given Organization\nidentified by the `organizationId` parameter, which can be obtained from the [List Organizations](#operation/get-organizations) endpoint.",
        "operationId": "create-proxy-profile",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrUpdateProxyProfileRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/tags": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "List Tags",
        "description": "This endpoint returns the list of the Tags in a \nspecified Product, identified by the `productId` parameter.",
        "operationId": "get-tags",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TagModel"
              }
            }
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Create Tag",
        "description": "This endpoint creates a new Tag in a specified Product \nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "create-tag",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateTagModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/TagModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List Webhooks",
        "description": "This endpoint returns the list of the Webhooks that belongs to the given Product identified by the\n`productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "get-webhooks",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/WebhookResponseModel"
              }
            }
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/configs": {
      "get": {
        "tags": [
          "Configs"
        ],
        "summary": "List Configs",
        "description": "This endpoint returns the list of the Configs that belongs to the given Product identified by the\n`productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "get-configs",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ConfigModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Configs"
        ],
        "summary": "Create Config",
        "description": "This endpoint creates a new Config in a specified Product \nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "create-config",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateConfigRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/ConfigModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/environments": {
      "get": {
        "tags": [
          "Environments"
        ],
        "summary": "List Environments",
        "description": "This endpoint returns the list of the Environments that belongs to the given Product identified by the\n`productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "get-environments",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/EnvironmentModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Environments"
        ],
        "summary": "Create Environment",
        "description": "This endpoint creates a new Environment in a specified Product \nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "create-environment",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateEnvironmentModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/EnvironmentModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/permissions": {
      "get": {
        "tags": [
          "Permission Groups"
        ],
        "summary": "List Permission Groups",
        "description": "This endpoint returns the list of the Permission Groups that belongs to the given Product identified by the\n`productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "get-permission-groups",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/PermissionGroupModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Permission Groups"
        ],
        "summary": "Create Permission Group",
        "description": "This endpoint creates a new Permission Group in a specified Product \nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "create-permission-group",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePermissionGroupRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/PermissionGroupModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/integrations": {
      "get": {
        "tags": [
          "Integrations"
        ],
        "summary": "List Integrations",
        "description": "This endpoint returns the list of the Integrations that belongs to the given Product identified by the\n`productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "get-integrations",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/IntegrationsModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Integrations"
        ],
        "summary": "Create Integration",
        "description": "This endpoint creates a new Integration in a specified Product \nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.\n\nThe Parameters dictionary differs for each IntegrationType:\n- Datadog\n\t- `apikey`: Required. Datadog API key.\n\t- `site`: Datadog site. Available values: `Us`, `Eu`, `Us1Fed`, `Us3`, `Us5`. Default: `Us`.\n- Slack  \n\tConnecting the Slack integration through the Public Management API will not post messages with the ConfigCat Feature Flags Slack app but with an incoming webhook.\n\t- `incoming_webhook.url`: Required. The [incoming webhook URL](https://api.slack.com/messaging/webhooks) where the integration should post messages.\n    - `includeSensitiveData`: Set to \"true\" to include [sensitive (hashed) comparison values](https://configcat.com/docs/targeting/targeting-rule/user-condition/#confidential-text-comparators). By default, the integration will mask these values in the posted messages. We recommend hiding sensitive comparison values for shared or public Slack channels.\n- Amplitude\n\t- `apiKey`: Required. Amplitude API Key.\n\t- `secretKey`: Required. Amplitude Secret Key.\n- Mixpanel\n\t- `serviceAccountUserName`: Required. Mixpanel Service Account Username.\n\t- `serviceAccountSecret`: Required. Mixpanel Service Account Secret.\n\t- `projectId`: Required. Mixpanel Project ID.\n\t- `server`: Mixpanel Server. Available values: `StandardServer`, `EUResidencyServer`. Default: `StandardServer`.\n- Twilio Segment\n\t- `writeKey`: Required. Twilio Segment Write Key.\n\t- `server`: Twilio Segment Server. Available values: `Us`, `Eu`. Default: `Us`.\n- PubNub (work in progress)",
        "operationId": "create-integration",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateIntegrationModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/IntegrationModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/segments": {
      "get": {
        "tags": [
          "Segments"
        ],
        "summary": "List Segments",
        "description": "This endpoint returns the list of the Segments that belongs to the given Product identified by the\n`productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "get-segments",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/SegmentListModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Segments"
        ],
        "summary": "Create Segment",
        "description": "This endpoint creates a new Segment in a specified Product \nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "create-segment",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateSegmentModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/SegmentModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/configs/{configId}/settings": {
      "get": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "List Flags",
        "description": "This endpoint returns the list of the Feature Flags and Settings defined in a \nspecified Config, identified by the `configId` parameter.",
        "operationId": "get-settings",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/SettingModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Create Flag",
        "description": "This endpoint creates a new Feature Flag or Setting in a specified Config\nidentified by the `configId` parameter.\n\n**Important:** The `key` attribute must be unique within the given Config.",
        "operationId": "create-setting",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateSettingInitialValues"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/SettingModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/auditlogs": {
      "get": {
        "tags": [
          "Audit logs"
        ],
        "summary": "List Audit log items for Product",
        "description": "This endpoint returns the list of Audit log items for a given Product \nand the result can be optionally filtered by Config and/or Environment.\n\nIf neither `fromUtcDateTime` nor `toUtcDateTime` is set, the audit logs for the **last 7 days** will be returned.\n\nThe distance between `fromUtcDateTime` and `toUtcDateTime` cannot exceed **30 days**.",
        "operationId": "get-auditlogs",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "configId",
            "description": "The identifier of the Config.",
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "auditLogType",
            "description": "Filter Audit logs by Audit log type."
          },
          {
            "in": "query",
            "name": "fromUtcDateTime",
            "description": "Filter Audit logs by starting UTC date.",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "toUtcDateTime",
            "description": "Filter Audit logs by ending UTC date.",
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AuditLogItemModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/staleflags": {
      "get": {
        "tags": [
          "Zombie (stale) flags"
        ],
        "summary": "List Zombie (stale) flags for Product",
        "description": "This endpoint returns the list of Zombie (stale) flags for a given Product \nand the result can be optionally filtered by various parameters.",
        "operationId": "get-staleflags",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "scope",
            "description": "The scope of the report."
          },
          {
            "in": "query",
            "name": "staleFlagAgeDays",
            "description": "The inactivity in days after a feature flag should be considered stale.",
            "type": "integer",
            "format": "int32",
            "maximum": 90,
            "minimum": 7
          },
          {
            "in": "query",
            "name": "staleFlagStaleInEnvironmentsType",
            "description": "Consider a feature flag as stale if the feature flag is stale in all/any of the environments."
          },
          {
            "in": "query",
            "name": "ignoredEnvironmentIds",
            "description": "Ignore environment identifiers from the report.",
            "type": "array",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "in": "query",
            "name": "ignoredTagIds",
            "description": "Ignore feature flags from the report based on their tag identifiers.",
            "type": "array",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/StaleFlagProductModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/settings/{settingId}/code-references": {
      "get": {
        "tags": [
          "Code References"
        ],
        "summary": "Get References for Feature Flag or Setting",
        "description": "",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Feature Flag or Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/CodeReferenceModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/configs/{configId}": {
      "get": {
        "tags": [
          "Configs"
        ],
        "summary": "Get Config",
        "description": "This endpoint returns the metadata of a Config\nidentified by the `configId`.",
        "operationId": "get-config",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the config data returned.",
            "schema": {
              "$ref": "#/definitions/ConfigModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Configs"
        ],
        "summary": "Update Config",
        "description": "This endpoint updates a Config identified by the `configId` parameter.",
        "operationId": "update-config",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateConfigRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/ConfigModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Configs"
        ],
        "summary": "Delete Config",
        "description": "This endpoint removes a Config identified by the `configId` parameter.",
        "operationId": "delete-config",
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/configs/{configId}/deleted-settings": {
      "get": {
        "tags": [
          "Audit logs"
        ],
        "summary": "List Deleted Settings",
        "description": "This endpoint returns the list of Feature Flags and Settings that were deleted from the given Config.",
        "operationId": "get-deleted-settings",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DeletedSettingModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/environments/{environmentId}": {
      "get": {
        "tags": [
          "Environments"
        ],
        "summary": "Get Environment",
        "description": "This endpoint returns the metadata of an Environment \nidentified by the `environmentId`.",
        "operationId": "get-environment",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the environment data returned.",
            "schema": {
              "$ref": "#/definitions/EnvironmentModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Environments"
        ],
        "summary": "Update Environment",
        "description": "This endpoint updates an Environment identified by the `environmentId` parameter.",
        "operationId": "update-environment",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateEnvironmentModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/EnvironmentModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Environments"
        ],
        "summary": "Delete Environment",
        "description": "This endpoint removes an Environment identified by the `environmentId` parameter.\nIf the `cleanupAuditLogs` flag is set to true, it also deletes the audit log records related to the environment\n(except for the `Created a new environment` and `Deleted an environment` records).",
        "operationId": "delete-environment",
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "cleanupAuditLogs",
            "description": "An optional flag which indicates whether the audit log records related to the environment should be deleted or not.",
            "type": "boolean"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/permissions/{permissionGroupId}": {
      "get": {
        "tags": [
          "Permission Groups"
        ],
        "summary": "Get Permission Group",
        "description": "This endpoint returns the metadata of a Permission Group \nidentified by the `permissionGroupId`.",
        "operationId": "get-permission-group",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "permissionGroupId",
            "description": "The identifier of the Permission Group.",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the permission group data returned.",
            "schema": {
              "$ref": "#/definitions/PermissionGroupModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Permission Groups"
        ],
        "summary": "Update Permission Group",
        "description": "This endpoint updates a Permission Group identified by the `permissionGroupId` parameter.",
        "operationId": "update-permission-group",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "permissionGroupId",
            "description": "The identifier of the Permission Group.",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePermissionGroupRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/PermissionGroupModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Permission Groups"
        ],
        "summary": "Delete Permission Group",
        "description": "This endpoint removes a Permission Group identified by the `permissionGroupId` parameter.",
        "operationId": "delete-permission-group",
        "parameters": [
          {
            "in": "path",
            "name": "permissionGroupId",
            "description": "The identifier of the Permission Group.",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/integrations/{integrationId}": {
      "get": {
        "tags": [
          "Integrations"
        ],
        "summary": "Get Integration",
        "description": "This endpoint returns the metadata of an Integration\nidentified by the `integrationId`.",
        "operationId": "get-integration",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "integrationId",
            "description": "The identifier of the Integration.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the integration data returned.",
            "schema": {
              "$ref": "#/definitions/IntegrationModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Integrations"
        ],
        "summary": "Update Integration",
        "description": "This endpoint updates a Config identified by the `integrationId` parameter.\n\nThe Parameters dictionary differs for each IntegrationType:\n- Datadog\n\t- `apikey`: Required. Datadog API key.\n\t- `site`: Datadog site. Available values: `Us`, `Eu`, `Us1Fed`, `Us3`, `Us5`. Default: `Us`.\n- Slack  \n\tConnecting the Slack integration through the Public Management API will not post messages with the ConfigCat Feature Flags Slack app but with an incoming webhook.\n\t- `incoming_webhook.url`: Required. The [incoming webhook URL](https://api.slack.com/messaging/webhooks) where the integration should post messages.\n\t- `includeSensitiveData`: Set to \"true\" to include [sensitive (hashed) comparison values](https://configcat.com/docs/targeting/targeting-rule/user-condition/#confidential-text-comparators). By default, the integration will mask these values in the posted messages. We recommend hiding sensitive comparison values for shared or public Slack channels.\n- Amplitude\n\t- `apiKey`: Required. Amplitude API Key.\n\t- `secretKey`: Required. Amplitude Secret Key.\n- Mixpanel\n\t- `serviceAccountUserName`: Required. Mixpanel Service Account Username.\n\t- `serviceAccountSecret`: Required. Mixpanel Service Account Secret.\n\t- `projectId`: Required. Mixpanel Project ID.\n\t- `server`: Mixpanel Server. Available values: `StandardServer`, `EUResidencyServer`. Default: `StandardServer`.\n- Twilio Segment\n\t- `writeKey`: Required. Twilio Segment Write Key.\n\t- `server`: Twilio Segment Server. Available values: `Us`, `Eu`. Default: `Us`.\n- PubNub (work in progress)",
        "operationId": "update-integration",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "integrationId",
            "description": "The identifier of the Integration.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ModifyIntegrationRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/IntegrationModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Integrations"
        ],
        "summary": "Delete Integration",
        "description": "This endpoint removes a Integration identified by the `integrationId` parameter.",
        "operationId": "delete-integration",
        "parameters": [
          {
            "in": "path",
            "name": "integrationId",
            "description": "The identifier of the Integration.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/integrationLink/{integrationLinkType}/{key}/details": {
      "get": {
        "tags": [
          "Integration links"
        ],
        "summary": "Get Integration link",
        "description": "",
        "operationId": "get-integration-link-details",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "integrationLinkType",
            "description": "The integration link's type.",
            "required": true
          },
          {
            "in": "path",
            "name": "key",
            "description": "The key of the integration link.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the details for the integration link returned.",
            "schema": {
              "$ref": "#/definitions/IntegrationLinkDetailsModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/configs/{configId}/environments/{environmentId}": {
      "get": {
        "tags": [
          "SDK Keys"
        ],
        "summary": "Get SDK Key",
        "description": "This endpoint returns the SDK Key for your Config in a specified Environment.",
        "operationId": "get-sdk-keys",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SdkKeysModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/me": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get authenticated user details",
        "description": "",
        "operationId": "get-me",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/MeModel"
            }
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/auditlogs": {
      "get": {
        "tags": [
          "Audit logs"
        ],
        "summary": "List Audit log items for Organization",
        "description": "This endpoint returns the list of Audit log items for a given Organization \nand the result can be optionally filtered by Product and/or Config and/or Environment.\n\nIf neither `fromUtcDateTime` nor `toUtcDateTime` is set, the audit logs for the **last 7 days** will be returned.\n\nThe distance between `fromUtcDateTime` and `toUtcDateTime` cannot exceed **30 days**.",
        "operationId": "get-organization-auditlogs",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "productId",
            "description": "The identifier of the Product.",
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "configId",
            "description": "The identifier of the Config.",
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "auditLogType",
            "description": "Filter Audit logs by Audit log type."
          },
          {
            "in": "query",
            "name": "fromUtcDateTime",
            "description": "Filter Audit logs by starting UTC date.",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "toUtcDateTime",
            "description": "Filter Audit logs by ending UTC date.",
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AuditLogItemModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/organization-limitations": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Get Organization limitations",
        "description": "This endpoint returns the limitations of an Organization identified by the `organizationId`.",
        "operationId": "get-organization-limitations",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/OrganizationLimitations"
            }
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/members": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List Organization Members",
        "description": "This endpoint returns the list of Members that belongs \nto the given Organization, identified by the `organizationId` parameter.\n\nThe results may vary based on the access level of the user who calls the endpoint: \n- When it's called with Organization Admin privileges, the result will contain each member in the Organization.\n- When it's called without Organization Admin privileges, the result will contain each Organization Admin along with members \n  of those products where the caller has `Team members and permission groups` (`canManageMembers`) permission.",
        "operationId": "get-organization-members",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        },
        "deprecated": true
      }
    },
    "/v2/organizations/{organizationId}/members": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List Organization Members",
        "description": "This endpoint returns the list of Members that belongs \nto the given Organization, identified by the `organizationId` parameter.\n\nThe results may vary based on the access level of the user who calls the endpoint: \n- When it's called with Organization Admin privileges, the result will contain each member in the Organization.\n- When it's called without Organization Admin privileges, the result will contain each Organization Admin along with members \n  of those products where the caller has `Team members and permission groups` (`canManageMembers`) permission.",
        "operationId": "get-organization-members-v2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/OrganizationMembersModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/invitations": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List Pending Invitations in Organization",
        "description": "This endpoint returns the list of pending invitations within the\ngiven Organization identified by the `organizationId` parameter.",
        "operationId": "get-pending-invitations-org",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/OrganizationInvitationModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/invitations": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List Pending Invitations in Product",
        "description": "This endpoint returns the list of pending invitations within the\ngiven Product identified by the `productId` parameter.",
        "operationId": "get-pending-invitations",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/InvitationModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/settings/{settingId}/predefined-variations": {
      "get": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Get predefined variations",
        "description": "This endpoint returns the predefined variations along with their usages in the Environments for a Feature Flag or Setting identified by the `settingId` parameter.",
        "operationId": "get-predefined-variations",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful.",
            "schema": {
              "$ref": "#/definitions/PredefinedVariationsWithUsagesModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Update predefined variations",
        "description": "This endpoint updates the predefined variations for a Feature Flag or Setting identified by the `settingId` parameter.\n\n**Important:** You can only update a predefined variation's value if it is not used anywhere in your feature flags.",
        "operationId": "update-predefined-variations",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePredefinedVariationsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful.",
            "schema": {
              "$ref": "#/definitions/PredefinedVariationsModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get Product",
        "description": "This endpoint returns the metadata of a Product \nidentified by the `productId`.",
        "operationId": "get-product",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the product data is returned.",
            "schema": {
              "$ref": "#/definitions/ProductModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Products"
        ],
        "summary": "Update Product",
        "description": "This endpoint updates a Product identified by the `productId` parameter.",
        "operationId": "update-product",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateProductRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/ProductModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Products"
        ],
        "summary": "Delete Product",
        "description": "This endpoint removes a Product identified by the `productId` parameter.",
        "operationId": "delete-product",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/members": {
      "get": {
        "tags": [
          "Members"
        ],
        "summary": "List Product Members",
        "description": "This endpoint returns the list of Members that belongs \nto the given Product, identified by the `productId` parameter.",
        "operationId": "get-product-members",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/MemberModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/preferences": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get Product Preferences",
        "description": "This endpoint returns the preferences of a Product \nidentified by the `productId`.",
        "operationId": "get-product-preferences",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the product preferences data is returned.",
            "schema": {
              "$ref": "#/definitions/PreferencesModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Update Product Preferences",
        "description": "This endpoint updates the preferences of a Product identified by the `productId` parameter.",
        "operationId": "update-product-preferences",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePreferencesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful.",
            "schema": {
              "$ref": "#/definitions/PreferencesModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/segments/{segmentId}": {
      "get": {
        "tags": [
          "Segments"
        ],
        "summary": "Get Segment",
        "description": "This endpoint returns the metadata of a Segment\nidentified by the `segmentId`.",
        "operationId": "get-segment",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "segmentId",
            "description": "The identifier of the Segment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the config data returned.",
            "schema": {
              "$ref": "#/definitions/SegmentModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Segments"
        ],
        "summary": "Update Segment",
        "description": "This endpoint updates a Segment identified by the `segmentId` parameter.",
        "operationId": "update-segment",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "segmentId",
            "description": "The identifier of the Segment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateSegmentModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SegmentModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Segments"
        ],
        "summary": "Delete Segment",
        "description": "This endpoint removes a Segment identified by the `segmentId` parameter.",
        "operationId": "delete-segment",
        "parameters": [
          {
            "in": "path",
            "name": "segmentId",
            "description": "The identifier of the Segment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/settings/{settingId}": {
      "get": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Get Flag",
        "description": "This endpoint returns the metadata attributes of a Feature Flag or Setting \nidentified by the `settingId` parameter.",
        "operationId": "get-setting",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the setting data returned.",
            "schema": {
              "$ref": "#/definitions/SettingModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Replace Flag",
        "description": "This endpoint replaces the whole value of a Feature Flag or Setting\nidentified by the `settingId` parameter.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't \nwant to change in its original state. Not listing one means it will reset.",
        "operationId": "replace-setting",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReplaceSettingModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the replace was successful.",
            "schema": {
              "$ref": "#/definitions/SettingModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Update Flag",
        "description": "This endpoint updates the metadata of a Feature Flag or Setting \nwith a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Config.\n\nOnly the `name`, `hint` and `tags` attributes are modifiable by this endpoint.\nThe `tags` attribute is a simple collection of the [tag IDs](#operation/get-tags) attached to the given setting.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource\nwithout touching attributes that you don't want to change.\n\nFor example: We have the following resource.\n```json\n{\n  \"settingId\": 5345,\n  \"key\": \"myGrandFeature\",\n  \"name\": \"Tihs is a naem with soem typos.\",\n  \"hint\": \"This flag controls my grandioso feature.\",\n  \"settingType\": \"boolean\",\n  \"tags\": [\n    {\n      \"tagId\": 0, \n      \"name\": \"sample tag\", \n      \"color\": \"whale\"\n    }\n  ]\n}\n```\nIf we send an update request body as below (it changes the `name` and adds the already existing tag with the id `2`):\n```json\n[\n  {\n    \"op\": \"replace\", \n    \"path\": \"/name\", \n    \"value\": \"This is the name without typos.\"\n  }, \n  {\n    \"op\": \"add\", \n    \"path\": \"/tags/-\", \n    \"value\": 2\n  }\n]\n```\nOnly the `name` and `tags` are updated and all the other attributes remain unchanged.\nSo we get a response like this:\n```json\n{\n  \"settingId\": 5345, \n  \"key\": \"myGrandFeature\", \n  \"name\": \"This is the name without typos.\", \n  \"hint\": \"This flag controls my grandioso feature.\", \n  \"settingType\": \"boolean\", \n  \"tags\": [\n    {\n      \"tagId\": 0, \n      \"name\": \"sample tag\", \n      \"color\": \"whale\"\n    }, \n    {\n      \"tagId\": 2, \n      \"name\": \"another tag\", \n      \"color\": \"koala\"\n    }\n  ]\n}\n```",
        "operationId": "update-setting",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful.",
            "schema": {
              "$ref": "#/definitions/SettingModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Feature Flags & Settings"
        ],
        "summary": "Delete Flag",
        "description": "This endpoint removes a Feature Flag or Setting from a specified Config, \nidentified by the `configId` parameter.",
        "operationId": "delete-setting",
        "parameters": [
          {
            "in": "path",
            "name": "settingId",
            "description": "The identifier of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/tags/{tagId}/settings": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "List Settings by Tag",
        "description": "This endpoint returns the list of the Settings that \nhas the specified Tag, identified by the `tagId` parameter.",
        "operationId": "get-settings-by-tag",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "description": "The identifier of the Tag.",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the settings data returned.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/SettingModel"
              }
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/settings/{settingKeyOrId}/value": {
      "get": {
        "tags": [
          "Feature Flag & Setting values using SDK Key"
        ],
        "summary": "Get value",
        "description": "This endpoint returns the value of a Feature Flag or Setting \nin a specified Environment identified by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.\n\nThe most important attributes in the response are the `value`, `rolloutRules` and `percentageRules`.\nThe `value` represents what the clients will get when the evaluation requests of our SDKs \nare not matching to any of the defined Targeting or Percentage Rules, or when there are no additional rules to evaluate.\n\nThe `rolloutRules` and `percentageRules` attributes are representing the current \nTargeting and Percentage Rules configuration of the actual Feature Flag or Setting \nin an **ordered** collection, which means the order of the returned rules is matching to the\nevaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).",
        "operationId": "get-setting-value-by-sdkkey",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingKeyOrId",
            "description": "The key or id of the Setting.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-CONFIGCAT-SDKKEY",
            "description": "The ConfigCat SDK Key. (https://app.configcat.com/sdkkey)",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingValueModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Feature Flag & Setting values using SDK Key"
        ],
        "summary": "Replace value",
        "description": "This endpoint replaces the value of a Feature Flag or Setting \nin a specified Environment identified by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.\n\nOnly the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't \nwant to change to its original state. Not listing one means it will reset.\n\nFor example: We have the following resource.\n```json\n{\n  \"rolloutPercentageItems\": [\n    {\n      \"percentage\": 30,\n      \"value\": true\n    },\n    {\n      \"percentage\": 70,\n      \"value\": false\n    }\n  ],\n  \"rolloutRules\": [],\n  \"value\": false\n}\n```\nIf we send a replace request body as below:\n```json\n{\n  \"value\": true\n}\n```\nThen besides that the default served value is set to `true`, all the Percentage Rules are deleted. \nSo we get a response like this:\n```json\n{\n  \"rolloutPercentageItems\": [],\n  \"rolloutRules\": [],\n  \"value\": true\n}\n```",
        "operationId": "replace-setting-value-by-sdkkey",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingKeyOrId",
            "description": "The key or id of the Setting.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-CONFIGCAT-SDKKEY",
            "description": "The ConfigCat SDK Key. (https://app.configcat.com/sdkkey)",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateSettingValueModel"
            },
            "x-examples": {
              "simple": {
                "description": "This example turns on a feature flag.",
                "value": {
                  "value": true
                }
              },
              "advanced": {
                "description": "This example turns on a feature flag and adds two items to its percentage evaluation rules.",
                "value": {
                  "value": true,
                  "rolloutPercentageItems": [
                    {
                      "percentage": 30,
                      "value": true
                    },
                    {
                      "percentage": 70,
                      "value": false
                    }
                  ]
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingValueModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Feature Flag & Setting values using SDK Key"
        ],
        "summary": "Update value",
        "description": "This endpoint updates the value of a Feature Flag or Setting \nwith a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Environment\nidentified by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.\n\nOnly the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource\nwithout touching attributes that you don't want to change. It supports collection reordering, so it also \ncan be used for reordering the targeting rules of a Feature Flag or Setting.\n\nFor example: We have the following resource.\n```json\n{\n  \"rolloutPercentageItems\": [\n    {\n      \"percentage\": 30,\n      \"value\": true\n    },\n    {\n      \"percentage\": 70,\n      \"value\": false\n    }\n  ],\n  \"rolloutRules\": [],\n  \"value\": false\n}\n```\nIf we send an update request body as below:\n```json\n[\n  {\n    \"op\": \"replace\",\n    \"path\": \"/value\",\n    \"value\": true\n  }\n]\n```\nOnly the default served value is going to be set to `true` and all the Percentage Rules are remaining unchanged.\nSo we get a response like this:\n```json\n{\n  \"rolloutPercentageItems\": [\n    {\n      \"percentage\": 30,\n      \"value\": true\n    },\n    {\n      \"percentage\": 70,\n      \"value\": false\n    }\n  ],\n  \"rolloutRules\": [],\n  \"value\": true\n}\n```",
        "operationId": "update-setting-value-by-sdkkey",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingKeyOrId",
            "description": "The key or id of the Setting.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-CONFIGCAT-SDKKEY",
            "description": "The ConfigCat SDK Key. (https://app.configcat.com/sdkkey)",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            },
            "x-examples": {
              "turn on a feature flag": {
                "description": "This example turns on a feature flag.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/value",
                    "value": true
                  }
                ]
              },
              "add percentage rules": {
                "description": "This example adds two items to the percentage evaluation rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/rolloutPercentageItems/-",
                    "value": {
                      "percentage": 30,
                      "value": true
                    }
                  },
                  {
                    "op": "add",
                    "path": "/rolloutPercentageItems/-",
                    "value": {
                      "percentage": 70,
                      "value": false
                    }
                  }
                ]
              },
              "add targeting rules": {
                "description": "This example adds two items to the targeting evaluation rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/rolloutRules/-",
                    "value": {
                      "comparisonAttribute": "Identifier",
                      "comparator": "contains",
                      "comparisonValue": "@example.com",
                      "value": true
                    }
                  },
                  {
                    "op": "add",
                    "path": "/rolloutRules/-",
                    "value": {
                      "comparisonAttribute": "Identifier",
                      "comparator": "isOneOf",
                      "comparisonValue": "@blacklist.com",
                      "value": false
                    }
                  }
                ]
              },
              "modify targeting rule": {
                "description": "This example modifies the first targeting rule's comparison value and the second's value.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/rolloutRules/0/comparisonValue",
                    "value": "@example2.com"
                  },
                  {
                    "op": "replace",
                    "path": "/rolloutRules/1/value",
                    "value": true
                  }
                ]
              },
              "add segment rules": {
                "description": "This example adds a segment to the evaluation rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/rolloutRules/-",
                    "value": {
                      "segmentComparator": "isIn",
                      "segmentId": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                    }
                  }
                ]
              },
              "reorder targeting rules": {
                "description": "This example swaps the first and the second targeting evaluation rule.",
                "value": [
                  {
                    "op": "move",
                    "path": "/rolloutRules/1",
                    "from": "/rolloutRules/0"
                  }
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingValueModel"
            }
          },
          "204": {
            "description": "When no change applied on the resource."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/environments/{environmentId}/settings/{settingId}/value": {
      "get": {
        "tags": [
          "Feature Flag & Setting values"
        ],
        "summary": "Get value",
        "description": "This endpoint returns the value of a Feature Flag or Setting \nin a specified Environment identified by the `environmentId` parameter.\n\nThe most important attributes in the response are the `value`, `rolloutRules` and `percentageRules`.\nThe `value` represents what the clients will get when the evaluation requests of our SDKs \nare not matching to any of the defined Targeting or Percentage Rules, or when there are no additional rules to evaluate.\n\nThe `rolloutRules` and `percentageRules` attributes are representing the current \nTargeting and Percentage Rules configuration of the actual Feature Flag or Setting \nin an **ordered** collection, which means the order of the returned rules is matching to the\nevaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview).",
        "operationId": "get-setting-value",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the setting value data returned.",
            "schema": {
              "$ref": "#/definitions/SettingValueModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Feature Flag & Setting values"
        ],
        "summary": "Replace value",
        "description": "This endpoint replaces the whole value of a Feature Flag or Setting in a specified Environment.\n\nOnly the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't \nwant to change in its original state. Not listing one means it will reset.\n\nFor example: We have the following resource.\n```json\n{\n  \"rolloutPercentageItems\": [\n    {\n      \"percentage\": 30,\n      \"value\": true\n    },\n    {\n      \"percentage\": 70,\n      \"value\": false\n    }\n  ],\n  \"rolloutRules\": [],\n  \"value\": false\n}\n```\nIf we send a replace request body as below:\n```json\n{\n  \"value\": true\n}\n```\nThen besides that the default value is set to `true`, all the Percentage Rules are deleted. \nSo we get a response like this:\n```json\n{\n  \"rolloutPercentageItems\": [],\n  \"rolloutRules\": [],\n  \"value\": true\n}\n```\n\nThe `rolloutRules` property describes two types of rules:\n\n- **Targeting rules**: When you want to add or update a targeting rule, the `comparator`, `comparisonAttribute`, and `comparisonValue` members are required.\n- **Segment rules**: When you want to add add or update a segment rule, the `segmentId` which identifies the desired segment and the `segmentComparator` members are required.",
        "operationId": "replace-setting-value",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateSettingValueModel"
            },
            "x-examples": {
              "simple": {
                "description": "This example turns on a feature flag.",
                "value": {
                  "value": true
                }
              },
              "advanced": {
                "description": "This example turns on a feature flag and adds two items to its percentage evaluation rules.",
                "value": {
                  "value": true,
                  "rolloutPercentageItems": [
                    {
                      "percentage": 30,
                      "value": true
                    },
                    {
                      "percentage": 70,
                      "value": false
                    }
                  ]
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingValueModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Feature Flag & Setting values"
        ],
        "summary": "Update value",
        "description": "This endpoint updates the value of a Feature Flag or Setting \nwith a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Environment.\n\nOnly the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource\nwithout touching attributes that you don't want to change. It supports collection reordering, so it also \ncan be used for reordering the targeting rules of a Feature Flag or Setting.\n\nFor example: We have the following resource.\n```json\n{\n  \"rolloutPercentageItems\": [\n    {\n      \"percentage\": 30,\n      \"value\": true\n    },\n    {\n      \"percentage\": 70,\n      \"value\": false\n    }\n  ],\n  \"rolloutRules\": [],\n  \"value\": false\n}\n```\nIf we send an update request body as below:\n```json\n[\n  {\n    \"op\": \"replace\",\n    \"path\": \"/value\",\n    \"value\": true\n  }\n]\n```\nOnly the default value is going to be set to `true` and all the Percentage Rules are remaining unchanged.\nSo we get a response like this:\n```json\n{\n  \"rolloutPercentageItems\": [\n    {\n      \"percentage\": 30,\n      \"value\": true\n    },\n    {\n      \"percentage\": 70,\n      \"value\": false\n    }\n  ],\n  \"rolloutRules\": [],\n  \"value\": true\n}\n```\n\nThe `rolloutRules` property describes two types of rules:\n\n- **Targeting rules**: When you want to add or update a targeting rule, the `comparator`, `comparisonAttribute`, and `comparisonValue` members are required.\n- **Segment rules**: When you want to add add or update a segment rule, the `segmentId` which identifies the desired segment and the `segmentComparator` members are required.",
        "operationId": "update-setting-value",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            },
            "x-examples": {
              "turn on a feature flag": {
                "description": "This example turns on a feature flag.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/value",
                    "value": true
                  }
                ]
              },
              "add percentage rules": {
                "description": "This example adds two items to the percentage evaluation rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/rolloutPercentageItems/-",
                    "value": {
                      "percentage": 30,
                      "value": true
                    }
                  },
                  {
                    "op": "add",
                    "path": "/rolloutPercentageItems/-",
                    "value": {
                      "percentage": 70,
                      "value": false
                    }
                  }
                ]
              },
              "add targeting rules": {
                "description": "This example adds two items to the targeting evaluation rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/rolloutRules/-",
                    "value": {
                      "comparisonAttribute": "Identifier",
                      "comparator": "contains",
                      "comparisonValue": "@example.com",
                      "value": true
                    }
                  },
                  {
                    "op": "add",
                    "path": "/rolloutRules/-",
                    "value": {
                      "comparisonAttribute": "Identifier",
                      "comparator": "isOneOf",
                      "comparisonValue": "@blacklist.com",
                      "value": false
                    }
                  }
                ]
              },
              "modify targeting rule": {
                "description": "This example modifies the first targeting rule's comparison value and the second's value.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/rolloutRules/0/comparisonValue",
                    "value": "@example2.com"
                  },
                  {
                    "op": "replace",
                    "path": "/rolloutRules/1/value",
                    "value": true
                  }
                ]
              },
              "add segment rules": {
                "description": "This example adds a segment to the evaluation rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/rolloutRules/-",
                    "value": {
                      "segmentComparator": "isIn",
                      "segmentId": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                    }
                  }
                ]
              },
              "reorder targeting rules": {
                "description": "This example swaps the first and the second targeting evaluation rule.",
                "value": [
                  {
                    "op": "move",
                    "path": "/rolloutRules/1",
                    "from": "/rolloutRules/0"
                  }
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the patch was successful.",
            "schema": {
              "$ref": "#/definitions/SettingValueModel"
            }
          },
          "204": {
            "description": "When no change applied on the resource."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v2/settings/{settingKeyOrId}/value": {
      "get": {
        "tags": [
          "Feature Flag & Setting values using SDK Key V2"
        ],
        "summary": "Get value",
        "description": "This endpoint returns the value of a Feature Flag or Setting\nin a specified Environment identified by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.\n\nThe most important fields in the response are the `defaultValue`, `targetingRules`.\nThe `defaultValue` represents what the clients will get when the evaluation requests of our SDKs\nare not matching to any of the defined Targeting Rules, or when there are no additional rules to evaluate.\n\nThe `targetingRules` represents the current\nTargeting Rule configuration of the actual Feature Flag or Setting\nin an **ordered** collection, which means the order of the returned rules is matching to the\nevaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).\n\nThe `percentageEvaluationAttribute` represents the custom [User Object](https://configcat.com/docs/targeting/user-object/) attribute that must be used at the [percentage evaluation](https://configcat.com/docs/advanced/targeting/#anatomy-of-the-percentage-based-targeting) of the Feature Flag or Setting.",
        "operationId": "get-setting-value-by-sdkkey-v2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingKeyOrId",
            "description": "The key or id of the Setting.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-CONFIGCAT-SDKKEY",
            "description": "The ConfigCat SDK Key. (https://app.configcat.com/sdkkey)",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingFormulaModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Feature Flag & Setting values using SDK Key V2"
        ],
        "summary": "Replace value",
        "description": "This endpoint replaces the value and the Targeting Rules of a Feature Flag or Setting\nin a specified Environment identified by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.\n\nOnly the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute` fields are modifiable by this endpoint.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other field that you don't\nwant to change to its original state. Not listing one means it will reset.\n\nFor example: We have the following resource of a Feature Flag.\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": false\n  },\n  \"targetingRules\": [\n    {\n      \"conditions\": [\n        {\n          \"userCondition\": {\n            \"comparisonAttribute\": \"Email\",\n            \"comparator\": \"sensitiveTextEquals\",\n            \"comparisonValue\": {\n              \"stringValue\": \"test@example.com\"\n            }\n          }\n        }\n      ],\n      \"percentageOptions\": [],\n      \"value\": {\n        \"boolValue\": true\n      }\n    }\n  ]\n}\n```\nIf we send a replace request body as below:\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": true\n  }\n}\n```\nThen besides that the default served value is set to `true`, all the Targeting Rules are deleted.\nSo we get a response like this:\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": true\n  },\n  \"targetingRules\": []\n}\n```",
        "operationId": "replace-setting-value-by-sdkkey-v2",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingKeyOrId",
            "description": "The key or id of the Setting.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-CONFIGCAT-SDKKEY",
            "description": "The ConfigCat SDK Key. (https://app.configcat.com/sdkkey)",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateEvaluationFormulaModel"
            },
            "x-examples": {
              "simple": {
                "description": "This example turns on a feature flag.",
                "value": {
                  "defaultValue": {
                    "boolValue": true
                  }
                }
              },
              "advanced": {
                "description": "This example turns on a feature flag and adds an evaluation rule with two conditions to its targeting rules.",
                "value": {
                  "defaultValue": {
                    "boolValue": true
                  },
                  "targetingRules": [
                    {
                      "conditions": [
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Email",
                            "comparisonValue": {
                              "stringValue": "example@test.com"
                            }
                          }
                        },
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Role",
                            "comparisonValue": {
                              "stringValue": "Developer"
                            }
                          }
                        }
                      ],
                      "value": {
                        "boolValue": false
                      }
                    }
                  ]
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingFormulaModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Feature Flag & Setting values using SDK Key V2"
        ],
        "summary": "Update value",
        "description": "This endpoint updates the value of a Feature Flag or Setting\nwith a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Environment.\n\nOnly the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute` fields are modifiable by this endpoint.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource\nwithout touching attributes that you don't want to change. It supports collection reordering, so it also\ncan be used for reordering the targeting rules of a Feature Flag or Setting.\n\nFor example: We have the following resource of a Feature Flag.\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": false\n  },\n  \"targetingRules\": [\n    {\n      \"conditions\": [\n        {\n          \"userCondition\": {\n            \"comparisonAttribute\": \"Email\",\n            \"comparator\": \"sensitiveTextEquals\",\n            \"comparisonValue\": {\n              \"stringValue\": \"test@example.com\"\n            }\n          }\n        }\n      ],\n      \"percentageOptions\": [],\n      \"value\": {\n        \"boolValue\": true\n      }\n    }\n  ]\n}\n```\nIf we send an update request body as below:\n```json\n[\n  {\n    \"op\": \"replace\",\n    \"path\": \"/targetingRules/0/value/boolValue\",\n    \"value\": true\n  }\n]\n```\nOnly the first Targeting Rule's `value` is going to be set to `false` and all the other fields are remaining unchanged.\n\nSo we get a response like this:\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": false\n  },\n  \"targetingRules\": [\n    {\n      \"conditions\": [\n        {\n          \"userCondition\": {\n            \"comparisonAttribute\": \"Email\",\n            \"comparator\": \"sensitiveTextEquals\",\n            \"comparisonValue\": {\n              \"stringValue\": \"test@example.com\"\n            }\n          }\n        }\n      ],\n      \"percentageOptions\": [],\n      \"value\": {\n        \"boolValue\": false\n      }\n    }\n  ]\n}\n```",
        "operationId": "update-setting-value-by-sdkkey-v2",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "settingKeyOrId",
            "description": "The key or id of the Setting.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "header",
            "name": "X-CONFIGCAT-SDKKEY",
            "description": "The ConfigCat SDK Key. (https://app.configcat.com/sdkkey)",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            },
            "x-examples": {
              "turn on a feature flag": {
                "description": "This example turns on a feature flag.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/defaultValue/boolValue",
                    "value": true
                  }
                ]
              },
              "change the default value to a predefined variation": {
                "description": "This example changes a feature flag's default value with predefined variations.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/defaultValue/predefinedVariationId",
                    "value": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                  }
                ]
              },
              "add targeting rules": {
                "description": "This example adds an evaluation rule with two conditions to the Flag's targeting rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/-",
                    "value": {
                      "conditions": [
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Email",
                            "comparisonValue": {
                              "stringValue": "example@test.com"
                            }
                          }
                        },
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Role",
                            "comparisonValue": {
                              "stringValue": "Developer"
                            }
                          }
                        }
                      ],
                      "value": {
                        "boolValue": false
                      }
                    }
                  }
                ]
              },
              "modify targeting rule": {
                "description": "This example modifies a targeting rule's value.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/targetingRules/0/value/boolValue",
                    "value": "true"
                  }
                ]
              },
              "modify targeting rule with predefined variations": {
                "description": "This example modifies a targeting rule's value for a setting that is using predefined variations.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/targetingRules/0/value/predefinedVariationId",
                    "value": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                  }
                ]
              },
              "modify targeting rule's condition": {
                "description": "This example modifies a condition's comparison attribute within a targeting rule.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/targetingRules/0/conditions/0/userCondition/comparisonAttribute",
                    "value": "Role"
                  }
                ]
              },
              "add segment condition": {
                "description": "This example adds a segment condition to a targeting rule.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/0/conditions/-",
                    "value": {
                      "segmentCondition": {
                        "segmentComparator": "isIn",
                        "segmentId": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                      }
                    }
                  }
                ]
              },
              "add prerequisite flag condition": {
                "description": "This example adds a prerequisite flag condition to a targeting rule.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/0/conditions/-",
                    "value": {
                      "prerequisiteFlagCondition": {
                        "prerequisiteSettingId": 123,
                        "comparator": "isIn",
                        "prerequisiteComparisonValue": {
                          "boolValue": true
                        }
                      }
                    }
                  }
                ]
              },
              "add prerequisite flag condition with predefined variations": {
                "description": "This example adds a prerequisite flag condition to a targeting rule for a setting that is using predefined variations.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/0/conditions/-",
                    "value": {
                      "prerequisiteFlagCondition": {
                        "prerequisiteSettingId": 123,
                        "comparator": "isIn",
                        "prerequisiteComparisonValue": {
                          "predefinedVariationId": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                        }
                      }
                    }
                  }
                ]
              },
              "reorder targeting rules": {
                "description": "This example swaps the first and the second targeting rule.",
                "value": [
                  {
                    "op": "move",
                    "path": "/targetingRules/1",
                    "from": "/targetingRules/0"
                  }
                ]
              },
              "reorder targeting rule conditions": {
                "description": "This example swaps the first and the second condition of a targeting rule.",
                "value": [
                  {
                    "op": "move",
                    "path": "/targetingRules/0/conditions/1",
                    "from": "/targetingRules/0/conditions/0"
                  }
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingFormulaModel"
            }
          },
          "204": {
            "description": "When no change applied on the resource."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v2/environments/{environmentId}/settings/{settingId}/value": {
      "get": {
        "tags": [
          "Feature Flag & Setting values V2"
        ],
        "summary": "Get value",
        "description": "This endpoint returns the value of a Feature Flag or Setting\nin a specified Environment identified by the `environmentId` parameter.\n\nThe most important fields in the response are the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute`.\nThe `defaultValue` represents what the clients will get when the evaluation requests of our SDKs\nare not matching to any of the defined Targeting Rules, or when there are no additional rules to evaluate.\n\nThe `targetingRules` represents the current\nTargeting Rule configuration of the actual Feature Flag or Setting\nin an **ordered** collection, which means the order of the returned rules is matching to the\nevaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).\n\nThe `percentageEvaluationAttribute` represents the custom [User Object](https://configcat.com/docs/targeting/user-object/) attribute that must be used for [percentage evaluation](https://configcat.com/docs/targeting/percentage-options/) of the Feature Flag or Setting.",
        "operationId": "get-setting-value-v2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the setting value data returned.",
            "schema": {
              "$ref": "#/definitions/SettingFormulaModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Feature Flag & Setting values V2"
        ],
        "summary": "Replace value",
        "description": "This endpoint replaces the value and the Targeting Rules of a Feature Flag or Setting\nin a specified Environment identified by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in the `X-CONFIGCAT-SDKKEY` header.\n\nOnly the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute` fields are modifiable by this endpoint.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other field that you don't\nwant to change to its original state. Not listing one means it will reset.\n\nFor example: We have the following resource of a Feature Flag.\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": false\n  },\n  \"targetingRules\": [\n    {\n      \"conditions\": [\n        {\n          \"userCondition\": {\n            \"comparisonAttribute\": \"Email\",\n            \"comparator\": \"sensitiveTextEquals\",\n            \"comparisonValue\": {\n              \"stringValue\": \"test@example.com\"\n            }\n          }\n        }\n      ],\n      \"percentageOptions\": [],\n      \"value\": {\n        \"boolValue\": true\n      }\n    }\n  ]\n}\n```\nIf we send a replace request body as below:\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": true\n  }\n}\n```\nThen besides that the default served value is set to `true`, all the Targeting Rules are deleted.\nSo we get a response like this:\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": true\n  },\n  \"targetingRules\": []\n}\n```",
        "operationId": "replace-setting-value-v2",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateEvaluationFormulaModel"
            },
            "x-examples": {
              "simple": {
                "description": "This example turns on a feature flag.",
                "value": {
                  "defaultValue": {
                    "boolValue": true
                  }
                }
              },
              "advanced": {
                "description": "This example turns on a feature flag and adds an evaluation rule with two conditions to its targeting rules.",
                "value": {
                  "defaultValue": {
                    "boolValue": true
                  },
                  "targetingRules": [
                    {
                      "conditions": [
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Email",
                            "comparisonValue": {
                              "stringValue": "example@test.com"
                            }
                          }
                        },
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Role",
                            "comparisonValue": {
                              "stringValue": "Developer"
                            }
                          }
                        }
                      ],
                      "value": {
                        "boolValue": false
                      }
                    }
                  ]
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SettingFormulaModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Feature Flag & Setting values V2"
        ],
        "summary": "Update value",
        "description": "This endpoint updates the value of a Feature Flag or Setting\nwith a collection of [JSON Patch](https://jsonpatch.com) operations in a specified Environment.\n\nOnly the `defaultValue`, `targetingRules`, and `percentageEvaluationAttribute` fields are modifiable by this endpoint.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource\nwithout touching attributes that you don't want to change. It supports collection reordering, so it also\ncan be used for reordering the targeting rules of a Feature Flag or Setting.\n\nFor example: We have the following resource of a Feature Flag.\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": false\n  },\n  \"targetingRules\": [\n    {\n      \"conditions\": [\n        {\n          \"userCondition\": {\n            \"comparisonAttribute\": \"Email\",\n            \"comparator\": \"sensitiveTextEquals\",\n            \"comparisonValue\": {\n              \"stringValue\": \"test@example.com\"\n            }\n          }\n        }\n      ],\n      \"percentageOptions\": [],\n      \"value\": {\n        \"boolValue\": true\n      }\n    }\n  ]\n}\n```\nIf we send an update request body as below:\n```json\n[\n  {\n    \"op\": \"replace\",\n    \"path\": \"/targetingRules/0/value/boolValue\",\n    \"value\": true\n  }\n]\n```\nOnly the first Targeting Rule's `value` is going to be set to `false` and all the other fields are remaining unchanged.\n\nSo we get a response like this:\n```json\n{\n  \"defaultValue\": {\n    \"boolValue\": false\n  },\n  \"targetingRules\": [\n    {\n      \"conditions\": [\n        {\n          \"userCondition\": {\n            \"comparisonAttribute\": \"Email\",\n            \"comparator\": \"sensitiveTextEquals\",\n            \"comparisonValue\": {\n              \"stringValue\": \"test@example.com\"\n            }\n          }\n        }\n      ],\n      \"percentageOptions\": [],\n      \"value\": {\n        \"boolValue\": false\n      }\n    }\n  ]\n}\n```",
        "operationId": "update-setting-value-v2",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            },
            "x-examples": {
              "turn on a feature flag": {
                "description": "This example turns on a feature flag.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/defaultValue/boolValue",
                    "value": true
                  }
                ]
              },
              "change the default value to a predefined variation": {
                "description": "This example changes a feature flag's default value with predefined variations.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/defaultValue/predefinedVariationId",
                    "value": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                  }
                ]
              },
              "add targeting rules": {
                "description": "This example adds an evaluation rule with two conditions to the Flag's targeting rules.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/-",
                    "value": {
                      "conditions": [
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Email",
                            "comparisonValue": {
                              "stringValue": "example@test.com"
                            }
                          }
                        },
                        {
                          "userCondition": {
                            "comparator": "sensitiveTextEquals",
                            "comparisonAttribute": "Role",
                            "comparisonValue": {
                              "stringValue": "Developer"
                            }
                          }
                        }
                      ],
                      "value": {
                        "boolValue": false
                      }
                    }
                  }
                ]
              },
              "modify targeting rule": {
                "description": "This example modifies a targeting rule's value.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/targetingRules/0/value/boolValue",
                    "value": "true"
                  }
                ]
              },
              "modify targeting rule with predefined variations": {
                "description": "This example modifies a targeting rule's value for a setting that is using predefined variations.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/targetingRules/0/value/predefinedVariationId",
                    "value": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                  }
                ]
              },
              "modify targeting rule's condition": {
                "description": "This example modifies a condition's comparison attribute within a targeting rule.",
                "value": [
                  {
                    "op": "replace",
                    "path": "/targetingRules/0/conditions/0/userCondition/comparisonAttribute",
                    "value": "Role"
                  }
                ]
              },
              "add segment condition": {
                "description": "This example adds a segment condition to a targeting rule.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/0/conditions/-",
                    "value": {
                      "segmentCondition": {
                        "segmentComparator": "isIn",
                        "segmentId": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                      }
                    }
                  }
                ]
              },
              "add prerequisite flag condition": {
                "description": "This example adds a prerequisite flag condition to a targeting rule.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/0/conditions/-",
                    "value": {
                      "prerequisiteFlagCondition": {
                        "prerequisiteSettingId": 123,
                        "comparator": "isIn",
                        "prerequisiteComparisonValue": {
                          "boolValue": true
                        }
                      }
                    }
                  }
                ]
              },
              "add prerequisite flag condition with predefined variations": {
                "description": "This example adds a prerequisite flag condition to a targeting rule for a setting that is using predefined variations.",
                "value": [
                  {
                    "op": "add",
                    "path": "/targetingRules/0/conditions/-",
                    "value": {
                      "prerequisiteFlagCondition": {
                        "prerequisiteSettingId": 123,
                        "comparator": "isIn",
                        "prerequisiteComparisonValue": {
                          "predefinedVariationId": "008a1fd6-8245-4ea8-90dc-a1dc36c1b4ff"
                        }
                      }
                    }
                  }
                ]
              },
              "reorder targeting rules": {
                "description": "This example swaps the first and the second targeting rule.",
                "value": [
                  {
                    "op": "move",
                    "path": "/targetingRules/1",
                    "from": "/targetingRules/0"
                  }
                ]
              },
              "reorder targeting rule conditions": {
                "description": "This example swaps the first and the second condition of a targeting rule.",
                "value": [
                  {
                    "op": "move",
                    "path": "/targetingRules/0/conditions/1",
                    "from": "/targetingRules/0/conditions/0"
                  }
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the patch was successful.",
            "schema": {
              "$ref": "#/definitions/SettingFormulaModel"
            }
          },
          "204": {
            "description": "When no change applied on the resource."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/configs/{configId}/environments/{environmentId}/values": {
      "get": {
        "tags": [
          "Feature Flag & Setting values"
        ],
        "summary": "Get values",
        "description": "This endpoint returns the value of a specified Config's Feature Flags or Settings identified by the `configId` parameter\nin a specified Environment identified by the `environmentId` parameter.\n\nThe most important attributes in the response are the `value`, `rolloutRules` and `percentageRules`.\nThe `value` represents what the clients will get when the evaluation requests of our SDKs \nare not matching to any of the defined Targeting or Percentage Rules, or when there are no additional rules to evaluate.\n\nThe `rolloutRules` and `percentageRules` attributes are representing the current \nTargeting and Percentage Rules configuration of the actual Feature Flag or Setting \nin an **ordered** collection, which means the order of the returned rules is matching to the\nevaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).",
        "operationId": "get-setting-values",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the setting values returned.",
            "schema": {
              "$ref": "#/definitions/ConfigSettingValuesModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Feature Flag & Setting values"
        ],
        "summary": "Post values",
        "description": "This endpoint replaces the values of a specified Config's Feature Flags or Settings identified by the `configId` parameter\nin a specified Environment identified by the `environmentId` parameter.\n\nOnly the `value`, `rolloutRules` and `percentageRules` attributes are modifiable by this endpoint.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't \nwant to change in its original state. Not listing one means it will reset.\n\nFor example: We have the following resource.\n```json\n{\n  \"settingValues\": [\n    {\n      \"rolloutPercentageItems\": [\n        {\n          \"percentage\": 30,\n          \"value\": true\n        },\n        {\n          \"percentage\": 70,\n          \"value\": false\n        }\n      ],\n      \"rolloutRules\": [],\n      \"value\": false,\n      \"settingId\": 1\n    }\n  ]\n}\n```\nIf we send a replace request body as below:\n```json\n{ \n  \"settingValues\": [\n    {\n      \"value\": true,\n      \"settingId\": 1\n    }\n  ]\n}\n```\nThen besides that the default value is set to `true`, all the Percentage Rules are deleted. \nSo we get a response like this:\n```json\n{\n  \"settingValues\": [\n    {\n      \"rolloutPercentageItems\": [],\n      \"rolloutRules\": [],\n      \"value\": true,\n      \"setting\": \n      {\n        \"settingId\": 1\n      }\n    }\n  ]\n}\n```\n\nThe `rolloutRules` property describes two types of rules:\n\n- **Targeting rules**: When you want to add or update a targeting rule, the `comparator`, `comparisonAttribute`, and `comparisonValue` members are required.\n- **Segment rules**: When you want to add add or update a segment rule, the `segmentId` which identifies the desired segment and the `segmentComparator` members are required.",
        "operationId": "post-setting-values",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateSettingValuesWithIdModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the updated setting values returned.",
            "schema": {
              "$ref": "#/definitions/ConfigSettingValuesModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v2/configs/{configId}/environments/{environmentId}/values": {
      "get": {
        "tags": [
          "Feature Flag & Setting values V2"
        ],
        "summary": "Get values",
        "description": "This endpoint returns all Feature Flag and Setting values of a Config identified by the `configId` parameter\nin a specified Environment identified by the `environmentId` parameter.\n\nThe most important fields in the response are the `defaultValue`, `targetingRules`.\nThe `defaultValue` represents what the clients will get when the evaluation requests of our SDKs\nare not matching to any of the defined Targeting Rules, or when there are no additional rules to evaluate.\n\nThe `targetingRules` represents the current\nTargeting Rule configuration of the actual Feature Flag or Setting\nin an **ordered** collection, which means the order of the returned rules is matching to the\nevaluation order. You can read more about these rules [here](https://configcat.com/docs/targeting/targeting-overview/).\n\nThe `percentageEvaluationAttribute` represents the custom [User Object](https://configcat.com/docs/targeting/user-object/) attribute that must be used for [percentage evaluation](https://configcat.com/docs/targeting/percentage-options/) of the Feature Flag or Setting.",
        "operationId": "get-setting-values-v2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the setting values returned.",
            "schema": {
              "$ref": "#/definitions/ConfigSettingFormulasModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "post": {
        "tags": [
          "Feature Flag & Setting values V2"
        ],
        "summary": "Post values",
        "description": "This endpoint batch updates the Feature Flags and Settings of a Config identified by the `configId` parameter\nin a specified Environment identified by the `environmentId` parameter.\n\nOnly those Feature Flags and Settings are updated which are part of the request, all the others are left untouched.\n\n**Important:** As this endpoint is doing a complete replace on those Feature Flags and Settings, which are set in the request. \nIt's important to set every other field that you don't want to change in its original state. Not listing a field means that it will reset.\n\nFor example: We have the following resource of a Feature Flag.\n```json\n{\n  \"settingFormulas\": [\n    {\n      \"defaultValue\": {\n        \"boolValue\": false\n      },\n      \"targetingRules\": [\n        {\n          \"conditions\": [\n            {\n              \"userCondition\": {\n                \"comparisonAttribute\": \"Email\",\n                \"comparator\": \"sensitiveTextEquals\",\n                \"comparisonValue\": {\n                  \"stringValue\": \"test@example.com\"\n                }\n              }\n            }\n          ],\n          \"percentageOptions\": [],\n          \"value\": {\n            \"boolValue\": true\n          }\n        }\n      ],\n      \"settingId\": 1\n    }\n  ]\n}\n```\nIf we send a batch replace request body as below:\n```json\n{ \n  \"updateFormulas\": [\n    {\n      \"defaultValue\": {\n        \"boolValue\": false\n      },\n      \"settingId\": 1\n    }\n  ]\n}\n```\nThen besides that the default value is set to `true`, all Targeting Rules of the related Feature Flag are deleted.\nSo we get a response like this:\n```json\n{\n  \"settingFormulas\": [\n    {\n      \"defaultValue\": {\n        \"boolValue\": false\n      },\n      \"targetingRules\": [],\n      \"setting\": \n      {\n        \"settingId\": 1\n      }\n    }\n  ]\n}\n```",
        "operationId": "post-setting-values-v2",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "query",
            "name": "reason",
            "description": "The reason note for the Audit Log if the Product's \"Config changes require a reason\" preference is turned on.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateEvaluationFormulasModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the updated setting values returned.",
            "schema": {
              "$ref": "#/definitions/ConfigSettingFormulasModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/tags/{tagId}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get Tag",
        "description": "This endpoint returns the metadata of a Tag \nidentified by the `tagId`.",
        "operationId": "get-tag",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "description": "The identifier of the Tag.",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the tag data returned.",
            "schema": {
              "$ref": "#/definitions/TagModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Tags"
        ],
        "summary": "Update Tag",
        "description": "This endpoint updates a Tag identified by the `tagId` parameter.",
        "operationId": "update-tag",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "description": "The identifier of the Tag.",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateTagModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/TagModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Delete Tag",
        "description": "This endpoint deletes a Tag identified by the `tagId` parameter. To remove a Tag from a Feature Flag or Setting use the [Update Flag](#operation/update-setting) endpoint.",
        "operationId": "delete-tag",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "description": "The identifier of the Tag.",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/webhooks/{webhookId}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get Webhook",
        "description": "This endpoint returns the metadata of a Webhook \nidentified by the `webhookId`.",
        "operationId": "get-webhook",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "webhookId",
            "description": "The identifier of the Webhook.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the webhook data is returned.",
            "schema": {
              "$ref": "#/definitions/WebhookResponseModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Replace Webhook",
        "description": "This endpoint replaces the whole value of a Webhook identified by the `webhookId` parameter.\n\n**Important:** As this endpoint is doing a complete replace, it's important to set every other attribute that you don't\nwant to change in its original state. Not listing one means it will reset.",
        "operationId": "replace-webhook",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "webhookId",
            "description": "The identifier of the Webhook.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WebHookRequestModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the replace was successful.",
            "schema": {
              "$ref": "#/definitions/WebhookResponseModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "patch": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update Webhook",
        "description": "This endpoint updates a Webhook identified by the `webhookId` parameter with a collection of [JSON Patch](https://jsonpatch.com) operations.\n\nThe advantage of using JSON Patch is that you can describe individual update operations on a resource without touching attributes that you don't want to change.\n\nFor example: We have the following resource.\n```json\n{\n  \"webhookId\": 6,\n  \"url\": \"https://example.com/hook\",\n  \"httpMethod\": \"post\",\n  \"content\": \"null\",\n  \"webHookHeaders\": []\n}\n```\nIf we send an update request body as below (it changes the `content` field and adds a new HTTP header):\n```json\n[\n  {\n    \"op\": \"replace\", \n    \"path\": \"/content\", \n    \"value\": \"Some webhook content.\"\n  }, \n  {\n    \"op\": \"add\", \n    \"path\": \"/webHookHeaders/-\", \n    \"value\": {\n      \"key\": \"X-Custom-Header\", \n      \"value\": \"Custom header value\"\n    }\n  }\n]\n```\nOnly the `content` and `webHookHeaders` are updated and all the other attributes remain unchanged.\nSo we get a response like this:\n```json\n{\n  \"webhookId\": 6,\n  \"url\": \"https://example.com/hook\",\n  \"httpMethod\": \"post\", \n  \"content\": \"Some webhook content.\", \n  \"webHookHeaders\": [\n    {\n      \"key\": \"X-Custom-Header\", \n      \"value\": \"Custom header value\", \n      \"isSecure\": false\n    }\n  ]\n}\n```",
        "operationId": "update-webhook",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "webhookId",
            "description": "The identifier of the Webhook.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/JsonPatchOperation"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful.",
            "schema": {
              "$ref": "#/definitions/WebhookResponseModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete Webhook",
        "description": "This endpoint removes a Webhook identified by the `webhookId` parameter.",
        "operationId": "delete-webhook",
        "parameters": [
          {
            "in": "path",
            "name": "webhookId",
            "description": "The identifier of the Webhook.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/webhooks/{webhookId}/keys": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get Webhook Signing Keys",
        "description": "This endpoint returns the signing keys of a Webhook \nidentified by the `webhookId`.\n\nSigning keys are used for ensuring the Webhook requests you receive are actually sent by ConfigCat.\n\n<a href=\"https://configcat.com/docs/advanced/notifications-webhooks/#verifying-webhook-requests\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about Webhook request verification.",
        "operationId": "get-webhook-signing-keys",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "webhookId",
            "description": "The identifier of the Webhook.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the webhook signing keys are returned.",
            "schema": {
              "$ref": "#/definitions/WebhookSigningKeysModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/proxy-profiles/{proxyProfileId}/sdk-keys": {
      "get": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Get selected SDK keys",
        "description": "This endpoint returns the list of SDK keys selected for a Proxy Profile \nidentified by the `proxyProfileId`.",
        "operationId": "get-proxy-profile-sdk-keys",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the SDK keys selected for the Proxy Profile are returned.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileSdkKeysListModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/environments/{environmentId}/settings/{settingId}/integrationLinks/{integrationLinkType}/{key}": {
      "post": {
        "tags": [
          "Integration links"
        ],
        "summary": "Add or update Integration link",
        "description": "",
        "operationId": "add-or-update-integration-link",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "path",
            "name": "integrationLinkType",
            "description": "The integration link's type.",
            "required": true
          },
          {
            "in": "path",
            "name": "key",
            "description": "The key of the integration link.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/AddOrUpdateIntegrationLinkModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the integration link data returned.",
            "schema": {
              "$ref": "#/definitions/IntegrationLinkModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Integration links"
        ],
        "summary": "Delete Integration link",
        "description": "",
        "operationId": "delete-integration-link",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "path",
            "name": "integrationLinkType",
            "description": "The integration's type.",
            "required": true
          },
          {
            "in": "path",
            "name": "key",
            "description": "The key of the integration link.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok.",
            "schema": {
              "$ref": "#/definitions/DeleteIntegrationLinkModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/jira/environments/{environmentId}/settings/{settingId}/integrationLinks/{key}": {
      "post": {
        "tags": [
          "Integration links"
        ],
        "operationId": "jira-add-or-update-integration-link",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "settingId",
            "description": "The id of the Setting.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "path",
            "name": "key",
            "description": "The key of the integration link.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/AddOrUpdateJiraIntegrationLinkModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When everything is ok, the integration link data returned.",
            "schema": {
              "$ref": "#/definitions/IntegrationLinkModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/jira/connect": {
      "post": {
        "tags": [
          "Integration links"
        ],
        "operationId": "jira-connect",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/ConnectRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/products": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Create Product",
        "description": "This endpoint creates a new Product in a specified Organization \nidentified by the `organizationId` parameter, which can be obtained from the [List Organizations](#operation/get-organizations) endpoint.",
        "operationId": "create-product",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateProductRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/ProductModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/configs/{configId}/environments/{environmentId}/webhooks": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create Webhook",
        "description": "This endpoint creates a new Webhook in a specified Product\nidentified by the `productId` parameter, which can be obtained from the [List Products](#operation/get-products) endpoint.",
        "operationId": "create-webhook",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "configId",
            "description": "The identifier of the Config.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "environmentId",
            "description": "The identifier of the Environment.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WebHookRequestModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "When the creation was successful.",
            "schema": {
              "$ref": "#/definitions/WebhookResponseModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/code-references/delete-reports": {
      "post": {
        "tags": [
          "Code References"
        ],
        "summary": "Delete Reference reports",
        "description": "",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeleteRepositoryReportsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/proxy-profiles/{proxyProfileId}/sdk-keys/deselect": {
      "post": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Deselect SDK keys",
        "description": "This endpoint removes the given list of Config / Environment pairs' SDK Keys from a Proxy Profile\nidentified by the `proxyProfileId`.",
        "operationId": "deselect-proxy-profile-sdk-keys",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProxyProfileSdkKeysRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the deselection was successful.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileSdkKeysListModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "403": {
            "description": "Forbidden. When selection rules are applied to the Proxy Profile."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/proxy-profiles/{proxyProfileId}/secret": {
      "post": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Generate Secret",
        "description": "This endpoint (re)generates a secret token for a Proxy Profile identified by the `proxyProfileId` parameter.",
        "operationId": "generate-proxy-profile-secret",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "When the generation was successful.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileSecretModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/members/invite": {
      "post": {
        "tags": [
          "Members"
        ],
        "summary": "Invite Member",
        "description": "This endpoint invites a Member into the given Product identified by the `productId` parameter.",
        "operationId": "invite-member",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InviteMembersRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the invite was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/code-references": {
      "post": {
        "tags": [
          "Code References"
        ],
        "summary": "Upload References",
        "description": "",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CodeReferenceRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/proxy-profiles/{proxyProfileId}/sdk-keys/select": {
      "post": {
        "tags": [
          "Proxy Profiles"
        ],
        "summary": "Select SDK keys",
        "description": "This endpoint adds the given list of Config / Environment pairs' SDK Keys to a Proxy Profile \nidentified by the `proxyProfileId`.",
        "operationId": "select-proxy-profile-sdk-keys",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "proxyProfileId",
            "description": "The identifier of the Proxy Profile.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProxyProfileSdkKeysRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the selection was successful.",
            "schema": {
              "$ref": "#/definitions/ProxyProfileSdkKeysListModel"
            }
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "403": {
            "description": "Forbidden. When selection rules are applied to the Proxy Profile."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/members/{userId}": {
      "post": {
        "tags": [
          "Members"
        ],
        "summary": "Update Member Permissions",
        "description": "This endpoint updates the permissions of a Member identified by the `userId`. \nThis endpoint can also be used to move a Member between Permission Groups within a Product.\nOnly a single Permission Group can be set per Product.",
        "operationId": "add-member-to-group",
        "consumes": [
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The identifier of the Member.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateMemberPermissionsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "When the update was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      },
      "delete": {
        "tags": [
          "Members"
        ],
        "summary": "Delete Member from Organization",
        "description": "This endpoint removes a Member identified by the `userId` from the \ngiven Organization identified by the `organizationId` parameter.",
        "operationId": "delete-organization-member",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "description": "The identifier of the Organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The identifier of the Member.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/invitations/{invitationId}": {
      "delete": {
        "tags": [
          "Members"
        ],
        "summary": "Delete Invitation",
        "description": "This endpoint removes an Invitation identified by the `invitationId` parameter.",
        "operationId": "delete-invitation",
        "parameters": [
          {
            "in": "path",
            "name": "invitationId",
            "description": "The identifier of the Invitation.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    },
    "/v1/products/{productId}/members/{userId}": {
      "delete": {
        "tags": [
          "Members"
        ],
        "summary": "Delete Member from Product",
        "description": "This endpoint removes a Member identified by the `userId` from the \ngiven Product identified by the `productId` parameter.",
        "operationId": "delete-product-member",
        "parameters": [
          {
            "in": "path",
            "name": "productId",
            "description": "The identifier of the Product.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The identifier of the Member.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "When the delete was successful."
          },
          "400": {
            "description": "Bad request."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too many requests. In case of the request rate exceeds the rate limits."
          }
        }
      }
    }
  },
  "definitions": {
    "AccessType": {
      "description": "Represent the Feature Management permission.",
      "enum": [
        "readOnly",
        "full",
        "custom"
      ],
      "type": "string"
    },
    "AddOrUpdateIntegrationLinkModel": {
      "type": "object",
      "properties": {
        "description": {
          "maxLength": 1000,
          "type": "string"
        },
        "url": {
          "maxLength": 1000,
          "type": "string"
        }
      }
    },
    "AddOrUpdateJiraIntegrationLinkModel": {
      "required": [
        "clientKey",
        "jiraJwtToken"
      ],
      "type": "object",
      "properties": {
        "jiraJwtToken": {
          "maxLength": 15000,
          "minLength": 0,
          "type": "string"
        },
        "clientKey": {
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "url": {
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "AuditLogItemModel": {
      "required": [
        "actionTarget",
        "auditLogDateTime",
        "auditLogId",
        "auditLogType",
        "auditLogTypeEnum",
        "details",
        "modelVersion",
        "truncated",
        "userEmail",
        "userName",
        "where",
        "why"
      ],
      "type": "object",
      "properties": {
        "auditLogId": {
          "format": "int64",
          "type": "integer"
        },
        "auditLogDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "auditLogTypeEnum": {
          "$ref": "#/definitions/AuditLogType"
        },
        "truncated": {
          "type": "boolean"
        },
        "modelVersion": {
          "format": "int32",
          "type": "integer"
        },
        "auditLogType": {
          "type": "string"
        },
        "userEmail": {
          "type": "string"
        },
        "userName": {
          "type": "string"
        },
        "where": {
          "type": "string"
        },
        "why": {
          "type": "string"
        },
        "actionTarget": {
          "type": "string"
        },
        "details": {
          "type": "string"
        }
      }
    },
    "AuditLogType": {
      "enum": [
        "productCreated",
        "productChanged",
        "productOwnershipTransferred",
        "productDeleted",
        "productsReordered",
        "productPreferencesUpdated",
        "teamMemberInvited",
        "teamMemberInvitationRevoked",
        "teamMemberJoined",
        "teamMemberPermissionGroupChanged",
        "teamMemberRemoved",
        "teamMemberLeft",
        "teamMemberInvitationChanged",
        "teamMemberInvitationResent",
        "teamMemberInvitationRejected",
        "configCreated",
        "configChanged",
        "configDeleted",
        "configsReordered",
        "environmentCreated",
        "environmentChanged",
        "environmentDeleted",
        "environmentsReordered",
        "settingCreated",
        "settingChanged",
        "settingDeleted",
        "settingsReordered",
        "predefinedVariationsChanged",
        "settingConvertedToPredefinedVariations",
        "settingConvertedToFreeFormValues",
        "settingValueChanged",
        "webHookCreated",
        "webHookChanged",
        "webHookDeleted",
        "permissionGroupCreated",
        "permissionGroupChanged",
        "permissionGroupDeleted",
        "permissionGroupDefault",
        "apiKeyAdded",
        "apiKeyRemoved",
        "integrationAdded",
        "integrationChanged",
        "integrationRemoved",
        "apiKeyConnected",
        "integrationLinkAdded",
        "integrationLinkRemoved",
        "organizationAdded",
        "organizationChanged",
        "organizationSubscriptionTypeChanged",
        "organizationAdminChanged",
        "organizationAdminLeft",
        "twoFactorDisabledForMember",
        "tagAdded",
        "tagChanged",
        "tagRemoved",
        "settingTagAdded",
        "settingTagRemoved",
        "publicApiAccessTokenAdded",
        "publicApiAccessTokenRemoved",
        "domainAdded",
        "domainVerified",
        "domainRemoved",
        "domainSamlConfigured",
        "domainSamlDeleted",
        "autoProvisioningConfigurationChanged",
        "samlIdpConfigurationAdded",
        "samlIdpConfigurationRemoved",
        "samlIdpConfigurationUpdated",
        "autoProvisioningEnabledChanged",
        "organizationMemberJoined",
        "organizationMemberProductJoinRequested",
        "organizationMemberProductJoinRequestRejected",
        "organizationMemberProductJoinRequestApproved",
        "organizationMemberRemoved",
        "codeReferencesUploaded",
        "codeReferenceDeleted",
        "codeReferenceStaleBranchDeleted",
        "segmentCreated",
        "segmentChanged",
        "segmentDeleted",
        "webhookSigningKeyDeleted",
        "webhookSigningKeyCreated",
        "userProvisioningConfigurationChanged",
        "syncGroupProvisioningRuleChanged",
        "syncGroupsReordered",
        "syncUserProvisioningEnabled",
        "syncUserProvisioningDisabled",
        "userEmailChanged",
        "userFullNameChanged",
        "userDisabled",
        "awsConnected",
        "awsDisconnected",
        "userEnabled",
        "syncUserDeleted",
        "syncGroupDeleted",
        "proxyConfigurationCreated",
        "proxyConfigurationChanged",
        "proxyConfigurationDeleted",
        "proxyConfigurationSecretRegenerated",
        "proxyNotificationSettingsUpdated",
        "proxyNotificationSettingsDeleted",
        "proxyNotificationSigningKeyAdded",
        "proxyNotificationSigningKeyDeleted"
      ],
      "type": "string"
    },
    "CodeReferenceModel": {
      "required": [
        "branch",
        "codeReferenceId",
        "commitHash",
        "commitUrl",
        "references",
        "repository",
        "syncedAt",
        "uploader"
      ],
      "type": "object",
      "properties": {
        "branch": {
          "description": "The source control branch on where the scan was performed. (Source of the branch selector on the ConfigCat Dashboard)",
          "type": "string"
        },
        "references": {
          "description": "The actual references to the given Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferenceLinesModel"
          }
        },
        "commitUrl": {
          "description": "The related commit's URL.",
          "type": "string"
        },
        "commitHash": {
          "description": "The related commit's hash.",
          "type": "string"
        },
        "syncedAt": {
          "format": "date-time",
          "description": "The date and time when the reference report was uploaded.",
          "type": "string"
        },
        "repository": {
          "description": "The source control repository that contains the scanned code.",
          "type": "string"
        },
        "codeReferenceId": {
          "format": "uuid",
          "description": "The identifier of the reference report.",
          "type": "string"
        },
        "uploader": {
          "description": "The code reference scanning tool's name.",
          "type": "string"
        }
      }
    },
    "CodeReferenceRequest": {
      "required": [
        "branch",
        "configId",
        "repository"
      ],
      "type": "object",
      "properties": {
        "configId": {
          "format": "uuid",
          "description": "The Config's identifier the scanning was performed against.",
          "type": "string"
        },
        "repository": {
          "description": "The source control repository that contains the scanned code. (Source of the repository selector on the ConfigCat Dashboard)",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "branch": {
          "description": "The source control branch on where the scan was performed. (Source of the branch selector on the ConfigCat Dashboard)",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "commitUrl": {
          "description": "The related commit's URL. (Appears on the ConfigCat Dashboard)",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "commitHash": {
          "description": "The related commit's hash. (Appears on the ConfigCat Dashboard)",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "uploader": {
          "description": "The scanning tool's name. (Appears on the ConfigCat Dashboard)",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "activeBranches": {
          "description": "The currently active branches of the repository. Each previously uploaded report that belongs to a non-reported active branch is being deleted.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "flagReferences": {
          "description": "The actual code reference collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FlagReference"
          }
        }
      }
    },
    "ComparisonValueListModel": {
      "required": [
        "hint",
        "value"
      ],
      "type": "object",
      "properties": {
        "value": {
          "description": "The actual comparison value.",
          "type": "string"
        },
        "hint": {
          "description": "An optional hint for the comparison value.",
          "maxLength": 1500,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "ComparisonValueModel": {
      "description": "The value that the user object's attribute is compared to.",
      "required": [
        "doubleValue",
        "listValue",
        "stringValue"
      ],
      "type": "object",
      "properties": {
        "stringValue": {
          "description": "The string representation of the comparison value.",
          "type": "string"
        },
        "doubleValue": {
          "format": "double",
          "description": "The number representation of the comparison value.",
          "type": "number"
        },
        "listValue": {
          "description": "The list representation of the comparison value.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ComparisonValueListModel"
          }
        }
      }
    },
    "ConditionModel": {
      "required": [
        "prerequisiteFlagCondition",
        "segmentCondition",
        "userCondition"
      ],
      "type": "object",
      "properties": {
        "userCondition": {
          "allOf": [
            {
              "$ref": "#/definitions/UserConditionModel"
            }
          ]
        },
        "segmentCondition": {
          "allOf": [
            {
              "$ref": "#/definitions/SegmentConditionModel"
            }
          ]
        },
        "prerequisiteFlagCondition": {
          "allOf": [
            {
              "$ref": "#/definitions/PrerequisiteFlagConditionModel"
            }
          ]
        }
      }
    },
    "ConfigModel": {
      "description": "Details of the Config.",
      "required": [
        "configId",
        "description",
        "evaluationVersion",
        "migratedConfigId",
        "name",
        "order",
        "product"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "configId": {
          "format": "uuid",
          "description": "Identifier of the Config.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Config.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Config.",
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Config represented on the ConfigCat Dashboard.",
          "type": "integer"
        },
        "migratedConfigId": {
          "format": "uuid",
          "type": "string"
        },
        "evaluationVersion": {
          "$ref": "#/definitions/EvaluationVersion"
        }
      }
    },
    "ConfigSettingFormulaModel": {
      "required": [
        "defaultValue",
        "integrationLinks",
        "lastUpdaterUserEmail",
        "lastUpdaterUserFullName",
        "lastVersionId",
        "percentageEvaluationAttribute",
        "setting",
        "settingIdsWherePrerequisite",
        "settingTags",
        "targetingRules",
        "updatedAt"
      ],
      "type": "object",
      "properties": {
        "lastVersionId": {
          "format": "uuid",
          "type": "string"
        },
        "defaultValue": {
          "$ref": "#/definitions/ValueModel"
        },
        "targetingRules": {
          "description": "The targeting rules of the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/TargetingRuleModel"
          }
        },
        "setting": {
          "$ref": "#/definitions/SettingDataV2Model"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The last updated date and time when the Feature Flag or Setting.",
          "type": "string"
        },
        "percentageEvaluationAttribute": {
          "description": "The user attribute used for percentage evaluation. If not set, it defaults to the `Identifier` user object attribute.",
          "type": "string"
        },
        "lastUpdaterUserEmail": {
          "description": "The email of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "lastUpdaterUserFullName": {
          "description": "The name of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "integrationLinks": {
          "description": "The integration links attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntegrationLinkModel"
          }
        },
        "settingTags": {
          "description": "The tags attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettingTagModel"
          }
        },
        "settingIdsWherePrerequisite": {
          "description": "List of Feature Flag and Setting IDs where the actual Feature Flag or Setting is prerequisite.",
          "type": "array",
          "items": {
            "format": "int32",
            "type": "integer"
          }
        }
      }
    },
    "ConfigSettingFormulasModel": {
      "required": [
        "config",
        "environment",
        "featureFlagLimitations",
        "readOnly",
        "settingFormulas"
      ],
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/ConfigModel"
        },
        "environment": {
          "$ref": "#/definitions/EnvironmentModel"
        },
        "readOnly": {
          "type": "boolean"
        },
        "settingFormulas": {
          "description": "Evaluation descriptors of each updated Feature Flag and Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConfigSettingFormulaModel"
          }
        },
        "featureFlagLimitations": {
          "$ref": "#/definitions/FeatureFlagLimitations"
        }
      }
    },
    "ConfigSettingValueModel": {
      "required": [
        "integrationLinks",
        "lastUpdaterUserEmail",
        "lastUpdaterUserFullName",
        "rolloutPercentageItems",
        "rolloutRules",
        "setting",
        "settingTags",
        "updatedAt",
        "value"
      ],
      "type": "object",
      "properties": {
        "setting": {
          "$ref": "#/definitions/SettingDataModel"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The last updated date and time when the Feature Flag or Setting.",
          "type": "string"
        },
        "lastUpdaterUserEmail": {
          "description": "The email of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "lastUpdaterUserFullName": {
          "description": "The name of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "integrationLinks": {
          "description": "The integration links attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntegrationLinkModel"
          }
        },
        "settingTags": {
          "description": "The tags attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettingTagModel"
          }
        },
        "rolloutRules": {
          "description": "The targeting rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/RolloutRuleModel"
          }
        },
        "rolloutPercentageItems": {
          "description": "The percentage rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/RolloutPercentageItemModel"
          }
        },
        "value": {
          "description": "The value to serve. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        }
      }
    },
    "ConfigSettingValuesModel": {
      "required": [
        "config",
        "environment",
        "featureFlagLimitations",
        "readOnly",
        "settingValues"
      ],
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/ConfigModel"
        },
        "environment": {
          "$ref": "#/definitions/EnvironmentModel"
        },
        "readOnly": {
          "type": "boolean"
        },
        "settingValues": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConfigSettingValueModel"
          }
        },
        "featureFlagLimitations": {
          "$ref": "#/definitions/FeatureFlagLimitations"
        }
      }
    },
    "ConnectRequest": {
      "required": [
        "clientKey",
        "jiraJwtToken"
      ],
      "type": "object",
      "properties": {
        "clientKey": {
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "jiraJwtToken": {
          "maxLength": 15000,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "ConnectionPreferences": {
      "description": "The connection preferences for the proxy profile, including SDK poll interval and webhook proxy URL.",
      "required": [
        "sdkPollInterval",
        "webhookNotification"
      ],
      "type": "object",
      "properties": {
        "sdkPollInterval": {
          "format": "int32",
          "description": "The SDK poll interval in seconds that determines how often SDKs should fetch config JSON updates.",
          "type": "integer"
        },
        "webhookNotification": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookNotification"
            }
          ]
        }
      }
    },
    "CreateConfigRequest": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Config.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "description": {
          "description": "The description of the Config.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Config represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        },
        "evaluationVersion": {
          "$ref": "#/definitions/EvaluationVersion"
        }
      }
    },
    "CreateEnvironmentModel": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Environment.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "color": {
          "description": "The color of the Environment. RGB or HTML color codes are allowed.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "description": "The description of the Environment.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Environment represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        }
      }
    },
    "CreateIntegrationModel": {
      "required": [
        "configIds",
        "environmentIds",
        "integrationType",
        "name",
        "parameters"
      ],
      "type": "object",
      "properties": {
        "integrationType": {
          "$ref": "#/definitions/IntegrationType"
        },
        "name": {
          "description": "Name of the Integration.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "parameters": {
          "description": "Parameters of the Integration.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "environmentIds": {
          "description": "List of Environment IDs that are connected with this Integration. If the list is empty, all the Environments are connected.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string"
          }
        },
        "configIds": {
          "description": "List of Config IDs that are connected with this Integration. If the list is empty, all the Configs are connected.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string"
          }
        }
      }
    },
    "CreateOrUpdateConnectionPreferences": {
      "description": "The preferences related to a connection, including polling intervals and webhook proxy configurations.",
      "type": "object",
      "properties": {
        "sdkPollInterval": {
          "format": "int32",
          "description": "The SDK poll interval in seconds. If not specified, a default value (60) will be used.",
          "maximum": 2147483647,
          "minimum": 30,
          "type": "integer"
        },
        "webhookNotification": {
          "allOf": [
            {
              "$ref": "#/definitions/CreateOrUpdateWebhookNotification"
            }
          ]
        }
      }
    },
    "CreateOrUpdateEnvironmentAccessModel": {
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "environmentAccessType": {
          "$ref": "#/definitions/EnvironmentAccessType"
        }
      }
    },
    "CreateOrUpdateProxyProfileRequest": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the proxy profile.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "description": "The description of the proxy profile.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "connectionPreferences": {
          "allOf": [
            {
              "$ref": "#/definitions/CreateOrUpdateConnectionPreferences"
            }
          ]
        },
        "sdkKeySelectionRules": {
          "description": "A collection of selection rules that determine the SDK keys applicable for a proxy profile.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateProxyProfileSelectionRule"
          }
        }
      }
    },
    "CreateOrUpdateWebhookNotification": {
      "description": "The preferences related to a connection, including polling intervals and webhook proxy configurations.",
      "required": [
        "webhookProxyUrl"
      ],
      "type": "object",
      "properties": {
        "webhookProxyUrl": {
          "description": "The webhook proxy URL for receiving config JSON change notifications.",
          "maxLength": 1000,
          "minLength": 7,
          "type": "string"
        }
      }
    },
    "CreatePermissionGroupRequest": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the Permission Group.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "canManageMembers": {
          "description": "Group members can manage team members.",
          "type": "boolean"
        },
        "canCreateOrUpdateConfig": {
          "description": "Group members can create/update Configs.",
          "type": "boolean"
        },
        "canDeleteConfig": {
          "description": "Group members can delete Configs.",
          "type": "boolean"
        },
        "canCreateOrUpdateEnvironment": {
          "description": "Group members can create/update Environments.",
          "type": "boolean"
        },
        "canDeleteEnvironment": {
          "description": "Group members can delete Environments.",
          "type": "boolean"
        },
        "canCreateOrUpdateSetting": {
          "description": "Group members can create/update Feature Flags and Settings.",
          "type": "boolean"
        },
        "canTagSetting": {
          "description": "Group members can attach/detach Tags to Feature Flags and Settings.",
          "type": "boolean"
        },
        "canDeleteSetting": {
          "description": "Group members can delete Feature Flags and Settings.",
          "type": "boolean"
        },
        "canCreateOrUpdateTag": {
          "description": "Group members can create/update Tags.",
          "type": "boolean"
        },
        "canDeleteTag": {
          "description": "Group members can delete Tags.",
          "type": "boolean"
        },
        "canManageWebhook": {
          "description": "Group members can create/update/delete Webhooks.",
          "type": "boolean"
        },
        "canUseExportImport": {
          "description": "Group members can use the export/import feature.",
          "type": "boolean"
        },
        "canManageProductPreferences": {
          "description": "Group members can update Product preferences.",
          "type": "boolean"
        },
        "canManageIntegrations": {
          "description": "Group members can add and configure integrations.",
          "type": "boolean"
        },
        "canViewSdkKey": {
          "description": "Group members has access to SDK keys.",
          "type": "boolean"
        },
        "canRotateSdkKey": {
          "description": "Group members can rotate SDK keys.",
          "type": "boolean"
        },
        "canCreateOrUpdateSegments": {
          "description": "Group members can create/update Segments.",
          "type": "boolean"
        },
        "canDeleteSegments": {
          "description": "Group members can delete Segments.",
          "type": "boolean"
        },
        "canViewProductAuditLog": {
          "description": "Group members has access to audit logs.",
          "type": "boolean"
        },
        "canViewProductStatistics": {
          "description": "Group members has access to product statistics.",
          "type": "boolean"
        },
        "accessType": {
          "$ref": "#/definitions/AccessType"
        },
        "newEnvironmentAccessType": {
          "$ref": "#/definitions/EnvironmentAccessType"
        },
        "environmentAccesses": {
          "description": "List of environment specific permissions.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/CreateOrUpdateEnvironmentAccessModel"
          }
        },
        "canDisable2FA": {
          "description": "Group members can disable two-factor authentication for other members.",
          "type": "boolean"
        }
      }
    },
    "CreatePredefinedVariationModel": {
      "description": "A Predefined Variation.",
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/CreatePredefinedVariationValueModel"
        },
        "name": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "hint": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "CreatePredefinedVariationValueModel": {
      "description": "Represents the value of a Predefined Variation.",
      "type": "object",
      "properties": {
        "boolValue": {
          "description": "The served value in case of a boolean Feature Flag.",
          "type": "boolean"
        },
        "stringValue": {
          "description": "The served value in case of a text Setting.",
          "type": "string"
        },
        "intValue": {
          "format": "int32",
          "description": "The served value in case of a whole number Setting.",
          "type": "integer"
        },
        "doubleValue": {
          "format": "double",
          "description": "The served value in case of a decimal number Setting.",
          "type": "number"
        }
      }
    },
    "CreateProductRequest": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Product.",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        },
        "description": {
          "description": "The description of the Product.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Product represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        }
      }
    },
    "CreateSegmentModel": {
      "required": [
        "comparator",
        "comparisonAttribute",
        "comparisonValue",
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the Segment.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "description": {
          "description": "Description of the Segment.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "comparisonAttribute": {
          "description": "The user's attribute the evaluation process must take into account.",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        },
        "comparator": {
          "$ref": "#/definitions/RolloutRuleComparator"
        },
        "comparisonValue": {
          "description": "The value to compare with the given user attribute's value.",
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "CreateSettingInitialValues": {
      "required": [
        "key",
        "name",
        "settingType"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Feature Flag or Setting.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "hint": {
          "description": "A short description for the setting, shown on the Dashboard UI.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "tags": {
          "description": "The IDs of the tags which are attached to the setting.",
          "type": "array",
          "items": {
            "format": "int64",
            "type": "integer"
          }
        },
        "order": {
          "format": "int32",
          "description": "The order of the Setting represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        },
        "key": {
          "description": "The key of the Feature Flag or Setting.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "settingType": {
          "$ref": "#/definitions/SettingType"
        },
        "predefinedVariations": {
          "description": "The Feature Flag or Setting's Variations.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/CreatePredefinedVariationModel"
          }
        },
        "initialValues": {
          "description": "Optional, initial value of the Feature Flag or Setting in the given Environments. Only one of the SettingIdToInitFrom or the InitialValues properties can be set.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/InitialValue"
          }
        },
        "settingIdToInitFrom": {
          "format": "int32",
          "description": "Optional, the SettingId to initialize the values and tags of the Feature Flag or Setting from. Only can be set if you have at least ReadOnly access in all the Environments. Only one of the SettingIdToInitFrom or the InitialValues properties can be set.",
          "type": "integer"
        }
      }
    },
    "CreateTagModel": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the Tag.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "color": {
          "description": "Color of the Tag. Possible values: `panther`, `whale`, `salmon`, `lizard`, `canary`, `koala`, or any HTML color code.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "DeleteIntegrationLinkModel": {
      "required": [
        "hasRemainingIntegrationLink"
      ],
      "type": "object",
      "properties": {
        "hasRemainingIntegrationLink": {
          "type": "boolean"
        }
      }
    },
    "DeleteRepositoryReportsRequest": {
      "required": [
        "configId",
        "repository"
      ],
      "type": "object",
      "properties": {
        "configId": {
          "format": "uuid",
          "description": "The Config's identifier from where the reports should be deleted.",
          "type": "string"
        },
        "repository": {
          "description": "The source control repository which's reports should be deleted.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "branch": {
          "description": "If it's set, only this branch's reports belonging to the given repository will be deleted.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "settingId": {
          "format": "int32",
          "description": "If it's set, only this setting's reports belonging to the given repository will be deleted.",
          "type": "integer"
        }
      }
    },
    "DeletedSettingModel": {
      "required": [
        "hint",
        "key",
        "name",
        "settingType"
      ],
      "type": "object",
      "properties": {
        "key": {
          "description": "Key of the Feature Flag or Setting.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Feature Flag or Setting.",
          "type": "string"
        },
        "hint": {
          "description": "Description of the Feature Flag or Setting.",
          "type": "string"
        },
        "settingType": {
          "$ref": "#/definitions/SettingType"
        }
      }
    },
    "EnvironmentAccessModel": {
      "required": [
        "color",
        "description",
        "environmentAccessType",
        "environmentId",
        "name",
        "order",
        "reasonRequired"
      ],
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Environment.",
          "type": "string"
        },
        "color": {
          "description": "Color of the Environment.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Environment.",
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Environment represented on the ConfigCat Dashboard.",
          "type": "integer"
        },
        "reasonRequired": {
          "description": "Determines whether a mandatory reason must be given every time when the Feature Flags or Settings in the given Environment are saved.",
          "type": "boolean"
        },
        "environmentAccessType": {
          "$ref": "#/definitions/EnvironmentAccessType"
        }
      }
    },
    "EnvironmentAccessType": {
      "description": "Represent the environment specific Feature Management permission.",
      "enum": [
        "full",
        "readOnly",
        "none"
      ],
      "type": "string"
    },
    "EnvironmentModel": {
      "description": "Details of the Environment.",
      "required": [
        "color",
        "description",
        "environmentId",
        "name",
        "order",
        "product",
        "reasonRequired"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Environment.",
          "type": "string"
        },
        "color": {
          "description": "The configured color of the Environment.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Environment.",
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Environment represented on the ConfigCat Dashboard.",
          "type": "integer"
        },
        "reasonRequired": {
          "description": "Determines whether a mandatory reason must be given every time when the Feature Flags or Settings in the given Environment are saved.",
          "type": "boolean"
        }
      }
    },
    "EvaluationVersion": {
      "description": "Determines the evaluation version of a Config.\nUsing `v2` enables the new features of Config V2 (https://configcat.com/docs/advanced/config-v2).",
      "enum": [
        "v1",
        "v2"
      ],
      "type": "string"
    },
    "FeatureFlagLimitations": {
      "description": "Subscription limitations regarding Feature flag or Setting values and targeting.",
      "required": [
        "maxComparisonValueLength",
        "maxComparisonValueListItemLength",
        "maxComparisonValueListLength",
        "maxConditionPerTargetingRuleCount",
        "maxPercentageOptionCount",
        "maxStringFlagValueLength",
        "maxTargetingRuleCount"
      ],
      "type": "object",
      "properties": {
        "maxPercentageOptionCount": {
          "format": "int32",
          "description": "Maximum number of percentage options a Feature Flag or Setting can have within a targeting rule.",
          "type": "integer"
        },
        "maxTargetingRuleCount": {
          "format": "int32",
          "description": "Maximum number of targeting rules a Feature Flag or Setting can have.",
          "type": "integer"
        },
        "maxComparisonValueLength": {
          "format": "int32",
          "description": "Maximum length of a text comparison value.",
          "type": "integer"
        },
        "maxComparisonValueListLength": {
          "format": "int32",
          "description": "Maximum item count of a list comparison value.",
          "type": "integer"
        },
        "maxComparisonValueListItemLength": {
          "format": "int32",
          "description": "Maximum length of a list comparison value's item.",
          "type": "integer"
        },
        "maxStringFlagValueLength": {
          "format": "int32",
          "description": "Maximum length of a text Setting's value.",
          "type": "integer"
        },
        "maxConditionPerTargetingRuleCount": {
          "format": "int32",
          "description": "Maximum number of `AND` conditions a Feature Flag or Setting can have within a targeting rule.",
          "type": "integer"
        }
      }
    },
    "FlagReference": {
      "required": [
        "references",
        "settingId"
      ],
      "type": "object",
      "properties": {
        "settingId": {
          "format": "int32",
          "description": "The identifier of the Feature Flag or Setting the code reference belongs to.",
          "type": "integer"
        },
        "references": {
          "description": "The actual references to the given Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferenceLinesRequest"
          }
        }
      }
    },
    "InitialValue": {
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "The ID of the Environment where the initial value must be set.",
          "type": "string"
        },
        "value": {
          "description": "The initial value in the given Environment. It must respect the setting type. In some generated clients for strictly typed languages, you may use double/float properties to handle integer values. In case of a Feature Flag with predefined variations, the value must match one of the predefined variations' value.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        }
      }
    },
    "IntegrationLinkDetail": {
      "required": [
        "config",
        "environment",
        "product",
        "readOnly",
        "setting",
        "status"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "config": {
          "$ref": "#/definitions/ConfigModel"
        },
        "environment": {
          "$ref": "#/definitions/EnvironmentModel"
        },
        "setting": {
          "$ref": "#/definitions/SettingDataModel"
        },
        "readOnly": {
          "type": "boolean"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "IntegrationLinkDetailsModel": {
      "required": [
        "allIntegrationLinkCount",
        "details"
      ],
      "type": "object",
      "properties": {
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntegrationLinkDetail"
          }
        },
        "allIntegrationLinkCount": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IntegrationLinkModel": {
      "required": [
        "description",
        "integrationLinkType",
        "key",
        "url"
      ],
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "integrationLinkType": {
          "$ref": "#/definitions/IntegrationLinkType"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "IntegrationLinkType": {
      "enum": [
        "trello",
        "jira",
        "monday"
      ],
      "type": "string"
    },
    "IntegrationModel": {
      "description": "Details of the Integration.",
      "required": [
        "configIds",
        "environmentIds",
        "integrationId",
        "integrationType",
        "name",
        "parameters",
        "product"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "integrationId": {
          "format": "uuid",
          "description": "Identifier of the Integration.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Integration.",
          "type": "string"
        },
        "integrationType": {
          "$ref": "#/definitions/IntegrationType"
        },
        "parameters": {
          "description": "Parameters of the Integration.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "environmentIds": {
          "description": "List of Environment IDs that are connected with this Integration. If the list is empty, all of the Environments are connected.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string"
          }
        },
        "configIds": {
          "description": "List of Config IDs that are connected with this Integration. If the list is empty, all of the Configs are connected.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string"
          }
        }
      }
    },
    "IntegrationType": {
      "enum": [
        "dataDog",
        "slack",
        "amplitude",
        "mixPanel",
        "segment",
        "pubNub"
      ],
      "type": "string"
    },
    "IntegrationsModel": {
      "required": [
        "integrations"
      ],
      "type": "object",
      "properties": {
        "integrations": {
          "description": "The Integrations of the Product.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntegrationModel"
          }
        }
      }
    },
    "InvitationModel": {
      "required": [
        "createdAt",
        "email",
        "expired",
        "invitationId",
        "permissionGroupId"
      ],
      "type": "object",
      "properties": {
        "invitationId": {
          "format": "uuid",
          "description": "The identifier of the Invitation.",
          "type": "string"
        },
        "email": {
          "description": "The invited user's email address.",
          "type": "string"
        },
        "permissionGroupId": {
          "format": "int64",
          "description": "The identifier of the Permission Group the user was invited to.",
          "type": "integer"
        },
        "createdAt": {
          "format": "date-time",
          "description": "Creation time of the Invitation.",
          "type": "string"
        },
        "expired": {
          "description": "Determines whether the Invitation is expired.",
          "type": "boolean"
        }
      }
    },
    "InviteMembersRequest": {
      "required": [
        "emails",
        "permissionGroupId"
      ],
      "type": "object",
      "properties": {
        "emails": {
          "description": "List of email addresses to invite.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "permissionGroupId": {
          "format": "int64",
          "description": "Identifier of the Permission Group to where the invited users should be added.",
          "type": "integer"
        }
      }
    },
    "JsonPatchOperation": {
      "required": [
        "op",
        "path"
      ],
      "type": "object",
      "properties": {
        "op": {
          "$ref": "#/definitions/OperationType"
        },
        "path": {
          "description": "The source path.",
          "minLength": 1,
          "type": "string"
        },
        "from": {
          "description": "The target path.",
          "type": "string"
        },
        "value": {
          "description": "The discrete value."
        }
      }
    },
    "KeyGenerationMode": {
      "description": "Determines the Feature Flag key generation mode.",
      "enum": [
        "camelCase",
        "lowerCase",
        "upperCase",
        "pascalCase",
        "kebabCase"
      ],
      "type": "string"
    },
    "MeModel": {
      "required": [
        "email",
        "fullName"
      ],
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "fullName": {
          "type": "string"
        }
      }
    },
    "MemberModel": {
      "required": [
        "email",
        "fullName",
        "permissionGroupId",
        "productId",
        "userId"
      ],
      "type": "object",
      "properties": {
        "userId": {
          "description": "Identifier of the Member.",
          "type": "string"
        },
        "productId": {
          "format": "uuid",
          "description": "Identifier of the Product where the Member has access.",
          "type": "string"
        },
        "permissionGroupId": {
          "format": "int64",
          "description": "Identifier of the Member's Permission Group.",
          "type": "integer"
        },
        "fullName": {
          "description": "Name of the Member.",
          "type": "string"
        },
        "email": {
          "description": "Email of the Member.",
          "type": "string"
        }
      }
    },
    "ModifyIntegrationRequest": {
      "required": [
        "configIds",
        "environmentIds",
        "name",
        "parameters"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the Integration.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "parameters": {
          "description": "Parameters of the Integration.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "environmentIds": {
          "description": "List of Environment IDs that are connected with this Integration. If the list is empty, all the Environments are connected.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string"
          }
        },
        "configIds": {
          "description": "List of Config IDs that are connected with this Integration. If the list is empty, all the Configs are connected.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string"
          }
        }
      }
    },
    "OperationType": {
      "enum": [
        "unknown",
        "add",
        "remove",
        "replace",
        "move",
        "copy",
        "test"
      ],
      "type": "string"
    },
    "OrganizationAdminModel": {
      "description": "Describes an Organization Admin.",
      "required": [
        "email",
        "fullName",
        "twoFactorEnabled",
        "userId"
      ],
      "type": "object",
      "properties": {
        "userId": {
          "description": "Identifier of the Organization Admin.",
          "type": "string"
        },
        "fullName": {
          "description": "Name of the Organization Admin.",
          "type": "string"
        },
        "email": {
          "description": "Email of the OrganizationAdmin.",
          "type": "string"
        },
        "twoFactorEnabled": {
          "description": "Determines whether 2FA is enabled for the Organization Admin.",
          "type": "boolean"
        }
      }
    },
    "OrganizationInvitationModel": {
      "required": [
        "createdAt",
        "email",
        "expired",
        "expires",
        "invitationId",
        "permissionGroupId",
        "productId",
        "productName"
      ],
      "type": "object",
      "properties": {
        "invitationId": {
          "format": "uuid",
          "description": "The identifier of the Invitation.",
          "type": "string"
        },
        "email": {
          "description": "The invited user's email address.",
          "type": "string"
        },
        "productId": {
          "format": "uuid",
          "description": "The identifier of the Product the user was invited to.",
          "type": "string"
        },
        "productName": {
          "description": "The name of the Product the user was invited to.",
          "type": "string"
        },
        "permissionGroupId": {
          "format": "int64",
          "description": "The identifier of the Permission Group the user was invited to.",
          "type": "integer"
        },
        "createdAt": {
          "format": "date-time",
          "description": "Creation time of the Invitation.",
          "type": "string"
        },
        "expired": {
          "description": "Determines whether the Invitation is expired.",
          "type": "boolean"
        },
        "expires": {
          "format": "date-time",
          "description": "Expiration time of the Invitation.",
          "type": "string"
        }
      }
    },
    "OrganizationLimitations": {
      "required": [
        "maxComparisonValueLength",
        "maxComparisonValueListItemLength",
        "maxComparisonValueListLength",
        "maxConditionPerTargetingRuleCount",
        "maxPercentageOptionCount",
        "maxPredefinedVariations",
        "maxStringFlagValueLength",
        "maxTargetingRuleCount"
      ],
      "type": "object",
      "properties": {
        "maxPercentageOptionCount": {
          "format": "int32",
          "description": "Maximum number of percentage options a Feature Flag or Setting can have within a targeting rule.",
          "type": "integer"
        },
        "maxTargetingRuleCount": {
          "format": "int32",
          "description": "Maximum number of targeting rules a Feature Flag or Setting can have.",
          "type": "integer"
        },
        "maxComparisonValueLength": {
          "format": "int32",
          "description": "Maximum length of a text comparison value.",
          "type": "integer"
        },
        "maxComparisonValueListLength": {
          "format": "int32",
          "description": "Maximum item count of a list comparison value.",
          "type": "integer"
        },
        "maxComparisonValueListItemLength": {
          "format": "int32",
          "description": "Maximum length of a list comparison value's item.",
          "type": "integer"
        },
        "maxStringFlagValueLength": {
          "format": "int32",
          "description": "Maximum length of a text Setting's value.",
          "type": "integer"
        },
        "maxConditionPerTargetingRuleCount": {
          "format": "int32",
          "description": "Maximum number of `AND` conditions a Feature Flag or Setting can have within a targeting rule.",
          "type": "integer"
        },
        "maxPredefinedVariations": {
          "format": "int32",
          "description": "The maximum number of predefined variations allowed for a Feature Flag or Setting.",
          "type": "integer"
        }
      }
    },
    "OrganizationMemberModel": {
      "description": "Describes an Organization Member.",
      "required": [
        "email",
        "fullName",
        "permissions",
        "twoFactorEnabled",
        "userId"
      ],
      "type": "object",
      "properties": {
        "userId": {
          "description": "Identifier of the Organization Admin.",
          "type": "string"
        },
        "fullName": {
          "description": "Name of the Organization Admin.",
          "type": "string"
        },
        "email": {
          "description": "Email of the OrganizationAdmin.",
          "type": "string"
        },
        "twoFactorEnabled": {
          "description": "Determines whether 2FA is enabled for the Organization Admin.",
          "type": "boolean"
        },
        "permissions": {
          "description": "The permissions of the Member.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationPermissionModel"
          }
        }
      }
    },
    "OrganizationMembersModel": {
      "required": [
        "admins",
        "billingManagers",
        "members"
      ],
      "type": "object",
      "properties": {
        "admins": {
          "description": "List of Organization Admins.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationAdminModel"
          }
        },
        "billingManagers": {
          "description": "List of Billing Managers.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationAdminModel"
          }
        },
        "members": {
          "description": "List of Organization Members.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationMemberModel"
          }
        }
      }
    },
    "OrganizationModel": {
      "description": "Details of the Organization.",
      "required": [
        "name",
        "organizationId"
      ],
      "type": "object",
      "properties": {
        "organizationId": {
          "format": "uuid",
          "description": "Identifier of the Organization.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Organization.",
          "type": "string"
        }
      }
    },
    "OrganizationPermissionGroupModel": {
      "description": "Describes the Member's Permission Group within a Product.",
      "required": [
        "name",
        "permissionGroupId"
      ],
      "type": "object",
      "properties": {
        "permissionGroupId": {
          "format": "int64",
          "description": "Identifier of the Member's Permission Group.",
          "type": "integer"
        },
        "name": {
          "description": "Name of the Member's Permission Group.",
          "type": "string"
        }
      }
    },
    "OrganizationPermissionModel": {
      "description": "Describes the Member's permission.",
      "required": [
        "permissionGroup",
        "product"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/OrganizationProductModel"
        },
        "permissionGroup": {
          "$ref": "#/definitions/OrganizationPermissionGroupModel"
        }
      }
    },
    "OrganizationProductModel": {
      "description": "Describes the Member's Product.",
      "required": [
        "name",
        "productId"
      ],
      "type": "object",
      "properties": {
        "productId": {
          "format": "uuid",
          "description": "Identifier of the Member's Product.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Member's Product.",
          "type": "string"
        }
      }
    },
    "PercentageOptionModel": {
      "required": [
        "percentage",
        "value"
      ],
      "type": "object",
      "properties": {
        "percentage": {
          "format": "int32",
          "description": "A number between 0 and 100 that represents a randomly allocated fraction of the users.",
          "type": "integer"
        },
        "value": {
          "$ref": "#/definitions/ValueModel"
        }
      }
    },
    "PermissionGroupModel": {
      "required": [
        "accessType",
        "canCreateOrUpdateConfig",
        "canCreateOrUpdateEnvironment",
        "canCreateOrUpdateSegments",
        "canCreateOrUpdateSetting",
        "canCreateOrUpdateTag",
        "canDeleteConfig",
        "canDeleteEnvironment",
        "canDeleteSegments",
        "canDeleteSetting",
        "canDeleteTag",
        "canDisable2FA",
        "canManageIntegrations",
        "canManageMembers",
        "canManageProductPreferences",
        "canManageWebhook",
        "canRotateSdkKey",
        "canTagSetting",
        "canUseExportImport",
        "canViewProductAuditLog",
        "canViewProductStatistics",
        "canViewSdkKey",
        "environmentAccesses",
        "name",
        "newEnvironmentAccessType",
        "permissionGroupId",
        "product"
      ],
      "type": "object",
      "properties": {
        "permissionGroupId": {
          "format": "int64",
          "description": "Identifier of the Permission Group.",
          "type": "integer"
        },
        "name": {
          "description": "Name of the Permission Group.",
          "type": "string"
        },
        "canManageMembers": {
          "description": "Group members can manage team members.",
          "type": "boolean"
        },
        "canCreateOrUpdateConfig": {
          "description": "Group members can create/update Configs.",
          "type": "boolean"
        },
        "canDeleteConfig": {
          "description": "Group members can delete Configs.",
          "type": "boolean"
        },
        "canCreateOrUpdateEnvironment": {
          "description": "Group members can create/update Environments.",
          "type": "boolean"
        },
        "canDeleteEnvironment": {
          "description": "Group members can delete Environments.",
          "type": "boolean"
        },
        "canCreateOrUpdateSetting": {
          "description": "Group members can create/update Feature Flags and Settings.",
          "type": "boolean"
        },
        "canTagSetting": {
          "description": "Group members can attach/detach Tags to Feature Flags and Settings.",
          "type": "boolean"
        },
        "canDeleteSetting": {
          "description": "Group members can delete Feature Flags and Settings.",
          "type": "boolean"
        },
        "canCreateOrUpdateTag": {
          "description": "Group members can create/update Tags.",
          "type": "boolean"
        },
        "canDeleteTag": {
          "description": "Group members can delete Tags.",
          "type": "boolean"
        },
        "canManageWebhook": {
          "description": "Group members can create/update/delete Webhooks.",
          "type": "boolean"
        },
        "canUseExportImport": {
          "description": "Group members can use the export/import feature.",
          "type": "boolean"
        },
        "canManageProductPreferences": {
          "description": "Group members can update Product preferences.",
          "type": "boolean"
        },
        "canManageIntegrations": {
          "description": "Group members can add and configure integrations.",
          "type": "boolean"
        },
        "canViewSdkKey": {
          "description": "Group members has access to SDK keys.",
          "type": "boolean"
        },
        "canRotateSdkKey": {
          "description": "Group members can rotate SDK keys.",
          "type": "boolean"
        },
        "canCreateOrUpdateSegments": {
          "description": "Group members can create/update Segments.",
          "type": "boolean"
        },
        "canDeleteSegments": {
          "description": "Group members can delete Segments.",
          "type": "boolean"
        },
        "canViewProductAuditLog": {
          "description": "Group members has access to audit logs.",
          "type": "boolean"
        },
        "canViewProductStatistics": {
          "description": "Group members has access to product statistics.",
          "type": "boolean"
        },
        "canDisable2FA": {
          "description": "Group members can disable two-factor authentication for other members.",
          "type": "boolean"
        },
        "accessType": {
          "$ref": "#/definitions/AccessType"
        },
        "newEnvironmentAccessType": {
          "$ref": "#/definitions/EnvironmentAccessType"
        },
        "environmentAccesses": {
          "description": "List of environment specific permissions.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EnvironmentAccessModel"
          }
        },
        "product": {
          "$ref": "#/definitions/ProductModel"
        }
      }
    },
    "PredefinedVariationEnvironmentModel": {
      "required": [
        "accessType",
        "environmentId",
        "name"
      ],
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "The identifier of the Environment.",
          "type": "string"
        },
        "name": {
          "description": "The name of the Environment.",
          "type": "string"
        },
        "accessType": {
          "$ref": "#/definitions/EnvironmentAccessType"
        }
      }
    },
    "PredefinedVariationModel": {
      "description": "A Predefined Variation.",
      "required": [
        "hint",
        "name",
        "predefinedVariationId",
        "value"
      ],
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/PredefinedVariationValueModel"
        },
        "name": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "hint": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "predefinedVariationId": {
          "format": "uuid",
          "description": "The Predefined Variation's identifier.",
          "type": "string"
        }
      }
    },
    "PredefinedVariationUsageModel": {
      "required": [
        "environmentId",
        "settingId"
      ],
      "type": "object",
      "properties": {
        "settingId": {
          "format": "int32",
          "type": "integer"
        },
        "environmentId": {
          "format": "uuid",
          "type": "string"
        }
      }
    },
    "PredefinedVariationValueModel": {
      "description": "Represents the value of a Predefined Variation.",
      "required": [
        "boolValue",
        "doubleValue",
        "intValue",
        "stringValue"
      ],
      "type": "object",
      "properties": {
        "boolValue": {
          "description": "The served value in case of a boolean Feature Flag.",
          "type": "boolean"
        },
        "stringValue": {
          "description": "The served value in case of a text Setting.",
          "type": "string"
        },
        "intValue": {
          "format": "int32",
          "description": "The served value in case of a whole number Setting.",
          "type": "integer"
        },
        "doubleValue": {
          "format": "double",
          "description": "The served value in case of a decimal number Setting.",
          "type": "number"
        }
      }
    },
    "PredefinedVariationWithUsagesModel": {
      "required": [
        "hint",
        "name",
        "predefinedVariationId",
        "usages",
        "usagesInOtherEnvironments",
        "value"
      ],
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/PredefinedVariationValueModel"
        },
        "name": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "hint": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "predefinedVariationId": {
          "format": "uuid",
          "description": "The Predefined Variation's identifier.",
          "type": "string"
        },
        "usages": {
          "description": "The Feature Flag or Setting Variation's usages in the given Environments.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PredefinedVariationUsageModel"
          }
        },
        "usagesInOtherEnvironments": {
          "format": "int32",
          "description": "The Feature Flag or Setting Variation's usages in the Environments you don't have access to.",
          "type": "integer"
        }
      }
    },
    "PredefinedVariationsModel": {
      "required": [
        "maxPredefinedVariations",
        "predefinedVariations"
      ],
      "type": "object",
      "properties": {
        "predefinedVariations": {
          "description": "The Feature Flag or Setting's Variations.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PredefinedVariationModel"
          }
        },
        "maxPredefinedVariations": {
          "format": "int32",
          "description": "The maximum number of predefined variations allowed for the Feature Flag or Setting.",
          "type": "integer"
        }
      }
    },
    "PredefinedVariationsWithUsagesModel": {
      "required": [
        "environments",
        "maxPredefinedVariations",
        "predefinedVariations",
        "settingKey",
        "settingType"
      ],
      "type": "object",
      "properties": {
        "settingKey": {
          "description": "Key of the Feature Flag or Setting.",
          "type": "string"
        },
        "settingType": {
          "$ref": "#/definitions/SettingType"
        },
        "predefinedVariations": {
          "description": "The Feature Flag or Setting's Variations.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PredefinedVariationWithUsagesModel"
          }
        },
        "environments": {
          "description": "The Environment descriptors for the Variations' usages.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PredefinedVariationEnvironmentModel"
          }
        },
        "maxPredefinedVariations": {
          "format": "int32",
          "description": "The maximum number of predefined variations allowed for the Feature Flag or Setting.",
          "type": "integer"
        }
      }
    },
    "PreferencesModel": {
      "required": [
        "keyGenerationMode",
        "mandatorySettingHint",
        "reasonRequired",
        "reasonRequiredEnvironments",
        "showVariationId"
      ],
      "type": "object",
      "properties": {
        "reasonRequired": {
          "description": "Indicates that a mandatory note required for saving and publishing.",
          "type": "boolean"
        },
        "keyGenerationMode": {
          "$ref": "#/definitions/KeyGenerationMode"
        },
        "showVariationId": {
          "description": "Indicates whether a variation ID's must be shown on the ConfigCat Dashboard.",
          "type": "boolean"
        },
        "reasonRequiredEnvironments": {
          "description": "List of Environments where mandatory note must be set before saving and publishing.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReasonRequiredEnvironmentModel"
          }
        },
        "mandatorySettingHint": {
          "description": "Indicates whether Feature flags and Settings must have a hint.",
          "type": "boolean"
        }
      }
    },
    "PrerequisiteComparator": {
      "description": "Prerequisite flag comparison operator used during the evaluation process.",
      "enum": [
        "equals",
        "doesNotEqual"
      ],
      "type": "string"
    },
    "PrerequisiteFlagConditionModel": {
      "description": "Describes a condition that is based on a prerequisite flag.",
      "required": [
        "comparator",
        "prerequisiteComparisonValue",
        "prerequisiteSettingId"
      ],
      "type": "object",
      "properties": {
        "prerequisiteSettingId": {
          "format": "int32",
          "description": "The prerequisite flag's identifier.",
          "type": "integer"
        },
        "comparator": {
          "$ref": "#/definitions/PrerequisiteComparator"
        },
        "prerequisiteComparisonValue": {
          "$ref": "#/definitions/ValueModel"
        }
      }
    },
    "ProductModel": {
      "description": "Details of the Product.",
      "required": [
        "description",
        "name",
        "order",
        "organization",
        "productId",
        "reasonRequired"
      ],
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationModel"
        },
        "productId": {
          "format": "uuid",
          "description": "Identifier of the Product.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Product.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Product.",
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Product represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        },
        "reasonRequired": {
          "description": "Determines whether a mandatory reason must be given every time when the Feature Flags or Settings within a Product are saved.",
          "type": "boolean"
        }
      }
    },
    "ProxyProfileListModel": {
      "required": [
        "profiles"
      ],
      "type": "object",
      "properties": {
        "profiles": {
          "description": "The list of proxy profiles.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProxyProfileModel"
          }
        }
      }
    },
    "ProxyProfileModel": {
      "required": [
        "connectionPreferences",
        "description",
        "lastAccessedAt",
        "name",
        "proxyProfileId",
        "sdkKeySelectionRules"
      ],
      "type": "object",
      "properties": {
        "proxyProfileId": {
          "format": "uuid",
          "description": "The unique identifier of the proxy profile.",
          "type": "string"
        },
        "name": {
          "description": "The name of the proxy profile.",
          "type": "string"
        },
        "description": {
          "description": "The description of the proxy profile.",
          "type": "string"
        },
        "lastAccessedAt": {
          "format": "date-time",
          "description": "The date and time when the proxy profile was last accessed.",
          "type": "string"
        },
        "connectionPreferences": {
          "$ref": "#/definitions/ConnectionPreferences"
        },
        "sdkKeySelectionRules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProxyProfileSelectionRule"
          }
        }
      }
    },
    "ProxyProfileSdkKeyItem": {
      "required": [
        "configId",
        "environmentId",
        "primarySdkKey",
        "sdkId",
        "secondarySdkKey"
      ],
      "type": "object",
      "properties": {
        "primarySdkKey": {
          "description": "The primary SDK Key of the Config / Environment pair selected for the Proxy Profile.",
          "type": "string"
        },
        "secondarySdkKey": {
          "description": "The secondary SDK Key of the Config / Environment pair selected for the Proxy Profile.",
          "type": "string"
        },
        "sdkId": {
          "description": "The SDK ID identifying the Config / Environment pair selected for the Proxy Profile.",
          "type": "string"
        },
        "configId": {
          "format": "uuid",
          "description": "The identifier of the Config associated with the SDK key.",
          "type": "string"
        },
        "environmentId": {
          "format": "uuid",
          "description": "The identifier of the Environment associated with the SDK key.",
          "type": "string"
        }
      }
    },
    "ProxyProfileSdkKeyRequestItem": {
      "type": "object",
      "properties": {
        "configId": {
          "format": "uuid",
          "description": "The identifier of the Config.",
          "type": "string"
        },
        "environmentId": {
          "format": "uuid",
          "description": "The identifier of the Environment.",
          "type": "string"
        }
      }
    },
    "ProxyProfileSdkKeysListModel": {
      "required": [
        "items"
      ],
      "type": "object",
      "properties": {
        "items": {
          "description": "The list of SDK keys (with additional metadata) selected for the Proxy Profile.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProxyProfileSdkKeyItem"
          }
        }
      }
    },
    "ProxyProfileSdkKeysRequest": {
      "required": [
        "items"
      ],
      "type": "object",
      "properties": {
        "items": {
          "description": "The list of Config / Environment pairs. By only setting a `configId` means all Environments of that Config will be included. Similarly, by only setting an `environmentId` means all Configs with that Environment will be included.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProxyProfileSdkKeyRequestItem"
          }
        }
      }
    },
    "ProxyProfileSecretModel": {
      "required": [
        "secretToken"
      ],
      "type": "object",
      "properties": {
        "secretToken": {
          "description": "The secret token associated with the proxy profile.",
          "type": "string"
        }
      }
    },
    "ProxyProfileSelectionRule": {
      "required": [
        "configIdFilter",
        "configNameMatchFilter",
        "environmentIdFilter",
        "environmentNameMatchFilter",
        "kind",
        "productIdFilter",
        "productNameMatchFilter"
      ],
      "type": "object",
      "properties": {
        "kind": {
          "$ref": "#/definitions/SelectionRuleKind"
        },
        "productIdFilter": {
          "format": "uuid",
          "description": "Defines the filter for matching Products by their unique identifier.",
          "type": "string"
        },
        "configIdFilter": {
          "format": "uuid",
          "description": "Defines the filter for matching Configs by their unique identifier.",
          "type": "string"
        },
        "environmentIdFilter": {
          "format": "uuid",
          "description": "Defines the filter for matching Environments by their unique identifier.",
          "type": "string"
        },
        "productNameMatchFilter": {
          "description": "Specifies a filter to match Product names in the proxy profile selection rule. It accepts wildcards (*).",
          "type": "string"
        },
        "configNameMatchFilter": {
          "description": "Specifies a filter to match Config names in the proxy profile selection rule. It accepts wildcards (*).",
          "type": "string"
        },
        "environmentNameMatchFilter": {
          "description": "Specifies a filter to match Environment names in the proxy profile selection rule. It accepts wildcards (*).",
          "type": "string"
        }
      }
    },
    "ReasonRequiredEnvironmentModel": {
      "required": [
        "environmentId",
        "environmentName",
        "reasonRequired"
      ],
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "reasonRequired": {
          "description": "Indicates that a mandatory note is required in this Environment for saving and publishing.",
          "type": "boolean"
        },
        "environmentName": {
          "description": "Name of the Environment.",
          "type": "string"
        }
      }
    },
    "ReferenceLineModel": {
      "description": "Determines a code reference line.",
      "required": [
        "lineNumber",
        "lineText"
      ],
      "type": "object",
      "properties": {
        "lineText": {
          "description": "The content of the reference line.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "lineNumber": {
          "format": "int32",
          "description": "The line number.",
          "type": "integer"
        }
      }
    },
    "ReferenceLineRequest": {
      "description": "Determines a code reference line.",
      "required": [
        "lineNumber"
      ],
      "type": "object",
      "properties": {
        "lineText": {
          "description": "The content of the reference line.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "lineNumber": {
          "format": "int32",
          "description": "The line number.",
          "type": "integer"
        }
      }
    },
    "ReferenceLinesModel": {
      "required": [
        "file",
        "fileUrl",
        "postLines",
        "preLines",
        "referenceLine"
      ],
      "type": "object",
      "properties": {
        "file": {
          "description": "The file's name in where the code reference has been found. (Appears on the ConfigCat Dashboard)",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "fileUrl": {
          "description": "The file's url. (Used to point to the file on the repository's website)",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "preLines": {
          "description": "The lines before the actual reference line.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferenceLineModel"
          }
        },
        "postLines": {
          "description": "The lines after the actual reference line.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferenceLineModel"
          }
        },
        "referenceLine": {
          "$ref": "#/definitions/ReferenceLineModel"
        }
      }
    },
    "ReferenceLinesRequest": {
      "required": [
        "file",
        "referenceLine"
      ],
      "type": "object",
      "properties": {
        "file": {
          "description": "The file's name in where the code reference has been found. (Appears on the ConfigCat Dashboard)",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "fileUrl": {
          "description": "The file's url. (Used to point to the file on the repository's website)",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "preLines": {
          "description": "The lines before the actual reference line.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferenceLineRequest"
          }
        },
        "postLines": {
          "description": "The lines after the actual reference line.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferenceLineRequest"
          }
        },
        "referenceLine": {
          "$ref": "#/definitions/ReferenceLineRequest"
        }
      }
    },
    "ReplaceSettingModel": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Feature Flag or Setting.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "hint": {
          "description": "A short description for the setting, shown on the Dashboard UI.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "tags": {
          "description": "The IDs of the tags which are attached to the setting.",
          "type": "array",
          "items": {
            "format": "int64",
            "type": "integer"
          }
        },
        "order": {
          "format": "int32",
          "description": "The order of the Setting represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        }
      }
    },
    "RolloutPercentageItemModel": {
      "required": [
        "percentage",
        "value"
      ],
      "type": "object",
      "properties": {
        "percentage": {
          "format": "int64",
          "description": "The percentage value for the rule.",
          "type": "integer"
        },
        "value": {
          "description": "The value to serve when the user falls in the percentage rule. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        }
      }
    },
    "RolloutRuleComparator": {
      "description": "The comparison operator the evaluation process must use when it compares the given user attribute's value with the comparison value.",
      "enum": [
        "isOneOf",
        "isNotOneOf",
        "contains",
        "doesNotContain",
        "semVerIsOneOf",
        "semVerIsNotOneOf",
        "semVerLess",
        "semVerLessOrEquals",
        "semVerGreater",
        "semVerGreaterOrEquals",
        "numberEquals",
        "numberDoesNotEqual",
        "numberLess",
        "numberLessOrEquals",
        "numberGreater",
        "numberGreaterOrEquals",
        "sensitiveIsOneOf",
        "sensitiveIsNotOneOf"
      ],
      "type": "string"
    },
    "RolloutRuleModel": {
      "required": [
        "comparator",
        "comparisonAttribute",
        "comparisonValue",
        "segmentComparator",
        "segmentId",
        "value"
      ],
      "type": "object",
      "properties": {
        "comparisonAttribute": {
          "description": "The user attribute to compare.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "comparator": {
          "allOf": [
            {
              "$ref": "#/definitions/RolloutRuleComparator"
            }
          ]
        },
        "comparisonValue": {
          "description": "The value to compare against.",
          "type": "string"
        },
        "value": {
          "description": "The value to serve when the comparison matches. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        },
        "segmentComparator": {
          "allOf": [
            {
              "$ref": "#/definitions/SegmentComparator"
            }
          ]
        },
        "segmentId": {
          "format": "uuid",
          "description": "The segment to compare against.",
          "type": "string"
        }
      }
    },
    "SdkKeysModel": {
      "required": [
        "primary",
        "secondary"
      ],
      "type": "object",
      "properties": {
        "primary": {
          "description": "The primary SDK key.",
          "type": "string"
        },
        "secondary": {
          "description": "The secondary SDK key.",
          "type": "string"
        }
      }
    },
    "SegmentComparator": {
      "description": "The segment comparison operator used during the evaluation process.",
      "enum": [
        "isIn",
        "isNotIn"
      ],
      "type": "string"
    },
    "SegmentConditionModel": {
      "description": "Describes a condition that is based on a segment.",
      "required": [
        "comparator",
        "segmentId"
      ],
      "type": "object",
      "properties": {
        "segmentId": {
          "format": "uuid",
          "description": "The segment's identifier.",
          "type": "string"
        },
        "comparator": {
          "$ref": "#/definitions/SegmentComparator"
        }
      }
    },
    "SegmentListModel": {
      "required": [
        "createdAt",
        "creatorEmail",
        "creatorFullName",
        "description",
        "lastUpdaterEmail",
        "lastUpdaterFullName",
        "name",
        "product",
        "segmentId",
        "updatedAt",
        "usage"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "segmentId": {
          "format": "uuid",
          "description": "Identifier of the Segment.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Segment.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Segment.",
          "type": "string"
        },
        "creatorEmail": {
          "description": "The email of the user who created the Segment.",
          "type": "string"
        },
        "creatorFullName": {
          "description": "The name of the user who created the Segment.",
          "type": "string"
        },
        "createdAt": {
          "format": "date-time",
          "description": "The date and time when the Segment was created.",
          "type": "string"
        },
        "lastUpdaterEmail": {
          "description": "The email of the user who last updated the Segment.",
          "type": "string"
        },
        "lastUpdaterFullName": {
          "description": "The name of the user who last updated the Segment.",
          "type": "string"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The date and time when the Segment was last updated.",
          "type": "string"
        },
        "usage": {
          "format": "int32",
          "description": "Determines how many Feature Flags and Settings are using the Segment.",
          "type": "integer"
        }
      }
    },
    "SegmentModel": {
      "required": [
        "comparator",
        "comparisonAttribute",
        "comparisonValue",
        "createdAt",
        "creatorEmail",
        "creatorFullName",
        "description",
        "lastUpdaterEmail",
        "lastUpdaterFullName",
        "name",
        "product",
        "segmentId",
        "updatedAt"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "segmentId": {
          "format": "uuid",
          "description": "Identifier of the Segment.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Segment.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Segment.",
          "type": "string"
        },
        "creatorEmail": {
          "description": "The email of the user who created the Segment.",
          "type": "string"
        },
        "creatorFullName": {
          "description": "The name of the user who created the Segment.",
          "type": "string"
        },
        "createdAt": {
          "format": "date-time",
          "description": "The date and time when the Segment was created.",
          "type": "string"
        },
        "lastUpdaterEmail": {
          "description": "The email of the user who last updated the Segment.",
          "type": "string"
        },
        "lastUpdaterFullName": {
          "description": "The name of the user who last updated the Segment.",
          "type": "string"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The date and time when the Segment was last updated.",
          "type": "string"
        },
        "comparisonAttribute": {
          "description": "The user's attribute the evaluation process must take into account.",
          "type": "string"
        },
        "comparator": {
          "$ref": "#/definitions/RolloutRuleComparator"
        },
        "comparisonValue": {
          "description": "The value to compare with the given user attribute's value.",
          "type": "string"
        }
      }
    },
    "SelectionRuleKind": {
      "description": "Defines the types of SDK selection rules that can be applied to proxy profiles.",
      "enum": [
        "include",
        "exclude"
      ],
      "type": "string"
    },
    "SettingDataModel": {
      "description": "Metadata of a Feature Flag or Setting.",
      "required": [
        "createdAt",
        "creatorEmail",
        "creatorFullName",
        "hint",
        "isWatching",
        "key",
        "name",
        "order",
        "settingId",
        "settingType"
      ],
      "type": "object",
      "properties": {
        "settingId": {
          "format": "int32",
          "description": "Identifier of the Feature Flag or Setting.",
          "type": "integer"
        },
        "key": {
          "description": "Key of the Feature Flag or Setting.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Feature Flag or Setting.",
          "type": "string"
        },
        "hint": {
          "description": "Description of the Feature Flag or Setting.",
          "type": "string"
        },
        "settingType": {
          "$ref": "#/definitions/SettingType"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Feature Flag or Setting represented on the ConfigCat Dashboard.",
          "type": "integer"
        },
        "createdAt": {
          "format": "date-time",
          "description": "The creation time of the Feature Flag or Setting.",
          "type": "string"
        },
        "creatorEmail": {
          "description": "The user's email address who created the Feature Flag or Setting.",
          "type": "string"
        },
        "creatorFullName": {
          "description": "The user's name who created the Feature Flag or Setting.",
          "type": "string"
        },
        "isWatching": {
          "type": "boolean"
        }
      }
    },
    "SettingDataV2Model": {
      "description": "Metadata of a Feature Flag or Setting.",
      "required": [
        "createdAt",
        "creatorEmail",
        "creatorFullName",
        "hint",
        "isWatching",
        "key",
        "name",
        "order",
        "predefinedVariations",
        "settingId",
        "settingType"
      ],
      "type": "object",
      "properties": {
        "settingId": {
          "format": "int32",
          "description": "Identifier of the Feature Flag or Setting.",
          "type": "integer"
        },
        "key": {
          "description": "Key of the Feature Flag or Setting.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Feature Flag or Setting.",
          "type": "string"
        },
        "hint": {
          "description": "Description of the Feature Flag or Setting.",
          "type": "string"
        },
        "settingType": {
          "$ref": "#/definitions/SettingType"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Feature Flag or Setting represented on the ConfigCat Dashboard.",
          "type": "integer"
        },
        "createdAt": {
          "format": "date-time",
          "description": "The creation time of the Feature Flag or Setting.",
          "type": "string"
        },
        "creatorEmail": {
          "description": "The user's email address who created the Feature Flag or Setting.",
          "type": "string"
        },
        "creatorFullName": {
          "description": "The user's name who created the Feature Flag or Setting.",
          "type": "string"
        },
        "predefinedVariations": {
          "description": "A collection of Variations for a Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PredefinedVariationModel"
          }
        },
        "isWatching": {
          "type": "boolean"
        }
      }
    },
    "SettingFormulaModel": {
      "required": [
        "config",
        "defaultValue",
        "environment",
        "featureFlagLimitations",
        "integrationLinks",
        "lastUpdaterUserEmail",
        "lastUpdaterUserFullName",
        "lastVersionId",
        "percentageEvaluationAttribute",
        "readOnly",
        "setting",
        "settingIdsWherePrerequisite",
        "settingTags",
        "targetingRules",
        "updatedAt"
      ],
      "type": "object",
      "properties": {
        "lastVersionId": {
          "format": "uuid",
          "type": "string"
        },
        "defaultValue": {
          "$ref": "#/definitions/ValueModel"
        },
        "targetingRules": {
          "description": "The targeting rules of the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/TargetingRuleModel"
          }
        },
        "setting": {
          "$ref": "#/definitions/SettingDataV2Model"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The last updated date and time when the Feature Flag or Setting.",
          "type": "string"
        },
        "percentageEvaluationAttribute": {
          "description": "The user attribute used for percentage evaluation. If not set, it defaults to the `Identifier` user object attribute.",
          "type": "string"
        },
        "lastUpdaterUserEmail": {
          "description": "The email of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "lastUpdaterUserFullName": {
          "description": "The name of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "integrationLinks": {
          "description": "The integration links attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntegrationLinkModel"
          }
        },
        "settingTags": {
          "description": "The tags attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettingTagModel"
          }
        },
        "settingIdsWherePrerequisite": {
          "description": "List of Feature Flag and Setting IDs where the actual Feature Flag or Setting is prerequisite.",
          "type": "array",
          "items": {
            "format": "int32",
            "type": "integer"
          }
        },
        "config": {
          "$ref": "#/definitions/ConfigModel"
        },
        "environment": {
          "$ref": "#/definitions/EnvironmentModel"
        },
        "readOnly": {
          "type": "boolean"
        },
        "featureFlagLimitations": {
          "$ref": "#/definitions/FeatureFlagLimitations"
        }
      }
    },
    "SettingModel": {
      "description": "Metadata of a Feature Flag or Setting.",
      "required": [
        "configId",
        "configName",
        "createdAt",
        "hint",
        "key",
        "name",
        "order",
        "predefinedVariations",
        "settingId",
        "settingType",
        "tags"
      ],
      "type": "object",
      "properties": {
        "settingId": {
          "format": "int32",
          "description": "Identifier of the Feature Flag or Setting.",
          "type": "integer"
        },
        "key": {
          "description": "Key of the Feature Flag or Setting.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Feature Flag or Setting.",
          "type": "string"
        },
        "hint": {
          "description": "Description of the Feature Flag or Setting.",
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Feature Flag or Setting represented on the ConfigCat Dashboard.",
          "type": "integer"
        },
        "settingType": {
          "$ref": "#/definitions/SettingType"
        },
        "configId": {
          "format": "uuid",
          "description": "Identifier of the Feature Flag's Config.",
          "type": "string"
        },
        "configName": {
          "description": "Name of the Feature Flag's Config.",
          "type": "string"
        },
        "createdAt": {
          "format": "date-time",
          "description": "The creation time of the Feature Flag or Setting.",
          "type": "string"
        },
        "tags": {
          "description": "The tags attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/TagModel"
          }
        },
        "predefinedVariations": {
          "description": "The Feature Flag or Setting's Variations.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PredefinedVariationModel"
          }
        }
      }
    },
    "SettingTagModel": {
      "required": [
        "color",
        "name",
        "settingTagId",
        "tagId"
      ],
      "type": "object",
      "properties": {
        "settingTagId": {
          "format": "int64",
          "type": "integer"
        },
        "tagId": {
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "color": {
          "type": "string"
        }
      }
    },
    "SettingType": {
      "description": "The type of the Feature Flag or Setting.",
      "enum": [
        "boolean",
        "string",
        "int",
        "double"
      ],
      "type": "string"
    },
    "SettingValueModel": {
      "required": [
        "config",
        "environment",
        "featureFlagLimitations",
        "integrationLinks",
        "lastUpdaterUserEmail",
        "lastUpdaterUserFullName",
        "readOnly",
        "rolloutPercentageItems",
        "rolloutRules",
        "setting",
        "settingTags",
        "updatedAt",
        "value"
      ],
      "type": "object",
      "properties": {
        "setting": {
          "$ref": "#/definitions/SettingDataModel"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The last updated date and time when the Feature Flag or Setting.",
          "type": "string"
        },
        "lastUpdaterUserEmail": {
          "description": "The email of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "lastUpdaterUserFullName": {
          "description": "The name of the user who last updated the Feature Flag or Setting.",
          "type": "string"
        },
        "integrationLinks": {
          "description": "The integration links attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntegrationLinkModel"
          }
        },
        "settingTags": {
          "description": "The tags attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettingTagModel"
          }
        },
        "rolloutRules": {
          "description": "The targeting rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/RolloutRuleModel"
          }
        },
        "rolloutPercentageItems": {
          "description": "The percentage rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/RolloutPercentageItemModel"
          }
        },
        "value": {
          "description": "The value to serve. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        },
        "config": {
          "$ref": "#/definitions/ConfigModel"
        },
        "environment": {
          "$ref": "#/definitions/EnvironmentModel"
        },
        "featureFlagLimitations": {
          "$ref": "#/definitions/FeatureFlagLimitations"
        },
        "readOnly": {
          "type": "boolean"
        }
      }
    },
    "SettingValueType": {
      "format": "double",
      "allOf": [
        {
          "type": "boolean"
        }
      ]
    },
    "StaleFlagConfigModel": {
      "required": [
        "configId",
        "evaluationVersion",
        "hasCodeReferences",
        "name",
        "settings"
      ],
      "type": "object",
      "properties": {
        "configId": {
          "format": "uuid",
          "description": "Identifier of the Config.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Config.",
          "type": "string"
        },
        "evaluationVersion": {
          "$ref": "#/definitions/EvaluationVersion"
        },
        "hasCodeReferences": {
          "description": "Config has code references uploaded.",
          "type": "boolean"
        },
        "settings": {
          "description": "Stale feature flags.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/StaleFlagSettingModel"
          }
        }
      }
    },
    "StaleFlagEnvironmentModel": {
      "required": [
        "environmentId",
        "name"
      ],
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Environment.",
          "type": "string"
        }
      }
    },
    "StaleFlagProductModel": {
      "required": [
        "configs",
        "environments",
        "name",
        "productId"
      ],
      "type": "object",
      "properties": {
        "productId": {
          "format": "uuid",
          "description": "Identifier of the Product.",
          "type": "string"
        },
        "name": {
          "description": "Name of the Product.",
          "type": "string"
        },
        "configs": {
          "description": "Configs that contain stale feature flags.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/StaleFlagConfigModel"
          }
        },
        "environments": {
          "description": "Environment list.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/StaleFlagEnvironmentModel"
          }
        }
      }
    },
    "StaleFlagReminderScope": {
      "enum": [
        "all",
        "watchedByMe"
      ],
      "type": "string"
    },
    "StaleFlagSettingModel": {
      "required": [
        "hasCodeReferences",
        "hint",
        "key",
        "name",
        "settingId",
        "settingValues",
        "tags"
      ],
      "type": "object",
      "properties": {
        "settingId": {
          "format": "int32",
          "description": "Identifier of the Feature Flag or Setting.",
          "type": "integer"
        },
        "name": {
          "description": "Name of the Feature Flag or Setting.",
          "type": "string"
        },
        "key": {
          "description": "Key of the Feature Flag or Setting.",
          "type": "string"
        },
        "hint": {
          "description": "Description of the Feature Flag or Setting.",
          "type": "string"
        },
        "hasCodeReferences": {
          "description": "Feature Flag or Setting has code references uploaded.",
          "type": "boolean"
        },
        "tags": {
          "description": "The tags' identifiers attached to the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/StaleFlagSettingTagModel"
          }
        },
        "settingValues": {
          "description": "Environment level feature flag stale data.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/StaleFlagSettingValueModel"
          }
        }
      }
    },
    "StaleFlagSettingTagModel": {
      "required": [
        "settingTagId",
        "tagId"
      ],
      "type": "object",
      "properties": {
        "tagId": {
          "format": "int64",
          "type": "integer"
        },
        "settingTagId": {
          "format": "int64",
          "type": "integer"
        }
      }
    },
    "StaleFlagSettingValueModel": {
      "required": [
        "environmentId",
        "isStale",
        "updatedAt"
      ],
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "updatedAt": {
          "format": "date-time",
          "description": "The last updated date and time when the Feature Flag or Setting.",
          "type": "string"
        },
        "isStale": {
          "description": "Is the feature flag considered stale in the environment.",
          "type": "boolean"
        }
      }
    },
    "StaleFlagStaleInEnvironmentsType": {
      "enum": [
        "staleInAnyEnvironments",
        "staleInAllEnvironments"
      ],
      "type": "string"
    },
    "TagModel": {
      "required": [
        "color",
        "name",
        "product",
        "tagId"
      ],
      "type": "object",
      "properties": {
        "product": {
          "$ref": "#/definitions/ProductModel"
        },
        "tagId": {
          "format": "int64",
          "description": "Identifier of the Tag.",
          "type": "integer"
        },
        "name": {
          "description": "Name of the Tag.",
          "type": "string"
        },
        "color": {
          "description": "The configured color of the Tag.",
          "type": "string"
        }
      }
    },
    "TargetingRuleModel": {
      "required": [
        "conditions",
        "percentageOptions",
        "value"
      ],
      "type": "object",
      "properties": {
        "conditions": {
          "description": "The list of conditions that are combined with logical AND operators.\nIt can be one of the following:\n- User condition\n- Segment condition\n- Prerequisite flag condition",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConditionModel"
          }
        },
        "percentageOptions": {
          "description": "The percentage options from where the evaluation process will choose a value based on the flag's percentage evaluation attribute.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PercentageOptionModel"
          }
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/definitions/ValueModel"
            }
          ]
        }
      }
    },
    "UpdateComparisonValueListModel": {
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "value": {
          "description": "The actual comparison value.",
          "type": "string"
        },
        "hint": {
          "description": "An optional hint for the comparison value.",
          "maxLength": 1500,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "UpdateComparisonValueModel": {
      "description": "The value that the user object's attribute is compared to.",
      "type": "object",
      "properties": {
        "stringValue": {
          "description": "The string representation of the comparison value.",
          "type": "string"
        },
        "doubleValue": {
          "format": "double",
          "description": "The number representation of the comparison value.",
          "type": "number"
        },
        "listValue": {
          "description": "The list representation of the comparison value.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateComparisonValueListModel"
          }
        }
      }
    },
    "UpdateConditionModel": {
      "type": "object",
      "properties": {
        "userCondition": {
          "allOf": [
            {
              "$ref": "#/definitions/UpdateUserConditionModel"
            }
          ]
        },
        "segmentCondition": {
          "allOf": [
            {
              "$ref": "#/definitions/UpdateSegmentConditionModel"
            }
          ]
        },
        "prerequisiteFlagCondition": {
          "allOf": [
            {
              "$ref": "#/definitions/UpdatePrerequisiteFlagConditionModel"
            }
          ]
        }
      }
    },
    "UpdateConfigRequest": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Config.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "description": "The description of the Config.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Config represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        }
      }
    },
    "UpdateEnvironmentModel": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Environment.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "color": {
          "description": "The color of the Environment. RGB or HTML color codes are allowed.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "description": "The description of the Environment.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Environment represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        }
      }
    },
    "UpdateEvaluationFormulaModel": {
      "required": [
        "defaultValue"
      ],
      "type": "object",
      "properties": {
        "defaultValue": {
          "$ref": "#/definitions/UpdateValueModel"
        },
        "targetingRules": {
          "description": "The targeting rules of the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateTargetingRuleModel"
          }
        },
        "percentageEvaluationAttribute": {
          "description": "The user attribute used for percentage evaluation. If not set, it defaults to the `Identifier` user object attribute.",
          "maxLength": 1000,
          "type": "string"
        }
      }
    },
    "UpdateEvaluationFormulaWithIdModel": {
      "required": [
        "defaultValue"
      ],
      "type": "object",
      "properties": {
        "defaultValue": {
          "$ref": "#/definitions/UpdateValueModel"
        },
        "targetingRules": {
          "description": "The targeting rules of the Feature Flag or Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateTargetingRuleModel"
          }
        },
        "percentageEvaluationAttribute": {
          "description": "The user attribute used for percentage evaluation. If not set, it defaults to the `Identifier` user object attribute.",
          "maxLength": 1000,
          "type": "string"
        },
        "settingId": {
          "format": "int32",
          "description": "The identifier of the feature flag or setting.",
          "type": "integer"
        }
      }
    },
    "UpdateEvaluationFormulasModel": {
      "type": "object",
      "properties": {
        "updateFormulas": {
          "description": "Evaluation descriptors of each updated Feature Flag and Setting.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateEvaluationFormulaWithIdModel"
          }
        }
      }
    },
    "UpdateMemberPermissionsRequest": {
      "type": "object",
      "properties": {
        "permissionGroupIds": {
          "description": "List of Permission Group identifiers to where the Member should be added.",
          "type": "array",
          "items": {
            "format": "int64",
            "type": "integer"
          }
        },
        "isAdmin": {
          "description": "Indicates that the member must be Organization Admin.",
          "type": "boolean"
        },
        "isBillingManager": {
          "description": "Indicates that the member must be Billing Manager.",
          "type": "boolean"
        },
        "removeFromPermissionGroupsWhereIdNotSet": {
          "description": "When `true`, the member will be removed from those Permission Groups that are not listed in the `permissionGroupIds` field.",
          "type": "boolean"
        }
      }
    },
    "UpdatePercentageOptionModel": {
      "required": [
        "percentage",
        "value"
      ],
      "type": "object",
      "properties": {
        "percentage": {
          "format": "int32",
          "description": "A number between 0 and 100 that represents a randomly allocated fraction of the users.",
          "type": "integer"
        },
        "value": {
          "$ref": "#/definitions/UpdateValueModel"
        }
      }
    },
    "UpdatePermissionGroupRequest": {
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the Permission Group.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "canManageMembers": {
          "description": "Group members can manage team members.",
          "type": "boolean"
        },
        "canCreateOrUpdateConfig": {
          "description": "Group members can create/update Configs.",
          "type": "boolean"
        },
        "canDeleteConfig": {
          "description": "Group members can delete Configs.",
          "type": "boolean"
        },
        "canCreateOrUpdateEnvironment": {
          "description": "Group members can create/update Environments.",
          "type": "boolean"
        },
        "canDeleteEnvironment": {
          "description": "Group members can delete Environments.",
          "type": "boolean"
        },
        "canCreateOrUpdateSetting": {
          "description": "Group members can create/update Feature Flags and Settings.",
          "type": "boolean"
        },
        "canTagSetting": {
          "description": "Group members can attach/detach Tags to Feature Flags and Settings.",
          "type": "boolean"
        },
        "canDeleteSetting": {
          "description": "Group members can delete Feature Flags and Settings.",
          "type": "boolean"
        },
        "canCreateOrUpdateTag": {
          "description": "Group members can create/update Tags.",
          "type": "boolean"
        },
        "canDeleteTag": {
          "description": "Group members can delete Tags.",
          "type": "boolean"
        },
        "canManageWebhook": {
          "description": "Group members can create/update/delete Webhooks.",
          "type": "boolean"
        },
        "canUseExportImport": {
          "description": "Group members can use the export/import feature.",
          "type": "boolean"
        },
        "canManageProductPreferences": {
          "description": "Group members can update Product preferences.",
          "type": "boolean"
        },
        "canManageIntegrations": {
          "description": "Group members can add and configure integrations.",
          "type": "boolean"
        },
        "canViewSdkKey": {
          "description": "Group members has access to SDK keys.",
          "type": "boolean"
        },
        "canRotateSdkKey": {
          "description": "Group members can rotate SDK keys.",
          "type": "boolean"
        },
        "canCreateOrUpdateSegments": {
          "description": "Group members can create/update Segments.",
          "type": "boolean"
        },
        "canDeleteSegments": {
          "description": "Group members can delete Segments.",
          "type": "boolean"
        },
        "canViewProductAuditLog": {
          "description": "Group members has access to audit logs.",
          "type": "boolean"
        },
        "canViewProductStatistics": {
          "description": "Group members has access to product statistics.",
          "type": "boolean"
        },
        "canDisable2FA": {
          "description": "Group members can disable two-factor authentication for other members.",
          "type": "boolean"
        },
        "accessType": {
          "allOf": [
            {
              "$ref": "#/definitions/AccessType"
            }
          ]
        },
        "newEnvironmentAccessType": {
          "allOf": [
            {
              "$ref": "#/definitions/EnvironmentAccessType"
            }
          ]
        },
        "environmentAccesses": {
          "description": "List of environment specific permissions.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/CreateOrUpdateEnvironmentAccessModel"
          }
        }
      }
    },
    "UpdatePredefinedVariationModel": {
      "description": "A Predefined Variation.",
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/UpdatePredefinedVariationValueModel"
        },
        "name": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "hint": {
          "description": "The name of the Predefined Variation, shown on the Dashboard UI. If not set, the Value will be shown.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "predefinedVariationId": {
          "format": "uuid",
          "description": "The Predefined Variation's identifier to update. Omit the value if you want to add a new predefined variation.",
          "type": "string"
        }
      }
    },
    "UpdatePredefinedVariationValueModel": {
      "description": "Represents the value of a Predefined Variation.",
      "type": "object",
      "properties": {
        "boolValue": {
          "description": "The served value in case of a boolean Feature Flag.",
          "type": "boolean"
        },
        "stringValue": {
          "description": "The served value in case of a text Setting.",
          "type": "string"
        },
        "intValue": {
          "format": "int32",
          "description": "The served value in case of a whole number Setting.",
          "type": "integer"
        },
        "doubleValue": {
          "format": "double",
          "description": "The served value in case of a decimal number Setting.",
          "type": "number"
        }
      }
    },
    "UpdatePredefinedVariationsRequest": {
      "required": [
        "predefinedVariations"
      ],
      "type": "object",
      "properties": {
        "predefinedVariations": {
          "description": "A collection of Predefined Variations.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdatePredefinedVariationModel"
          }
        }
      }
    },
    "UpdatePreferencesRequest": {
      "type": "object",
      "properties": {
        "reasonRequired": {
          "description": "Indicates that a mandatory note is required for saving and publishing.",
          "type": "boolean"
        },
        "keyGenerationMode": {
          "allOf": [
            {
              "$ref": "#/definitions/KeyGenerationMode"
            }
          ]
        },
        "showVariationId": {
          "description": "Indicates whether a variation ID's must be shown on the ConfigCat Dashboard.",
          "type": "boolean"
        },
        "mandatorySettingHint": {
          "description": "Indicates whether Feature flags and Settings must have a hint.",
          "type": "boolean"
        },
        "reasonRequiredEnvironments": {
          "description": "List of Environments where mandatory note must be set before saving and publishing.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateReasonRequiredEnvironmentModel"
          }
        }
      }
    },
    "UpdatePrerequisiteFlagConditionModel": {
      "description": "Describes a condition that is based on a prerequisite flag.",
      "required": [
        "comparator",
        "prerequisiteComparisonValue",
        "prerequisiteSettingId"
      ],
      "type": "object",
      "properties": {
        "prerequisiteSettingId": {
          "format": "int32",
          "description": "The prerequisite flag's identifier.",
          "type": "integer"
        },
        "comparator": {
          "$ref": "#/definitions/PrerequisiteComparator"
        },
        "prerequisiteComparisonValue": {
          "$ref": "#/definitions/UpdateValueModel"
        }
      }
    },
    "UpdateProductRequest": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the Product.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "description": "The description of the Product.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "order": {
          "format": "int32",
          "description": "The order of the Product represented on the ConfigCat Dashboard.\nDetermined from an ascending sequence of integers.",
          "type": "integer"
        }
      }
    },
    "UpdateProxyProfileSelectionRule": {
      "type": "object",
      "properties": {
        "kind": {
          "$ref": "#/definitions/SelectionRuleKind"
        },
        "productIdFilter": {
          "format": "uuid",
          "description": "Defines the filter for matching Products by their unique identifier.",
          "type": "string"
        },
        "configIdFilter": {
          "format": "uuid",
          "description": "Defines the filter for matching Configs by their unique identifier.",
          "type": "string"
        },
        "environmentIdFilter": {
          "format": "uuid",
          "description": "Defines the filter for matching Environments by their unique identifier.",
          "type": "string"
        },
        "productNameMatchFilter": {
          "description": "Specifies a filter to match Product names in the proxy profile selection rule. It accepts wildcards (*).",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "configNameMatchFilter": {
          "description": "Specifies a filter to match Config names in the proxy profile selection rule. It accepts wildcards (*).",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "environmentNameMatchFilter": {
          "description": "Specifies a filter to match Environment names in the proxy profile selection rule. It accepts wildcards (*).",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "UpdateReasonRequiredEnvironmentModel": {
      "type": "object",
      "properties": {
        "environmentId": {
          "format": "uuid",
          "description": "Identifier of the Environment.",
          "type": "string"
        },
        "reasonRequired": {
          "description": "Indicates that a mandatory note is required in this Environment for saving and publishing.",
          "type": "boolean"
        }
      }
    },
    "UpdateRolloutPercentageItemModel": {
      "required": [
        "percentage",
        "value"
      ],
      "type": "object",
      "properties": {
        "percentage": {
          "format": "int64",
          "description": "The percentage value for the rule.",
          "type": "integer"
        },
        "value": {
          "description": "The value to serve when the user falls in the percentage rule. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        }
      }
    },
    "UpdateRolloutRuleModel": {
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "comparisonAttribute": {
          "description": "The user attribute to compare.",
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "comparator": {
          "allOf": [
            {
              "$ref": "#/definitions/RolloutRuleComparator"
            }
          ]
        },
        "comparisonValue": {
          "description": "The value to compare against.",
          "type": "string"
        },
        "value": {
          "description": "The value to serve when the comparison matches. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        },
        "segmentComparator": {
          "allOf": [
            {
              "$ref": "#/definitions/SegmentComparator"
            }
          ]
        },
        "segmentId": {
          "format": "uuid",
          "description": "The segment to compare against.",
          "type": "string"
        }
      }
    },
    "UpdateSegmentConditionModel": {
      "description": "Describes a condition that is based on a segment.",
      "required": [
        "comparator",
        "segmentId"
      ],
      "type": "object",
      "properties": {
        "segmentId": {
          "format": "uuid",
          "description": "The segment's identifier.",
          "type": "string"
        },
        "comparator": {
          "$ref": "#/definitions/SegmentComparator"
        }
      }
    },
    "UpdateSegmentModel": {
      "type": "object",
      "properties": {
        "name": {
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "description": {
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "comparisonAttribute": {
          "maxLength": 1000,
          "minLength": 0,
          "type": "string"
        },
        "comparator": {
          "allOf": [
            {
              "$ref": "#/definitions/RolloutRuleComparator"
            }
          ]
        },
        "comparisonValue": {
          "type": "string"
        }
      }
    },
    "UpdateSettingValueModel": {
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "rolloutRules": {
          "description": "The targeting rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateRolloutRuleModel"
          }
        },
        "rolloutPercentageItems": {
          "description": "The percentage rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateRolloutPercentageItemModel"
          }
        },
        "value": {
          "description": "The value to serve. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        }
      }
    },
    "UpdateSettingValueWithSettingIdModel": {
      "required": [
        "value"
      ],
      "type": "object",
      "properties": {
        "rolloutRules": {
          "description": "The targeting rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateRolloutRuleModel"
          }
        },
        "rolloutPercentageItems": {
          "description": "The percentage rule collection.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateRolloutPercentageItemModel"
          }
        },
        "value": {
          "description": "The value to serve. It must respect the setting type. In some generated clients for strictly typed languages you may use double/float properties to handle integer values.",
          "allOf": [
            {
              "$ref": "#/definitions/SettingValueType"
            }
          ]
        },
        "settingId": {
          "format": "int32",
          "description": "The id of the Setting.",
          "type": "integer"
        }
      }
    },
    "UpdateSettingValuesWithIdModel": {
      "type": "object",
      "properties": {
        "settingValues": {
          "description": "The values to update.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateSettingValueWithSettingIdModel"
          }
        }
      }
    },
    "UpdateTagModel": {
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the Tag.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "color": {
          "description": "Color of the Tag. Possible values: `panther`, `whale`, `salmon`, `lizard`, `canary`, `koala`, or any HTML color code.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "UpdateTargetingRuleModel": {
      "type": "object",
      "properties": {
        "conditions": {
          "description": "The list of conditions that are combined with logical AND operators.\nIt can be one of the following:\n- User condition\n- Segment condition\n- Prerequisite flag condition",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateConditionModel"
          }
        },
        "percentageOptions": {
          "description": "The percentage options from where the evaluation process will choose a value based on the flag's percentage evaluation attribute.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdatePercentageOptionModel"
          }
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/definitions/UpdateValueModel"
            }
          ]
        }
      }
    },
    "UpdateUserConditionModel": {
      "description": "Describes a condition that is based on user attributes.",
      "required": [
        "comparator",
        "comparisonAttribute",
        "comparisonValue"
      ],
      "type": "object",
      "properties": {
        "comparisonAttribute": {
          "description": "The User Object attribute that the condition is based on. Can be \"User ID\", \"Email\", \"Country\" or any custom attribute.",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        },
        "comparator": {
          "$ref": "#/definitions/UserComparator"
        },
        "comparisonValue": {
          "$ref": "#/definitions/UpdateComparisonValueModel"
        }
      }
    },
    "UpdateValueModel": {
      "description": "Represents the value of a Feature Flag or Setting.",
      "type": "object",
      "properties": {
        "boolValue": {
          "description": "The served value in case of a boolean Feature Flag.",
          "type": "boolean"
        },
        "stringValue": {
          "description": "The served value in case of a text Setting.",
          "type": "string"
        },
        "intValue": {
          "format": "int32",
          "description": "The served value in case of a whole number Setting.",
          "type": "integer"
        },
        "doubleValue": {
          "format": "double",
          "description": "The served value in case of a decimal number Setting.",
          "type": "number"
        },
        "predefinedVariationId": {
          "format": "uuid",
          "description": "The served Variation's identifier.",
          "type": "string"
        }
      }
    },
    "UserComparator": {
      "description": "The comparison operator which defines the relation between the comparison attribute and the comparison value.",
      "enum": [
        "isOneOf",
        "isNotOneOf",
        "containsAnyOf",
        "doesNotContainAnyOf",
        "semVerIsOneOf",
        "semVerIsNotOneOf",
        "semVerLess",
        "semVerLessOrEquals",
        "semVerGreater",
        "semVerGreaterOrEquals",
        "numberEquals",
        "numberDoesNotEqual",
        "numberLess",
        "numberLessOrEquals",
        "numberGreater",
        "numberGreaterOrEquals",
        "sensitiveIsOneOf",
        "sensitiveIsNotOneOf",
        "dateTimeBefore",
        "dateTimeAfter",
        "sensitiveTextEquals",
        "sensitiveTextDoesNotEqual",
        "sensitiveTextStartsWithAnyOf",
        "sensitiveTextNotStartsWithAnyOf",
        "sensitiveTextEndsWithAnyOf",
        "sensitiveTextNotEndsWithAnyOf",
        "sensitiveArrayContainsAnyOf",
        "sensitiveArrayDoesNotContainAnyOf",
        "textEquals",
        "textDoesNotEqual",
        "textStartsWithAnyOf",
        "textNotStartsWithAnyOf",
        "textEndsWithAnyOf",
        "textNotEndsWithAnyOf",
        "arrayContainsAnyOf",
        "arrayDoesNotContainAnyOf"
      ],
      "type": "string"
    },
    "UserConditionModel": {
      "description": "Describes a condition that is based on user attributes.",
      "required": [
        "comparator",
        "comparisonAttribute",
        "comparisonValue"
      ],
      "type": "object",
      "properties": {
        "comparisonAttribute": {
          "description": "The User Object attribute that the condition is based on. Can be \"User ID\", \"Email\", \"Country\" or any custom attribute.",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        },
        "comparator": {
          "$ref": "#/definitions/UserComparator"
        },
        "comparisonValue": {
          "$ref": "#/definitions/ComparisonValueModel"
        }
      }
    },
    "UserModel": {
      "required": [
        "email",
        "fullName",
        "twoFactorEnabled",
        "userId"
      ],
      "type": "object",
      "properties": {
        "userId": {
          "description": "Identifier of the Member.",
          "type": "string"
        },
        "fullName": {
          "description": "Name of the Member.",
          "type": "string"
        },
        "email": {
          "description": "Email of the Member.",
          "type": "string"
        },
        "twoFactorEnabled": {
          "description": "Determines whether 2FA is enabled for the Member.",
          "type": "boolean"
        }
      }
    },
    "ValueModel": {
      "description": "Represents the value of a Feature Flag or Setting.",
      "required": [
        "boolValue",
        "doubleValue",
        "intValue",
        "predefinedVariationId",
        "stringValue"
      ],
      "type": "object",
      "properties": {
        "boolValue": {
          "description": "The served value in case of a boolean Feature Flag.",
          "type": "boolean"
        },
        "stringValue": {
          "description": "The served value in case of a text Setting.",
          "type": "string"
        },
        "intValue": {
          "format": "int32",
          "description": "The served value in case of a whole number Setting.",
          "type": "integer"
        },
        "doubleValue": {
          "format": "double",
          "description": "The served value in case of a decimal number Setting.",
          "type": "number"
        },
        "predefinedVariationId": {
          "format": "uuid",
          "description": "The served Variation's identifier.",
          "type": "string"
        }
      }
    },
    "WebHookHttpMethod": {
      "enum": [
        "get",
        "post"
      ],
      "type": "string"
    },
    "WebHookRequestModel": {
      "required": [
        "url"
      ],
      "type": "object",
      "properties": {
        "url": {
          "description": "The URL of the Webhook.",
          "maxLength": 1000,
          "minLength": 7,
          "type": "string"
        },
        "content": {
          "description": "The HTTP body content.",
          "maxLength": 15000,
          "minLength": 0,
          "type": "string"
        },
        "httpMethod": {
          "allOf": [
            {
              "$ref": "#/definitions/WebHookHttpMethod"
            }
          ]
        },
        "webHookHeaders": {
          "description": "List of HTTP headers.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookHeaderModel"
          }
        }
      }
    },
    "WebhookConfig": {
      "description": "The Config where the applied changes will invoke the Webhook.",
      "required": [
        "configId",
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The Config's name.",
          "type": "string"
        },
        "configId": {
          "format": "uuid",
          "description": "The Config's identifier.",
          "type": "string"
        }
      }
    },
    "WebhookEnvironment": {
      "description": "The Environment where the applied changes will invoke the Webhook.",
      "required": [
        "environmentId",
        "name"
      ],
      "type": "object",
      "properties": {
        "name": {
          "description": "The Environment's name.",
          "type": "string"
        },
        "environmentId": {
          "format": "uuid",
          "description": "The Environment's identifier.",
          "type": "string"
        }
      }
    },
    "WebhookHeaderModel": {
      "required": [
        "key",
        "value"
      ],
      "type": "object",
      "properties": {
        "key": {
          "description": "The HTTP header key.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "value": {
          "description": "The HTTP header value.",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        },
        "isSecure": {
          "description": "Indicates whether the header value is sensitive.",
          "type": "boolean"
        }
      }
    },
    "WebhookHeaderResponseModel": {
      "required": [
        "isSecure",
        "key",
        "value"
      ],
      "type": "object",
      "properties": {
        "key": {
          "description": "The HTTP header key.",
          "type": "string"
        },
        "value": {
          "description": "The HTTP header value.",
          "type": "string"
        },
        "isSecure": {
          "description": "Indicates whether the header value is sensitive.",
          "type": "boolean"
        }
      }
    },
    "WebhookNotification": {
      "description": "The webhook notification settings, including the proxy URL and signing keys.",
      "required": [
        "signingKey1",
        "signingKey2",
        "webhookProxyUrl"
      ],
      "type": "object",
      "properties": {
        "webhookProxyUrl": {
          "description": "The webhook proxy URL for receiving config JSON change notifications.",
          "type": "string"
        },
        "signingKey1": {
          "description": "The primary signing key used for verifying the authenticity of webhook requests.",
          "type": "string"
        },
        "signingKey2": {
          "description": "The secondary signing key used for verifying the authenticity of webhook requests.",
          "type": "string"
        }
      }
    },
    "WebhookResponseModel": {
      "required": [
        "config",
        "content",
        "environment",
        "httpMethod",
        "url",
        "webHookHeaders",
        "webhookId"
      ],
      "type": "object",
      "properties": {
        "webhookId": {
          "format": "int32",
          "description": "The identifier of the Webhook.",
          "type": "integer"
        },
        "url": {
          "description": "The URL of the Webhook.",
          "type": "string"
        },
        "httpMethod": {
          "$ref": "#/definitions/WebHookHttpMethod"
        },
        "content": {
          "description": "The HTTP body content.",
          "type": "string"
        },
        "webHookHeaders": {
          "description": "List of HTTP headers that the Webhook must send.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookHeaderResponseModel"
          }
        },
        "config": {
          "$ref": "#/definitions/WebhookConfig"
        },
        "environment": {
          "$ref": "#/definitions/WebhookEnvironment"
        }
      }
    },
    "WebhookSigningKeysModel": {
      "required": [
        "key1",
        "key2"
      ],
      "type": "object",
      "properties": {
        "key1": {
          "description": "The first signing key.",
          "type": "string"
        },
        "key2": {
          "description": "The second signing key.",
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "Basic": {
      "type": "basic",
      "description": "To authenticate with the API you have to fill the `Authorization` HTTP request header with your Public API credentials.\n\nYou can create your credentials on the <a target=\"_blank\" href=\"https://app.configcat.com/my-account/public-api-credentials\">Public API credentials management page</a>."
    }
  },
  "security": [
    {
      "Basic": [ ]
    }
  ],
  "tags": [
    {
      "name": "Feature Flag & Setting values using SDK Key V2",
      "description": "<i>These endpoints are exclusive for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://configcat.com/docs/advanced/config-v2/\"><b>Config V2</b></a> Feature Flags.</i>\n<br /><i>They can only be used on a Config that has `evaluationVersion` set to `v2`.</i><br /><br />\nWith these endpoints you can control how your existing Feature Flags and Settings should serve their values.\nYou can turn Feature Flags on or off, update Setting values and change Targeting Rules.\n\nThese endpoints are determining the Environment and Config by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in\nthe `X-CONFIGCAT-SDKKEY` request header. To identify the desired Feature Flag or Setting to change,\nyou can use either its `settingId` or `key` attribute. You can get those attributes\nfrom the [Feature Flag & Setting](#tag/Feature-Flags-and-Settings) endpoints."
    },
    {
      "name": "Feature Flag & Setting values V2",
      "description": "<i>These endpoints are exclusive for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://configcat.com/docs/advanced/config-v2/\"><b>Config V2</b></a> Feature Flags.</i>\n<br /><i>They can only be used on a Config that has `evaluationVersion` set to `v2`.</i><br /><br />\nWith these endpoints you can control how your existing Feature Flags and Settings should serve their values.\nYou can turn Feature Flags on or off, update Setting values and change Targeting Rules.\n\nTo determine which Feature Flag or Setting you want to work with you have to pass its `settingId`. It can be\nobtained from the [Feature Flag & Setting](#tag/Feature-Flags-and-Settings) endpoints.\n\nYou also have to specify in which Environment you want to change the served value configuration by its\n`environmentId` which can be obtained from the [List Environments](#operation/get-environments) endpoint."
    },
    {
      "name": "Feature Flag & Setting values using SDK Key",
      "description": "With these endpoints you can control how your existing Feature Flags and Settings should serve their values. \nYou can turn Feature Flags on or off, update Setting values and also add, remove or change the order of Percentage and Targeting Rules.\n\nThese endpoints are determining the Environment and Config by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://app.configcat.com/sdkkey\">SDK key</a> passed in\nthe `X-CONFIGCAT-SDKKEY` request header. To identify the desired Feature Flag or Setting to change, \nyou can use either its `settingId` or `key` attribute. You can get those attributes \nfrom the [Feature Flag & Setting](#tag/Feature-Flags-and-Settings) endpoints."
    },
    {
      "name": "Feature Flag & Setting values",
      "description": "With these endpoints you can control how your existing Feature Flags and Settings should serve their values. \nYou can turn Feature Flags on or off, update Setting values and also add, remove or reorder Percentage and Targeting Rules.\n\nTo determine which Feature Flag or Setting you want to work with you have to pass its `settingId`. It can be\nobtained from the [Feature Flag & Setting](#tag/Feature-Flags-and-Settings) endpoints.\n\nYou also have to specify in which Environment you want to change the served value configuration by its\n`environmentId` which can be obtained from the [List Environments](#operation/get-environments) endpoint."
    },
    {
      "name": "Feature Flags & Settings",
      "description": "With these endpoints you can manage your Feature Flags or Settings within a Config. \nHowever you can't use them for manipulating the values of your Feature Flags and Settings,\nto do that please visit the [Feature Flag & Setting values using SDK Key](#tag/Feature-Flag-and-Setting-values-using-SDK-Key)\nand [Feature Flag & Setting values](#tag/Feature-Flag-and-Setting-values) sections of the API.\n\nFor using these endpoints, first you have to select which Config you want to work with by its `configId` \nwhich can be obtained from the [List Configs](#operation/get-configs) endpoint. \nThen you can use it to create new Feature Flags or to get information about existing ones.\n\nThen you can obtain the `settingId` or `key` of your desired Feature Flag or Setting \nto use them for further operations in this API. \n\n<a href=\"https://configcat.com/docs/main-concepts/#setting\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the concept of Settings."
    },
    {
      "name": "Organizations",
      "description": "With these endpoints you can get useful information about your Organizations.\nThis also can be used to manage your [Products](#tag/Products).\n\n<a href=\"https://configcat.com/docs/organization/\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the Organizations."
    },
    {
      "name": "Members",
      "description": "With these endpoints you can manage your Members.\n\n<a href=\"https://configcat.com/docs/advanced/team-management/team-management-basics\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about Team Management."
    },
    {
      "name": "Permission Groups",
      "description": "With these endpoints you can manage your Permission Groups.\n\n<a href=\"https://configcat.com/docs/advanced/team-management/team-management-basics\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about Permissions."
    },
    {
      "name": "Products",
      "description": "With these endpoints you can manage your Products.\nBy gathering the right `productId`, you can also manage [Environments](#tag/Environments), [Configs](#tag/Configs), [Tags](#tag/Tags), [Webhooks](#tag/Webhooks), and [Permission Groups](#tag/Permission-Groups) through the API.\n\n<a href=\"https://configcat.com/docs/main-concepts/#product\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the concept of Products."
    },
    {
      "name": "Webhooks",
      "description": "With these endpoints you can manage Webhooks.\n\n<a href=\"https://configcat.com/docs/advanced/notifications-webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the concept of Webhooks."
    },
    {
      "name": "Configs",
      "description": "With these endpoints you can manage your Configs.\nThis also can be used to manage [Feature Flags and Settings](#tag/Feature-Flags-and-Settings) and their \n[served values](#tag/Feature-Flag-and-Setting-values) through this API.\n\n<a href=\"https://configcat.com/docs/main-concepts/#config\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the concept of Configs."
    },
    {
      "name": "Environments",
      "description": "With these endpoints you can update existing Environments or add new ones into your selected [Product](#tag/Products). \n\n<a href=\"https://configcat.com/docs/main-concepts/#environment\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the concept of Environments."
    },
    {
      "name": "Segments",
      "description": "With these endpoints you can manage your Segments.\nSegments allow you to group your users based on any of their properties. Define user segments and add them to multiple feature flags."
    },
    {
      "name": "SDK Keys",
      "description": "With these endpoints you can manage your SDK Keys."
    },
    {
      "name": "Tags",
      "description": "With these endpoints you can manage Tags. Tags are stored under a Product. You can  and add a Tag to a Feature Flag or Setting using the [Update Flag](#operation/update-setting) endpoint."
    },
    {
      "name": "Integrations",
      "description": "With these endpoints you can manage your Integrations.\n\n- <a href=\"https://configcat.com/docs/integrations/datadog/\" target=\"_blank\" rel=\"noopener noreferrer\">Datadog</a>\n- <a href=\"https://configcat.com/docs/integrations/slack/\" target=\"_blank\" rel=\"noopener noreferrer\">Slack</a>\n- <a href=\"https://configcat.com/docs/integrations/amplitude/\" target=\"_blank\" rel=\"noopener noreferrer\">Amplitude</a>\n- <a href=\"https://configcat.com/docs/integrations/mixpanel/\" target=\"_blank\" rel=\"noopener noreferrer\">MixPanel</a>\n- <a href=\"https://configcat.com/docs/integrations/segment/\" target=\"_blank\" rel=\"noopener noreferrer\">Segment</a>\n- PubNub (work in progress)"
    },
    {
      "name": "Integration links",
      "description": "With these endpoints you can manage your integration links."
    },
    {
      "name": "Audit logs",
      "description": "Access audit log entries."
    },
    {
      "name": "Zombie (stale) flags",
      "description": "List Zombie (stale) flags"
    },
    {
      "name": "Me",
      "description": "Information about the current user."
    },
    {
      "name": "Code References",
      "description": "With this endpoint you can upload Feature Flag and Setting usage references that will be shown on the ConfigCat Dashboard.\n\n<a href=\"https://configcat.com/docs/advanced/code-references/overview/\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about the concept of Code References."
    },
    {
      "name": "Proxy Profiles",
      "description": "With these endpoints you can manage your Organization's Proxy Profiles.\n\n<a href=\"https://configcat.com/docs/advanced/proxy/proxy-overview/#1-automatic-configuration-with-proxy-profiles\" target=\"_blank\" rel=\"noopener noreferrer\">Here</a> you can read more about Proxy Profiles."
    }
  ],
  "x-tagGroups": [
    {
      "name": "Feature Flag values V2",
      "tags": [
        "Feature Flag & Setting values using SDK Key V2",
        "Feature Flag & Setting values V2"
      ]
    },
    {
      "name": "Feature Flag values (legacy)",
      "tags": [
        "Feature Flag & Setting values using SDK Key",
        "Feature Flag & Setting values"
      ]
    },
    {
      "name": "Feature Flag metadata",
      "tags": [
        "Feature Flags & Settings",
        "Tags"
      ]
    },
    {
      "name": "General",
      "tags": [
        "Products",
        "Configs",
        "Environments",
        "Segments",
        "SDK Keys",
        "Webhooks",
        "Integrations",
        "Code References",
        "Proxy Profiles"
      ]
    },
    {
      "name": "Membership",
      "tags": [
        "Organizations",
        "Members",
        "Permission Groups"
      ]
    },
    {
      "name": "Diagnostics",
      "tags": [
        "Audit logs",
        "Zombie (stale) flags",
        "Me"
      ]
    }
  ]
}