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

Events

Get events with filters.

get
/api/v1/Events
Authorizations
AuthorizationstringRequired

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

Query parameters
StartDateTimestring · date-timeOptional
EndDateTimestring · date-timeOptional
SearchstringOptional
SCStudentIdinteger · int32Optional
StudentIdstringOptional
IncludeAttendeesbooleanOptional
EventTypestringOptional
IsCancelledbooleanOptional
IsArchivedbooleanOptional
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/Events
GET /api/v1/Events HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
  "isSuccess": true,
  "errors": [
    "text"
  ],
  "messageTranslationParameters": null,
  "data": [
    {
      "id": 1,
      "isSeries": true,
      "parentEventId": 1,
      "allowJoiningPartWayThrough": true,
      "eventName": "text",
      "opponent": "text",
      "description": "text",
      "vitalInformation": "text",
      "groupId": 1,
      "groupName": "text",
      "yearId": 1,
      "yearName": "text",
      "ccaSignUpId": 1,
      "eventTypeId": 1,
      "eventType": "text",
      "eventStartTime": "2026-01-01T00:00:00.000Z",
      "eventEndTime": "2026-01-01T00:00:00.000Z",
      "leadStaffMember": "text",
      "cost": 1,
      "percentageToPayDeposit": 1,
      "alwaysChargeFullPrice": true,
      "includesTax": true,
      "paymentDueDate": "2026-01-01",
      "location": "text",
      "meetingLocation": "text",
      "meetingTime": "2026-01-01T00:00:00.000Z",
      "pickupLocation": "text",
      "pickupTime": "2026-01-01T00:00:00.000Z",
      "numberOfPlaces": 1,
      "consentRequired": true,
      "consentDueDate": "2026-01-01T00:00:00.000Z",
      "consentMessage": "text",
      "termsAndConditions": "text",
      "orgId": 1,
      "isBlocked": true,
      "isCancelled": true,
      "isArchived": true,
      "updatedAt": "2026-01-01T00:00:00.000Z",
      "timeZone": "text",
      "attendees": [
        {
          "id": 1,
          "calendarEventId": 1,
          "registerStatus": "Unset",
          "firstName": "text",
          "lastName": "text",
          "registerUpdatedAt": "2026-01-01T00:00:00.000Z",
          "registerUpdatedBy": 1,
          "registerUpdatedByName": "text",
          "attendanceNote": "text"
        }
      ]
    }
  ],
  "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"
    }
  ]
}

Get event by Id.

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

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

Path parameters
idinteger · int32Required

Event Id

Query parameters
organisationIdinteger · int32Optional

Organisation Id (optional query parameter)

Responses
200

OK

application/json
idinteger · int32Optional
isSeriesbooleanOptional
parentEventIdinteger · int32 · nullableOptional
allowJoiningPartWayThroughbooleanOptional
eventNamestring · nullableOptional
opponentstring · nullableOptional
descriptionstring · nullableOptional
vitalInformationstring · nullableOptional
groupIdinteger · int32Optional
groupNamestring · nullableOptional
yearIdinteger · int32 · nullableOptional
yearNamestring · nullableOptional
ccaSignUpIdinteger · int32 · nullableOptional
eventTypeIdinteger · int32 · nullableOptional
eventTypestring · nullableOptional
eventStartTimestring · date-timeOptional
eventEndTimestring · date-timeOptional
leadStaffMemberstring · nullableOptional
costnumber · doubleOptional
percentageToPayDepositnumber · double · nullableOptional
alwaysChargeFullPricebooleanOptional
includesTaxbooleanOptional
paymentDueDatestring · date · nullableOptional
locationstring · nullableOptional
meetingLocationstring · nullableOptional
meetingTimestring · date-time · nullableOptional
pickupLocationstring · nullableOptional
pickupTimestring · date-time · nullableOptional
numberOfPlacesinteger · int32 · nullableOptional
consentRequiredbooleanOptional
consentDueDatestring · date-time · nullableOptional
consentMessagestring · nullableOptional
termsAndConditionsstring · nullableOptional
orgIdinteger · int32Optional
isBlockedbooleanOptional
isCancelledbooleanOptional
isArchivedbooleanOptional
updatedAtstring · date-time · nullableOptional
timeZonestring · nullableOptional
get/api/v1/Events/{id}
GET /api/v1/Events/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
  "id": 1,
  "isSeries": true,
  "parentEventId": 1,
  "allowJoiningPartWayThrough": true,
  "eventName": "text",
  "opponent": "text",
  "description": "text",
  "vitalInformation": "text",
  "groupId": 1,
  "groupName": "text",
  "yearId": 1,
  "yearName": "text",
  "ccaSignUpId": 1,
  "eventTypeId": 1,
  "eventType": "text",
  "eventStartTime": "2026-01-01T00:00:00.000Z",
  "eventEndTime": "2026-01-01T00:00:00.000Z",
  "leadStaffMember": "text",
  "cost": 1,
  "percentageToPayDeposit": 1,
  "alwaysChargeFullPrice": true,
  "includesTax": true,
  "paymentDueDate": "2026-01-01",
  "location": "text",
  "meetingLocation": "text",
  "meetingTime": "2026-01-01T00:00:00.000Z",
  "pickupLocation": "text",
  "pickupTime": "2026-01-01T00:00:00.000Z",
  "numberOfPlaces": 1,
  "consentRequired": true,
  "consentDueDate": "2026-01-01T00:00:00.000Z",
  "consentMessage": "text",
  "termsAndConditions": "text",
  "orgId": 1,
  "isBlocked": true,
  "isCancelled": true,
  "isArchived": true,
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "timeZone": "text",
  "attendees": [
    {
      "id": 1,
      "calendarEventId": 1,
      "registerStatus": "Unset",
      "firstName": "text",
      "lastName": "text",
      "registerUpdatedAt": "2026-01-01T00:00:00.000Z",
      "registerUpdatedBy": 1,
      "registerUpdatedByName": "text",
      "attendanceNote": "text"
    }
  ]
}

Get event attendance information.

get
/api/v1/Events/{id}/attendance
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

Event Id

Query parameters
organisationIdinteger · int32Optional

Organisation Id (optional query parameter)

Responses
200

OK

application/json
idinteger · int32Optional
calendarEventIdinteger · int32Optional
registerStatusstring · enumOptionalPossible values:
firstNamestring · nullableOptional
lastNamestring · nullableOptional
registerUpdatedAtstring · date-time · nullableOptional
registerUpdatedByinteger · int32 · nullableOptional
registerUpdatedByNamestring · nullableOptional
attendanceNotestring · nullableOptional
get/api/v1/Events/{id}/attendance
GET /api/v1/Events/{id}/attendance HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
[
  {
    "id": 1,
    "calendarEventId": 1,
    "registerStatus": "Unset",
    "firstName": "text",
    "lastName": "text",
    "registerUpdatedAt": "2026-01-01T00:00:00.000Z",
    "registerUpdatedBy": 1,
    "registerUpdatedByName": "text",
    "attendanceNote": "text"
  }
]

Update event attendance information.

put
/api/v1/Events/{id}/attendance
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

Id

Query parameters
organisationIdinteger · int32Optional

Organisation Id (optional query parameter)

Bodyobject · EventAttendanceUpdateDto[]
idinteger · int32Required
registerStatusstring · enumRequiredPossible values:
attendanceNotestring · nullableOptional
Responses
200

OK

application/json
idinteger · int32Optional
calendarEventIdinteger · int32Optional
registerStatusstring · enumOptionalPossible values:
firstNamestring · nullableOptional
lastNamestring · nullableOptional
registerUpdatedAtstring · date-time · nullableOptional
registerUpdatedByinteger · int32 · nullableOptional
registerUpdatedByNamestring · nullableOptional
attendanceNotestring · nullableOptional
put/api/v1/Events/{id}/attendance
PUT /api/v1/Events/{id}/attendance HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 59

[
  {
    "id": 1,
    "registerStatus": "Unset",
    "attendanceNote": "text"
  }
]
[
  {
    "id": 1,
    "calendarEventId": 1,
    "registerStatus": "Unset",
    "firstName": "text",
    "lastName": "text",
    "registerUpdatedAt": "2026-01-01T00:00:00.000Z",
    "registerUpdatedBy": 1,
    "registerUpdatedByName": "text",
    "attendanceNote": "text"
  }
]

Update student event attendance information.

put
/api/v1/Events/studentAttendance
Authorizations
AuthorizationstringRequired

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

Query parameters
organisationIdinteger · int32Optional

Organisation Id (optional query parameter)

Body
idinteger · int32 · nullableOptional
studentIdstring · nullableOptional
startDateTimestring · date-timeRequired
endDateTimestring · date-timeRequired
attendanceStatusstring · enumRequiredPossible values:
attendanceNotestring · nullableOptional
Responses
400

Bad Request

application/json

Structured body for 4xx / 5xx responses on the new Public API surface: a machine-readable SchoolsBuddy.PublicAPI.Models.ErrorResponse.Code plus a human-readable SchoolsBuddy.PublicAPI.Models.ErrorResponse.Error. See cross-cutting-design.md §5.3. This is additive — existing endpoints continue returning their legacy plain-string / ModelState shapes until migrated by their per-controller ticket.

codestring · nullableOptional

Gets or sets the machine-readable error code (e.g. VALIDATION_FAILED, RESOURCE_NOT_FOUND, INTERNAL_ERROR) per cross-cutting-design.md §5.1.

errorstring · nullableOptional

Gets or sets the human-readable error message.

put/api/v1/Events/studentAttendance
PUT /api/v1/Events/studentAttendance HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 170

{
  "id": 1,
  "studentId": "text",
  "startDateTime": "2026-01-01T00:00:00.000Z",
  "endDateTime": "2026-01-01T00:00:00.000Z",
  "attendanceStatus": "ToBeConfirmed",
  "attendanceNote": "text"
}
{
  "code": "text",
  "error": "text"
}

Last updated