House
Gets a paginated list of houses for the calling organisation(s), sorted by id. Archived houses are added to the result set when includeArchived is true.
Type "Bearer" followed by a space and a token.
OK
Bad Request
Not Found
Internal Server Error
GET /api/v1/Groups/House HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
"isSuccess": true,
"errors": [
"text"
],
"messageTranslationParameters": null,
"data": [
{
"id": 1,
"organisationId": 1,
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"isArchived": true,
"createdAtUtc": "2026-01-01T00:00:00.000Z",
"updatedAtUtc": "2026-01-01T00:00:00.000Z",
"thirdPartyId": "text",
"isImported": true
}
],
"pageNumber": 1,
"pageSize": 1,
"firstPage": "https://example.com",
"lastPage": "https://example.com",
"totalPages": 1,
"totalRecords": 1,
"nextPage": "https://example.com",
"previousPage": "https://example.com",
"baseUri": "https://example.com",
"searchParameters": [
{
"key": "text",
"value": "text"
}
]
}Creates a house. The house always starts unarchived; the Team and SchoolHouse pair is created atomically.
Type "Bearer" followed by a space and a token.
The organisation to create the house in — required when the client has access to multiple organisations
Created
Bad Request
Not Found
Internal Server Error
POST /api/v1/Groups/House HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 46
{
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
]
}{
"id": 1,
"organisationId": 1,
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"isArchived": true,
"createdAtUtc": "2026-01-01T00:00:00.000Z",
"updatedAtUtc": "2026-01-01T00:00:00.000Z",
"thirdPartyId": "text",
"isImported": true
}Type "Bearer" followed by a space and a token.
The house id
The organisation to look the house up in — required when the client has access to multiple organisations
OK
Bad Request
Not Found
Internal Server Error
GET /api/v1/Groups/House/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
"id": 1,
"organisationId": 1,
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"isArchived": true,
"createdAtUtc": "2026-01-01T00:00:00.000Z",
"updatedAtUtc": "2026-01-01T00:00:00.000Z",
"thirdPartyId": "text",
"isImported": true
}Partially updates a house — omitted fields preserve their existing values; renames propagate to both halves of the Team + SchoolHouse pair. The URL {id} is the canonical identifier; the body carries no id. Sending isArchived = false unarchives an archived house (EC-1 as amended 2026-07-31); any other write against an archived house returns 409 RESOURCE_ARCHIVED.
Type "Bearer" followed by a space and a token.
The house id
The organisation the house belongs to — required when the client has access to multiple organisations
OK
Bad Request
Not Found
Internal Server Error
PUT /api/v1/Groups/House/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 64
{
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"isArchived": true
}{
"id": 1,
"organisationId": 1,
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"isArchived": true,
"createdAtUtc": "2026-01-01T00:00:00.000Z",
"updatedAtUtc": "2026-01-01T00:00:00.000Z",
"thirdPartyId": "text",
"isImported": true
}Creates houses in bulk. Items are processed independently — per-item failures are reported in failedItems[] and do not roll back the other items.
Type "Bearer" followed by a space and a token.
Request body for POST /api/v1/Groups/House/BulkCreate (SB-15448). The envelope-level organisationId scopes every item in the batch (cross-cutting §3.8.1) — items are not individually org-addressable.
Gets or sets the organisation the batch operates on. Optional when the calling client has access to a single organisation; required for multi-org clients.
OK
Standard envelope returned by every Public API bulk endpoint (BulkCreate / BulkUpdate / BulkArchive). Each item in the request is processed independently — one item failing does not roll back the others — and the envelope reports per-item outcome. See cross-cutting-design.md §4.
Gets or sets the ids of the items that were processed successfully. On BulkCreate these are the newly-created ids.
Gets or sets the total number of items in the request. Set by the caller (it is not derivable from the success/failure lists alone — items rejected before per-item processing may appear in neither).
Gets the number of items processed successfully (computed).
Gets the number of items that failed (computed).
Bad Request
Not Found
Internal Server Error
POST /api/v1/Groups/House/BulkCreate HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 104
{
"organisationId": 1,
"items": [
{
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"clientReferenceId": "text"
}
]
}{
"successfulIds": [
1
],
"failedItems": [
{
"index": 1,
"clientReferenceId": "text",
"name": "text",
"code": "text",
"error": "text"
}
],
"totalRequested": 1,
"totalSuccessful": 1,
"totalFailed": 1
}Partially updates houses in bulk. Each item carries the target id; items are processed independently. An item carrying isArchived = false unarchives an archived house (EC-1 as amended 2026-07-31).
Type "Bearer" followed by a space and a token.
Request body for PUT /api/v1/Groups/House/BulkUpdate (SB-15448). The envelope-level organisationId scopes every item in the batch (cross-cutting §3.8.1).
Gets or sets the organisation the batch operates on. Optional when the calling client has access to a single organisation; required for multi-org clients.
OK
Standard envelope returned by every Public API bulk endpoint (BulkCreate / BulkUpdate / BulkArchive). Each item in the request is processed independently — one item failing does not roll back the others — and the envelope reports per-item outcome. See cross-cutting-design.md §4.
Gets or sets the ids of the items that were processed successfully. On BulkCreate these are the newly-created ids.
Gets or sets the total number of items in the request. Set by the caller (it is not derivable from the success/failure lists alone — items rejected before per-item processing may appear in neither).
Gets the number of items processed successfully (computed).
Gets the number of items that failed (computed).
Bad Request
Not Found
Internal Server Error
PUT /api/v1/Groups/House/BulkUpdate HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 129
{
"organisationId": 1,
"items": [
{
"name": "text",
"leadStaffId": 1,
"staffIds": [
1
],
"isArchived": true,
"id": 1,
"clientReferenceId": "text"
}
]
}{
"successfulIds": [
1
],
"failedItems": [
{
"index": 1,
"clientReferenceId": "text",
"name": "text",
"code": "text",
"error": "text"
}
],
"totalRequested": 1,
"totalSuccessful": 1,
"totalFailed": 1
}Archives or unarchives houses in bulk (toggleable via the isArchived body flag) — both halves of the Team + SchoolHouse pair transition in lockstep. Alongside PUT / BulkUpdate items carrying isArchived = false, the write verbs allowed against already-archived houses (EC-1 as amended 2026-07-31).
Type "Bearer" followed by a space and a token.
Request body for POST /api/v1/Groups/House/BulkArchive (SB-15448). Toggleable: isArchived true archives, false unarchives (BulkArchive and a PUT / BulkUpdate item carrying isArchived: false are the verbs allowed to operate on already-archived rows — EC-1 as amended 2026-07-31). Both halves of the Team + SchoolHouse pair transition in lockstep.
Gets or sets the organisation the batch operates on. Optional when the calling client has access to a single organisation; required for multi-org clients.
Gets or sets the ids of the houses to transition. Id validity is checked per item (EC-7) — 0 / negative ids fail that item only.
Gets or sets a value indicating whether the houses are archived (true, default) or unarchived (false).
OK
Standard envelope returned by every Public API bulk endpoint (BulkCreate / BulkUpdate / BulkArchive). Each item in the request is processed independently — one item failing does not roll back the others — and the envelope reports per-item outcome. See cross-cutting-design.md §4.
Gets or sets the ids of the items that were processed successfully. On BulkCreate these are the newly-created ids.
Gets or sets the total number of items in the request. Set by the caller (it is not derivable from the success/failure lists alone — items rejected before per-item processing may appear in neither).
Gets the number of items processed successfully (computed).
Gets the number of items that failed (computed).
Bad Request
Not Found
Internal Server Error
POST /api/v1/Groups/House/BulkArchive HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 48
{
"organisationId": 1,
"ids": [
1
],
"isArchived": true
}{
"successfulIds": [
1
],
"failedItems": [
{
"index": 1,
"clientReferenceId": "text",
"name": "text",
"code": "text",
"error": "text"
}
],
"totalRequested": 1,
"totalSuccessful": 1,
"totalFailed": 1
}Adds students to a house. Already-assigned students are skipped. Both membership stores are written: PersonTeamRole (the source of truth) and the single-assignment PupilInformation.SchoolHouseId.
Type "Bearer" followed by a space and a token.
The house id
The organisation the house belongs to — required when the client has access to multiple organisations
OK
Bad Request
Not Found
Internal Server Error
POST /api/v1/Groups/House/{id}/AddStudents HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 18
{
"studentIds": [
1
]
}{
"studentsProcessed": 1,
"totalRequested": 1
}Removes students from a house. Students not assigned to the house are skipped.
Type "Bearer" followed by a space and a token.
The house id
The organisation the house belongs to — required when the client has access to multiple organisations
OK
Bad Request
Not Found
Internal Server Error
POST /api/v1/Groups/House/{id}/RemoveStudents HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 18
{
"studentIds": [
1
]
}{
"studentsProcessed": 1,
"totalRequested": 1
}Gets the student person ids currently assigned to a house. Parent-bounded — not paged (BP8 sub-resource exemption).
Type "Bearer" followed by a space and a token.
The house id
The organisation the house belongs to — required when the client has access to multiple organisations
OK
Bad Request
Not Found
Internal Server Error
GET /api/v1/Groups/House/{id}/Students HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
[
1
]Last updated