{
  "topic": "errors.DUPLICATE_GROUP_BY",
  "path": [
    "errors",
    "DUPLICATE_GROUP_BY"
  ],
  "title": "DUPLICATE_GROUP_BY — the same groupBy dimension was listed twice",
  "synopsis": "Raised by `POST /api/entity/stats/{entityName}/{modelVersion}/query`. The reserved token `state` appearing twice, or the same JSONPath appearing twice, is rejected rather than deduplicated: a repeated dimension adds a second copy of the same value to every bucket's `groupKey` and changes nothing about the grouping, so it is more likely a mistake in the request than an intent.",
  "body": "# errors.DUPLICATE_GROUP_BY\n\n## NAME\n\nDUPLICATE_GROUP_BY — two `groupBy` entries name the same dimension.\n\n## SYNOPSIS\n\nHTTP: `400` `Bad Request`. Retryable: `no`.\n\n## DESCRIPTION\n\nRaised by `POST /api/entity/stats/{entityName}/{modelVersion}/query`. The reserved token `state` appearing twice, or the same JSONPath appearing twice, is rejected rather than deduplicated: a repeated dimension adds a second copy of the same value to every bucket's `groupKey` and changes nothing about the grouping, so it is more likely a mistake in the request than an intent.\n\nThe message names the offending entry. Remove the repeat. Two different paths that happen to resolve to the same value at runtime are not duplicates and are accepted — the comparison is on the request entries, which are validated but never rewritten.\n\n## SEE ALSO\n\n- errors\n- crud\n- errors.MISSING_GROUP_BY\n- errors.INVALID_GROUP_BY_PATH\n",
  "sections": [
    {
      "name": "NAME",
      "body": "DUPLICATE_GROUP_BY — two `groupBy` entries name the same dimension."
    },
    {
      "name": "SYNOPSIS",
      "body": "HTTP: `400` `Bad Request`. Retryable: `no`."
    },
    {
      "name": "DESCRIPTION",
      "body": "Raised by `POST /api/entity/stats/{entityName}/{modelVersion}/query`. The reserved token `state` appearing twice, or the same JSONPath appearing twice, is rejected rather than deduplicated: a repeated dimension adds a second copy of the same value to every bucket's `groupKey` and changes nothing about the grouping, so it is more likely a mistake in the request than an intent.\n\nThe message names the offending entry. Remove the repeat. Two different paths that happen to resolve to the same value at runtime are not duplicates and are accepted — the comparison is on the request entries, which are validated but never rewritten."
    },
    {
      "name": "SEE ALSO",
      "body": "- errors\n- crud\n- errors.MISSING_GROUP_BY\n- errors.INVALID_GROUP_BY_PATH"
    }
  ],
  "see_also": [
    "errors",
    "crud",
    "errors.MISSING_GROUP_BY",
    "errors.INVALID_GROUP_BY_PATH"
  ],
  "stability": "stable",
  "actions": []
}
