---
title: List property groups
slug: cms-13/api/list-property-groups
docTags: 
createdAt: 2026-08-28T15:24:16.532Z
---

{
  "id": "N8T2coCek4l7GCUihA4WU",
  "type": "api-oas-v2",
  "data": {
    "method": "GET",
    "url": "/_cms/v1/propertygroups",
    "servers": [
      {
        "url": "/_cms/v1/propertygroups",
        "description": "Optimizely CMS API"
      }
    ],
    "name": "List property groups",
    "description": "List property groups using the provided options.",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        }
      ],
      "queryParameters": [
        {
          "kind": "optional",
          "name": "sources",
          "type": "array",
          "description": "Indicates which property groups sources should be listed. Use 'DEFAULT' to include groups without a specific source.",
          "schema": [],
          "itemType": "string",
          "customType": "string[]"
        }
      ],
      "bodyDataParameters": [],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "apiAuth",
          "name": "apiAuth",
          "kind": "optional",
          "type": "oauth2",
          "description": "Use this scheme to generate an access token that can be used to access the API.",
          "oauth2Flows": {
            "clientCredentials": {
              "tokenUrl": "/_cms/v1/oauth/token",
              "scopes": {
                "api:admin": "Grants full administrative access to the API"
              }
            }
          },
          "requiredScopes": [
            "api:admin"
          ]
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "OK",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "<p>Represents a single page of items in a paged collection, including paging metadata such as the current page index, page size, and an estimated total item count.</p>",
            "customType": "PropertyGroupPage",
            "schema": [
              {
                "name": "items",
                "kind": "optional",
                "type": "array",
                "readOnly": true,
                "description": "The items in this paged collection.",
                "modelRef": "#/components/schemas/PropertyGroup",
                "customType": "PropertyGroup[]",
                "schema": [
                  {
                    "name": "key",
                    "kind": "required",
                    "type": "string",
                    "description": "<p>The unique identifier (key) of the resource.</p>",
                    "minLength": 2,
                    "maxLength": 255,
                    "pattern": "^[A-Za-z][_0-9A-Za-z]+$"
                  },
                  {
                    "name": "displayName",
                    "kind": "required",
                    "type": "string",
                    "description": "The display name of this PropertyGroup.",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  {
                    "name": "source",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "A string that indicates the source of this property group. Can be used to distinguish property groups created by the system from types coming from model classes deployed to the CMS server."
                  },
                  {
                    "name": "sortOrder",
                    "kind": "optional",
                    "type": "integer<int32>",
                    "description": "A value that is used to when sorting PropertyGroup instances.",
                    "format": "int32"
                  },
                  {
                    "name": "created",
                    "kind": "optional",
                    "type": "string<date-time>",
                    "readOnly": true,
                    "description": "A timestamp indicating when this property group was first created.",
                    "format": "date-time"
                  },
                  {
                    "name": "createdBy",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "The username of the user that created this property group."
                  },
                  {
                    "name": "lastModified",
                    "kind": "optional",
                    "type": "string<date-time>",
                    "readOnly": true,
                    "description": "",
                    "format": "date-time"
                  },
                  {
                    "name": "lastModifiedBy",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "The username of the user that last modified this property group."
                  }
                ]
              },
              {
                "name": "pageIndex",
                "kind": "optional",
                "type": "integer<int32>",
                "readOnly": true,
                "description": "<p>The zero-based index of the current page.</p>",
                "format": "int32"
              },
              {
                "name": "pageSize",
                "kind": "optional",
                "type": "integer<int32>",
                "readOnly": true,
                "description": "The number of items in each page. Not necessarily the same as the number of items in this page.",
                "format": "int32"
              },
              {
                "name": "totalCount",
                "kind": "optional",
                "type": "integer<int32>",
                "readOnly": true,
                "nullable": true,
                "description": "The estimated total number of items in the collection. May be omitted if the total count is unknown.",
                "format": "int32"
              }
            ],
            "modelRef": "#/components/schemas/PropertyGroupPage",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "Unauthorized",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "403",
        "description": "Forbidden",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "500",
        "description": "Internal Server Error",
        "jsonExample": "",
        "isExpanded": true
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "YBdPax5SDJ5DROtRMNUco",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request GET \\\n     --url /_cms/v1/propertygroups \\\n     --header 'accept: application/json'"
        },
        {
          "id": "-HSP2c-aLeqGkaHOBheE4",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   redirect: 'follow'\n};\n\nfetch(\"/_cms/v1/propertygroups\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "_3cx7B7-TPNPfOtlpzBJG",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"/_cms/v1/propertygroups\")\n\nhttp = Net::HTTP.new(url.host, url.port);\nrequest = Net::HTTP::Get.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\n\nresponse = http.request(request)\nputs response.read_body\n"
        },
        {
          "id": "6bqXMGMAYZOcSlCP_h4s1",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"/_cms/v1/propertygroups\"\n\npayload = {}\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "YBdPax5SDJ5DROtRMNUco"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-200",
          "language": "200",
          "code": "// OK\n{\n  \"items\": [\n    {\n      \"key\": \"\",\n      \"displayName\": \"\",\n      \"source\": \"\",\n      \"sortOrder\": \"\",\n      \"created\": \"\",\n      \"createdBy\": \"\",\n      \"lastModified\": \"\",\n      \"lastModifiedBy\": \"\"\n    }\n  ],\n  \"pageIndex\": \"\",\n  \"pageSize\": \"\",\n  \"totalCount\": \"\"\n}"
        },
        {
          "id": "response-1-401",
          "language": "401",
          "code": "// Unauthorized\n"
        },
        {
          "id": "response-2-403",
          "language": "403",
          "code": "// Forbidden\n"
        },
        {
          "id": "response-3-500",
          "language": "500",
          "code": "// Internal Server Error\n"
        }
      ],
      "selectedLanguageId": "response-0-200"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}