For the complete documentation index, see llms.txt. This page is also available as Markdown.

Group

Gets a paginated list of standard groups for the calling organisation(s), sorted by id. Archived groups are added to the result set when includeArchived is true.

get
/api/v1/Groups/Group
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Query parameters
IncludeArchivedbooleanOptional
PageNumberinteger · int32 · min: 1 · max: 2147483647Optional
PageSizeinteger · int32 · min: 1 · max: 2000Optional
OrganisationIdsinteger · int32[]Optional
Responses
200

OK

application/json
isSuccessbooleanOptional
errorsstring[] · nullableOptional
messageTranslationParametersany · nullableOptional
pageNumberinteger · int32Optional
pageSizeinteger · int32Optional
firstPagestring · uri · nullableOptional
lastPagestring · uri · nullableOptional
totalPagesinteger · int32Optional
totalRecordsinteger · int32Optional
nextPagestring · uri · nullableOptional
previousPagestring · uri · nullableOptional
baseUristring · uri · nullableOptional
get/api/v1/Groups/Group
GET /api/v1/Groups/Group 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",
      "description": "text",
      "activityId": 1,
      "leadStaffId": 1,
      "staffIds": [
        1
      ],
      "groupCode": "text",
      "billingCode": "text",
      "shortName": "text",
      "taxCode": "text",
      "showInSportsPortal": true,
      "genderAvailableTo": "Female",
      "locationId": 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 standard group. The group always starts unarchived.

post
/api/v1/Groups/Group
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Query parameters
organisationIdinteger · int32Optional

The organisation to create the group in — required when the client has access to multiple organisations

Body
namestring · min: 1 · max: 240Required
descriptionstring · min: 1Required
activityIdinteger · int32 · min: 1 · max: 2147483647Required
leadStaffIdinteger · int32 · min: 1 · max: 2147483647Required
groupCodestring · max: 50 · nullableOptional
billingCodestring · max: 50 · nullableOptional
shortNamestring · max: 30 · nullableOptional
taxCodestring · max: 10 · nullableOptional
showInSportsPortalboolean · nullableOptional
genderAvailableTostring · enumOptionalPossible values:
staffIdsinteger · int32[] · nullableOptional
locationIdinteger · int32 · max: 2147483647 · nullableOptional
Responses
201

Created

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
namestring · nullableOptional
descriptionstring · nullableOptional
activityIdinteger · int32Optional
leadStaffIdinteger · int32 · nullableOptional
staffIdsinteger · int32[] · nullableOptional
groupCodestring · nullableOptional
billingCodestring · nullableOptional
shortNamestring · nullableOptional
taxCodestring · nullableOptional
showInSportsPortalbooleanOptional
genderAvailableTostring · enumOptionalPossible values:
locationIdinteger · int32 · nullableOptional
isArchivedbooleanOptional
createdAtUtcstring · date-timeOptional
updatedAtUtcstring · date-timeOptional
thirdPartyIdstring · nullableOptional
isImportedbooleanOptional
post/api/v1/Groups/Group
POST /api/v1/Groups/Group HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 228

{
  "name": "text",
  "description": "text",
  "activityId": 1,
  "leadStaffId": 1,
  "groupCode": "text",
  "billingCode": "text",
  "shortName": "text",
  "taxCode": "text",
  "showInSportsPortal": true,
  "genderAvailableTo": "Female",
  "staffIds": [
    1
  ],
  "locationId": 1
}
{
  "id": 1,
  "organisationId": 1,
  "name": "text",
  "description": "text",
  "activityId": 1,
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "groupCode": "text",
  "billingCode": "text",
  "shortName": "text",
  "taxCode": "text",
  "showInSportsPortal": true,
  "genderAvailableTo": "Female",
  "locationId": 1,
  "isArchived": true,
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z",
  "thirdPartyId": "text",
  "isImported": true
}

Gets a single standard group by id.

get
/api/v1/Groups/Group/{id}
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Path parameters
idinteger · int32Required

The group id

Query parameters
organisationIdinteger · int32Optional

The organisation to look the group up in — required when the client has access to multiple organisations

Responses
200

OK

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
namestring · nullableOptional
descriptionstring · nullableOptional
activityIdinteger · int32Optional
leadStaffIdinteger · int32 · nullableOptional
staffIdsinteger · int32[] · nullableOptional
groupCodestring · nullableOptional
billingCodestring · nullableOptional
shortNamestring · nullableOptional
taxCodestring · nullableOptional
showInSportsPortalbooleanOptional
genderAvailableTostring · enumOptionalPossible values:
locationIdinteger · int32 · nullableOptional
isArchivedbooleanOptional
createdAtUtcstring · date-timeOptional
updatedAtUtcstring · date-timeOptional
thirdPartyIdstring · nullableOptional
isImportedbooleanOptional
get/api/v1/Groups/Group/{id}
GET /api/v1/Groups/Group/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
  "id": 1,
  "organisationId": 1,
  "name": "text",
  "description": "text",
  "activityId": 1,
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "groupCode": "text",
  "billingCode": "text",
  "shortName": "text",
  "taxCode": "text",
  "showInSportsPortal": true,
  "genderAvailableTo": "Female",
  "locationId": 1,
  "isArchived": true,
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z",
  "thirdPartyId": "text",
  "isImported": true
}

Partially updates a standard group — omitted fields preserve their existing values. The URL {id} is the canonical identifier; the body carries no id. Sending isArchived = false unarchives an archived group (EC-1 as amended 2026-07-31); any other write against an archived group returns 409 RESOURCE_ARCHIVED.

put
/api/v1/Groups/Group/{id}
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Path parameters
idinteger · int32Required

The group id

Query parameters
organisationIdinteger · int32Optional

The organisation the group belongs to — required when the client has access to multiple organisations

Body
namestring · max: 240 · nullableOptional
descriptionstring · nullableOptional
activityIdinteger · int32 · nullableOptional
leadStaffIdinteger · int32 · nullableOptional
groupCodestring · max: 50 · nullableOptional
billingCodestring · max: 50 · nullableOptional
shortNamestring · max: 30 · nullableOptional
taxCodestring · max: 10 · nullableOptional
showInSportsPortalboolean · nullableOptional
genderAvailableTostring · enumOptionalPossible values:
staffIdsinteger · int32[] · nullableOptional
locationIdinteger · int32 · max: 2147483647 · nullableOptional
isArchivedboolean · nullableOptional
Responses
200

OK

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
namestring · nullableOptional
descriptionstring · nullableOptional
activityIdinteger · int32Optional
leadStaffIdinteger · int32 · nullableOptional
staffIdsinteger · int32[] · nullableOptional
groupCodestring · nullableOptional
billingCodestring · nullableOptional
shortNamestring · nullableOptional
taxCodestring · nullableOptional
showInSportsPortalbooleanOptional
genderAvailableTostring · enumOptionalPossible values:
locationIdinteger · int32 · nullableOptional
isArchivedbooleanOptional
createdAtUtcstring · date-timeOptional
updatedAtUtcstring · date-timeOptional
thirdPartyIdstring · nullableOptional
isImportedbooleanOptional
put/api/v1/Groups/Group/{id}
PUT /api/v1/Groups/Group/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 246

{
  "name": "text",
  "description": "text",
  "activityId": 1,
  "leadStaffId": 1,
  "groupCode": "text",
  "billingCode": "text",
  "shortName": "text",
  "taxCode": "text",
  "showInSportsPortal": true,
  "genderAvailableTo": "Female",
  "staffIds": [
    1
  ],
  "locationId": 1,
  "isArchived": true
}
{
  "id": 1,
  "organisationId": 1,
  "name": "text",
  "description": "text",
  "activityId": 1,
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "groupCode": "text",
  "billingCode": "text",
  "shortName": "text",
  "taxCode": "text",
  "showInSportsPortal": true,
  "genderAvailableTo": "Female",
  "locationId": 1,
  "isArchived": true,
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z",
  "thirdPartyId": "text",
  "isImported": true
}

Creates standard groups in bulk. Items are processed independently — per-item failures are reported in failedItems[] and do not roll back the other items.

post
/api/v1/Groups/Group/BulkCreate
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Body

Request body for POST /api/v1/Groups/Group/BulkCreate (SB-15446). The envelope-level organisationId scopes every item in the batch (cross-cutting §3.8.1) — items are not individually org-addressable.

organisationIdinteger · int32 · nullableOptional

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.

Responses
200

OK

application/json

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.

successfulIdsinteger · int32[] · nullableOptional

Gets or sets the ids of the items that were processed successfully. On BulkCreate these are the newly-created ids.

totalRequestedinteger · int32Optional

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).

totalSuccessfulinteger · int32Read-onlyOptional

Gets the number of items processed successfully (computed).

totalFailedinteger · int32Read-onlyOptional

Gets the number of items that failed (computed).

post/api/v1/Groups/Group/BulkCreate
POST /api/v1/Groups/Group/BulkCreate HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 286

{
  "organisationId": 1,
  "items": [
    {
      "name": "text",
      "description": "text",
      "activityId": 1,
      "leadStaffId": 1,
      "groupCode": "text",
      "billingCode": "text",
      "shortName": "text",
      "taxCode": "text",
      "showInSportsPortal": true,
      "genderAvailableTo": "Female",
      "staffIds": [
        1
      ],
      "locationId": 1,
      "clientReferenceId": "text"
    }
  ]
}
{
  "successfulIds": [
    1
  ],
  "failedItems": [
    {
      "index": 1,
      "clientReferenceId": "text",
      "name": "text",
      "code": "text",
      "error": "text"
    }
  ],
  "totalRequested": 1,
  "totalSuccessful": 1,
  "totalFailed": 1
}

Partially updates standard groups in bulk. Each item carries the target id; items are processed independently. An item carrying isArchived = false unarchives an archived group (EC-1 as amended 2026-07-31).

put
/api/v1/Groups/Group/BulkUpdate
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Body

Request body for PUT /api/v1/Groups/Group/BulkUpdate (SB-15446). The envelope-level organisationId scopes every item in the batch (cross-cutting §3.8.1).

organisationIdinteger · int32 · nullableOptional

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.

Responses
200

OK

application/json

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.

successfulIdsinteger · int32[] · nullableOptional

Gets or sets the ids of the items that were processed successfully. On BulkCreate these are the newly-created ids.

totalRequestedinteger · int32Optional

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).

totalSuccessfulinteger · int32Read-onlyOptional

Gets the number of items processed successfully (computed).

totalFailedinteger · int32Read-onlyOptional

Gets the number of items that failed (computed).

put/api/v1/Groups/Group/BulkUpdate
PUT /api/v1/Groups/Group/BulkUpdate HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 311

{
  "organisationId": 1,
  "items": [
    {
      "name": "text",
      "description": "text",
      "activityId": 1,
      "leadStaffId": 1,
      "groupCode": "text",
      "billingCode": "text",
      "shortName": "text",
      "taxCode": "text",
      "showInSportsPortal": true,
      "genderAvailableTo": "Female",
      "staffIds": [
        1
      ],
      "locationId": 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 standard groups in bulk (toggleable via the isArchived body flag). Alongside PUT / BulkUpdate items carrying isArchived = false, the write verbs allowed against already-archived groups (EC-1 as amended 2026-07-31).

post
/api/v1/Groups/Group/BulkArchive
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Body

Request body for POST /api/v1/Groups/Group/BulkArchive (SB-15446). 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).

organisationIdinteger · int32 · nullableOptional

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.

idsinteger · int32[] · min: 1Required

Gets or sets the ids of the groups to transition. Id validity is checked per item (EC-7) — 0 / negative ids fail that item only.

isArchivedbooleanOptional

Gets or sets a value indicating whether the groups are archived (true, default) or unarchived (false).

Responses
200

OK

application/json

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.

successfulIdsinteger · int32[] · nullableOptional

Gets or sets the ids of the items that were processed successfully. On BulkCreate these are the newly-created ids.

totalRequestedinteger · int32Optional

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).

totalSuccessfulinteger · int32Read-onlyOptional

Gets the number of items processed successfully (computed).

totalFailedinteger · int32Read-onlyOptional

Gets the number of items that failed (computed).

post/api/v1/Groups/Group/BulkArchive
POST /api/v1/Groups/Group/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 standard group. Already-assigned students are skipped.

post
/api/v1/Groups/Group/{id}/AddStudents
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Path parameters
idinteger · int32Required

The group id

Query parameters
organisationIdinteger · int32Optional

The organisation the group belongs to — required when the client has access to multiple organisations

Body
studentIdsinteger · int32[] · min: 1Required
Responses
200

OK

application/json
studentsProcessedinteger · int32Optional
totalRequestedinteger · int32Optional
post/api/v1/Groups/Group/{id}/AddStudents
POST /api/v1/Groups/Group/{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 standard group. Students not assigned to the group are skipped.

post
/api/v1/Groups/Group/{id}/RemoveStudents
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Path parameters
idinteger · int32Required

The group id

Query parameters
organisationIdinteger · int32Optional

The organisation the group belongs to — required when the client has access to multiple organisations

Body
studentIdsinteger · int32[] · min: 1Required
Responses
200

OK

application/json
studentsProcessedinteger · int32Optional
totalRequestedinteger · int32Optional
post/api/v1/Groups/Group/{id}/RemoveStudents
POST /api/v1/Groups/Group/{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 standard group. Parent-bounded — not paged (BP8 sub-resource exemption).

get
/api/v1/Groups/Group/{id}/Students
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Path parameters
idinteger · int32Required

The group id

Query parameters
organisationIdinteger · int32Optional

The organisation the group belongs to — required when the client has access to multiple organisations

Responses
200

OK

application/json
integer · int32[]Optional
get/api/v1/Groups/Group/{id}/Students
GET /api/v1/Groups/Group/{id}/Students HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
[
  1
]

Gets the events linked to a standard group. Parent-bounded — not paged (BP8 sub-resource exemption).

get
/api/v1/Groups/Group/{id}/Events
Authorizations
AuthorizationstringRequired

Type "Bearer" followed by a space and a token.

Path parameters
idinteger · int32Required

The group id

Query parameters
organisationIdinteger · int32Optional

The organisation the group belongs to — required when the client has access to multiple organisations

includeCancelledbooleanOptional

Whether cancelled events are included

Default: false
includeDeletedbooleanOptional

Whether deleted events are included

Default: false
Responses
200

OK

application/json
eventIdinteger · int32Optional
eventNamestring · nullableOptional
eventStartTimestring · date-timeOptional
eventEndTimestring · date-timeOptional
leadStaffIdinteger · int32 · nullableOptional
locationIdinteger · int32 · nullableOptional
numberOfPlacesinteger · int32 · nullableOptional
eventTypeIdinteger · int32 · nullableOptional
eventTypestring · nullableOptional
isCancelledbooleanOptional
isDeletedbooleanOptional
updatedAtstring · date-time · nullableOptional
timeZonestring · nullableOptional
get/api/v1/Groups/Group/{id}/Events
GET /api/v1/Groups/Group/{id}/Events HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
[
  {
    "eventId": 1,
    "eventName": "text",
    "eventStartTime": "2026-01-01T00:00:00.000Z",
    "eventEndTime": "2026-01-01T00:00:00.000Z",
    "leadStaffId": 1,
    "locationId": 1,
    "numberOfPlaces": 1,
    "eventTypeId": 1,
    "eventType": "text",
    "isCancelled": true,
    "isDeleted": true,
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "timeZone": "text"
  }
]

Last updated