---
title: "Create/update a report's steps + entries (legacy PUT /reports/steps)"
method: PUT
path: "/reports/steps"
tags: ["Reports"]
---

# Create/update a report's steps + entries (legacy PUT /reports/steps)

`PUT /reports/steps`

**Requires permission:** *ReportAdmins*

Upserts each step and its mark-grade fields/options, and (when CreateEntries=true) expands every step's entry groups (sets/houses/tutor-groups/individual) to per-pupil entries with seeded mark grades via the canonical enrolment bridge. Port of the legacy v2 PutCreateReportSteps endpoint.

## Query parameters

- `createEntries` boolean, required

## Request body

- CreateReportStepsBody
  - `steps` ReportStepRequest[]
    - `id` integer
    - `reportId` integer
    - `number` integer
    - `overwriteName` string, nullable
    - `openDate` string, date-time, nullable
    - `closeDate` string, date-time, nullable
    - `hidden` boolean
    - `musicReports` boolean
    - `enableAiChecker` boolean
    - `reportOrder` integer, nullable
    - `stepType` 0 | 1 | 2 | 3
    - `sets` SetEntryGroup[]
      - `id` integer
      - `code` string, nullable
      - `setCode` string, nullable
      - `subject` string, nullable
      - `tutor1SchoolReports` boolean
      - `tutor2SchoolReports` boolean
      - `tutor3SchoolReports` boolean
      - `tutor1Staff` ReportReallocationTeacher
        - `staffId` integer
        - `nameId` integer
        - `email` string, nullable
      - `tutor2Staff` ReportReallocationTeacher
        - `staffId` integer
        - `nameId` integer
        - `email` string, nullable
      - `tutor3Staff` ReportReallocationTeacher
        - `staffId` integer
        - `nameId` integer
        - `email` string, nullable
    - `houses` HouseEntryGroup[]
      - `code` string, nullable
      - `housemasterStaff` ReportReallocationTeacher
        - `staffId` integer
        - `nameId` integer
        - `email` string, nullable
    - `tutorGroups` TutorGroupEntryGroup[]
      - `code` string, nullable
      - `tutorStaffId` integer
      - `tutorStaff` ReportReallocationTeacher
        - `staffId` integer
        - `nameId` integer
        - `email` string, nullable
    - `staffMembers` StaffEntryGroup[]
      - `staffId` integer
      - `nameId` integer
      - `staffUpi` string, guid, nullable
    - `markGradeForms` MarkGradeForm[]
      - `name` string, nullable
      - `assessment` boolean
      - `hidden` boolean
      - `fieldId` integer
      - `type` integer
      - `options` MarkGradeFormOption[]
        - `displayName` string, nullable
        - `value` string, nullable
        - `allowText` boolean

## Response `204`

Success - Created

## Other responses

- `400` — An Error Occurred - Could not create steps
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/tonbridge/apis/tonbridge-app-api.md) · [All operations](https://skmtc.net/tonbridge/apis/tonbridge-app-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tonbridge/tonbridge-app-api/versions/28344aa564b4/schema)
