---
title: "PATCH /admin/practice-catalog/practices/{slug}/group"
method: PATCH
path: "/admin/practice-catalog/practices/{slug}/group"
tags: ["catalog-admin"]
---

# PATCH /admin/practice-catalog/practices/{slug}/group

`PATCH /admin/practice-catalog/practices/{slug}/group`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/admin/practice-catalog/practices/{slug}/group`
- Auth: HTTP bearer

## Path parameters

- `slug` string, required

## Headers

- `If-Match` string

## Request body

- MovePracticeRequest
  - `groupSlug` string, nullable, required
  - `position` integer, required

## Response `200`

OK

- Catalog
  - `groups` CatalogGroup[], required
    - `changeKind` 'NONE' | 'WORDING' | 'PRESENTATION' | 'REVIEW', required
    - `color` string, nullable, required
    - `description` string, nullable, required
    - `etag` string, required
    - `excluded` boolean, required
    - `icon` string, nullable, required
    - `name` string, required
    - `offered` boolean, required
    - `position` integer, required
    - `shipped` GroupDefinition, required
      - `color` string, nullable, required
      - `description` string, nullable, required
      - `icon` string, nullable, required
      - `name` string, required
    - `slug` string, required
    - `state` 'FROM_HEPHAESTUS' | 'EDITED_HERE' | 'UPDATE_WAITING' | 'YOURS' | 'NO_LONGER_SHIPPED', required
  - `practices` CatalogPractice[], required
    - `changeKind` 'NONE' | 'WORDING' | 'PRESENTATION' | 'REVIEW', required
    - `definition` PracticeDefinition, required
      - `about` 'AUTHOR' | 'REVIEWER' | 'ASSIGNEE' | 'MERGER' | 'null', nullable, required
      - `appliesWhen` AppliesWhen, required
        - `anyOf` AppliesWhenClause[], required
          - `changedPath` string[]
          - `diffContains` string[]
          - `hasItems` string
        - `otherwise` string, required
      - `criteria` string, required
      - `guidance` PracticeGuidance, required
        - `goingWell` string, nullable, required
        - `guide` PracticeGuide, required: Developer guidance: the text of a practice's Guide tab and the SVG figures it shows. Never changes how the practice is reviewed
          - `figures` object, required: SVG markup of each figure the Markdown shows, by figure name
          - `markdown` string, required: Markdown. Shows a figure with ![description](figures/<name>.svg)
        - `visual` PracticeVisual, required: Developer guidance: one picture of the practice and what it shows. Never changes how the practice is reviewed
          - `alt` string, required: What the picture shows, for people who cannot see it
          - `svg` string, required: SVG markup. Shapes and text only; colors come from the pv-* theme classes
        - `whatGoodLooksLike` string, nullable, required
        - `whyItMatters` string, nullable, required
      - `lineNotes` boolean, required
      - `name` string, required
      - `reads` PracticeReads, required
        - `contract` string, required
        - `sources` PracticeReadSource[], required
          - `need` 'REQUIRED' | 'COMPLETE' | 'OPTIONAL', required
          - `source` string, required
      - `reviewOn` ReviewOn, required
        - `events` string[], required
        - `state` object, required
      - `reviewedBy` ReviewedBy, required
        - `by` 'HEPHAESTUS' | 'PEOPLE' | 'NOBODY', required
        - `humanReason` ReviewLimit, required
          - `code` string, required
          - `description` string, required
        - `limits` ReviewLimit[], required
          - `code` string, required
          - `description` string, required
      - `scan` ScanDefinition, required
        - `context` string[], required
        - `exclude` string[], required
        - `include` string[], required
        - `itemKind` string, required
        - `reads` PracticeReads, required
          - `contract` string, required
          - `sources` PracticeReadSource[], required
            - `need` 'REQUIRED' | 'COMPLETE' | 'OPTIONAL', required
            - `source` string, required
      - `script` string, nullable, required
    - `etag` string, required
    - `excluded` boolean, required
    - `groupSlug` string, nullable, required
    - `kind` string, required
    - `offered` boolean, required
    - `position` integer, required
    - `shipped` PracticeDefinition, required
      - `about` 'AUTHOR' | 'REVIEWER' | 'ASSIGNEE' | 'MERGER' | 'null', nullable, required
      - `appliesWhen` AppliesWhen, required
        - `anyOf` AppliesWhenClause[], required
          - `changedPath` string[]
          - `diffContains` string[]
          - `hasItems` string
        - `otherwise` string, required
      - `criteria` string, required
      - `guidance` PracticeGuidance, required
        - `goingWell` string, nullable, required
        - `guide` PracticeGuide, required: Developer guidance: the text of a practice's Guide tab and the SVG figures it shows. Never changes how the practice is reviewed
          - `figures` object, required: SVG markup of each figure the Markdown shows, by figure name
          - `markdown` string, required: Markdown. Shows a figure with ![description](figures/<name>.svg)
        - `visual` PracticeVisual, required: Developer guidance: one picture of the practice and what it shows. Never changes how the practice is reviewed
          - `alt` string, required: What the picture shows, for people who cannot see it
          - `svg` string, required: SVG markup. Shapes and text only; colors come from the pv-* theme classes
        - `whatGoodLooksLike` string, nullable, required
        - `whyItMatters` string, nullable, required
      - `lineNotes` boolean, required
      - `name` string, required
      - `reads` PracticeReads, required
        - `contract` string, required
        - `sources` PracticeReadSource[], required
          - `need` 'REQUIRED' | 'COMPLETE' | 'OPTIONAL', required
          - `source` string, required
      - `reviewOn` ReviewOn, required
        - `events` string[], required
        - `state` object, required
      - `reviewedBy` ReviewedBy, required
        - `by` 'HEPHAESTUS' | 'PEOPLE' | 'NOBODY', required
        - `humanReason` ReviewLimit, required
          - `code` string, required
          - `description` string, required
        - `limits` ReviewLimit[], required
          - `code` string, required
          - `description` string, required
      - `scan` ScanDefinition, required
        - `context` string[], required
        - `exclude` string[], required
        - `include` string[], required
        - `itemKind` string, required
        - `reads` PracticeReads, required
          - `contract` string, required
          - `sources` PracticeReadSource[], required
            - `need` 'REQUIRED' | 'COMPLETE' | 'OPTIONAL', required
            - `source` string, required
      - `script` string, nullable, required
    - `slug` string, required
    - `state` 'FROM_HEPHAESTUS' | 'EDITED_HERE' | 'UPDATE_WAITING' | 'YOURS' | 'NO_LONGER_SHIPPED', required

## Changes

- **2026-10-17** `4b8a89bf492c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hephaestus-build/apis/hephaestus-api/changes/admin/practice-catalog/practices/:slug/group/patch.md)

---

[API](https://skmtc.dev/hephaestus-build/apis/hephaestus-api.md) · [All operations](https://skmtc.dev/hephaestus-build/apis/hephaestus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hephaestus-build/apis/hephaestus-api/revisions/3592ab716973?raw)
