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

Pref

Gets a paginated list of Preference signups for the calling organisation(s), sorted by id. Archived signups are added when includeArchived is true; search filters on the signup name.

get
/api/v1/CcaSignUp/Pref
Authorizations
AuthorizationstringRequired

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

Query parameters
IncludeArchivedbooleanOptional
SearchstringOptional
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/CcaSignUp/Pref
GET /api/v1/CcaSignUp/Pref HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
  "isSuccess": true,
  "errors": [
    "text"
  ],
  "messageTranslationParameters": null,
  "data": [
    {
      "id": 1,
      "organisationId": 1,
      "containerTypeId": 1,
      "preferenceTypeId": 1,
      "preferenceSelectionScope": "Daily",
      "eventCategoryId": 1,
      "name": "text",
      "description": "text",
      "activitiesStartDate": "2026-01-01",
      "activitiesEndDate": "2026-01-01",
      "activitiesDefaultStartTime": "16:00:00",
      "activitiesDefaultEndTime": "16:00:00",
      "responsibilityForConfirmation": "None",
      "signupOpens": "2026-01-01T00:00:00.000Z",
      "signupCloses": "2026-01-01T00:00:00.000Z",
      "useOrganisationBlockDates": true,
      "termsAndConditions": "text",
      "additionalInfoUrl": "text",
      "isArchived": true,
      "timeZone": "text",
      "createdAtUtc": "2026-01-01T00:00:00.000Z",
      "updatedAtUtc": "2026-01-01T00:00:00.000Z"
    }
  ],
  "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 Preference signup. The container type and the preference type are both derived from the URL — the server always creates Preference rows. preferenceSelectionScope chooses whether a pupil's 1-5 ranking restarts each day (Daily, the default) or runs across the whole week (Weekly); it accepts the name or its ordinal. The signup always starts unarchived. The name must be unique among the organisation's active signups.

post
/api/v1/CcaSignUp/Pref
Authorizations
AuthorizationstringRequired

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

Query parameters
organisationIdinteger · int32Optional

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

Body
namestring · min: 1 · max: 255Required
descriptionstring · min: 1Required
preferenceSelectionScopestring · enumOptionalPossible values:
eventCategoryIdinteger · int32 · min: 1 · max: 2147483647Required
activitiesStartDatestring · dateRequired
activitiesEndDatestring · dateRequired
activitiesDefaultStartTimestring · partial-time · nullableOptionalExample: 16:00:00
activitiesDefaultEndTimestring · partial-time · nullableOptionalExample: 16:00:00
responsibilityForConfirmationstring · enumOptionalPossible values:
signupOpensstring · date-timeRequired
signupClosesstring · date-timeRequired
termsAndConditionsstring · nullableOptional
additionalInfoUrlstring · nullableOptional
Responses
201

Created

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
containerTypeIdinteger · int32Optional
preferenceTypeIdinteger · int32Optional
preferenceSelectionScopestring · enumOptionalPossible values:
eventCategoryIdinteger · int32 · nullableOptional
namestring · nullableOptional
descriptionstring · nullableOptional
activitiesStartDatestring · dateOptional
activitiesEndDatestring · dateOptional
activitiesDefaultStartTimestring · partial-time · nullableOptionalExample: 16:00:00
activitiesDefaultEndTimestring · partial-time · nullableOptionalExample: 16:00:00
responsibilityForConfirmationstring · enumOptionalPossible values:
signupOpensstring · date-time · nullableOptional
signupClosesstring · date-time · nullableOptional
useOrganisationBlockDatesboolean · nullableOptional
termsAndConditionsstring · nullableOptional
additionalInfoUrlstring · nullableOptional
isArchivedbooleanOptional
timeZonestring · nullableOptional
createdAtUtcstring · date-time · nullableOptional
updatedAtUtcstring · date-time · nullableOptional
post/api/v1/CcaSignUp/Pref
POST /api/v1/CcaSignUp/Pref HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 414

{
  "name": "text",
  "description": "text",
  "preferenceSelectionScope": "Daily",
  "eventCategoryId": 1,
  "activitiesStartDate": "2026-01-01",
  "activitiesEndDate": "2026-01-01",
  "activitiesDefaultStartTime": "16:00:00",
  "activitiesDefaultEndTime": "16:00:00",
  "responsibilityForConfirmation": "None",
  "signupOpens": "2026-01-01T00:00:00.000Z",
  "signupCloses": "2026-01-01T00:00:00.000Z",
  "termsAndConditions": "text",
  "additionalInfoUrl": "text"
}
{
  "id": 1,
  "organisationId": 1,
  "containerTypeId": 1,
  "preferenceTypeId": 1,
  "preferenceSelectionScope": "Daily",
  "eventCategoryId": 1,
  "name": "text",
  "description": "text",
  "activitiesStartDate": "2026-01-01",
  "activitiesEndDate": "2026-01-01",
  "activitiesDefaultStartTime": "16:00:00",
  "activitiesDefaultEndTime": "16:00:00",
  "responsibilityForConfirmation": "None",
  "signupOpens": "2026-01-01T00:00:00.000Z",
  "signupCloses": "2026-01-01T00:00:00.000Z",
  "useOrganisationBlockDates": true,
  "termsAndConditions": "text",
  "additionalInfoUrl": "text",
  "isArchived": true,
  "timeZone": "text",
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z"
}

Gets a single Preference signup by id. Archived signups — and signups of any other container type (Instant Book & Pay, PTC) — return 404 CCASIGNUP_NOT_FOUND.

get
/api/v1/CcaSignUp/Pref/{id}
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The signup id (CcaSignUp.CcaSignUpId)

Query parameters
organisationIdinteger · int32Optional

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

Responses
200

OK

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
containerTypeIdinteger · int32Optional
preferenceTypeIdinteger · int32Optional
preferenceSelectionScopestring · enumOptionalPossible values:
eventCategoryIdinteger · int32 · nullableOptional
namestring · nullableOptional
descriptionstring · nullableOptional
activitiesStartDatestring · dateOptional
activitiesEndDatestring · dateOptional
activitiesDefaultStartTimestring · partial-time · nullableOptionalExample: 16:00:00
activitiesDefaultEndTimestring · partial-time · nullableOptionalExample: 16:00:00
responsibilityForConfirmationstring · enumOptionalPossible values:
signupOpensstring · date-time · nullableOptional
signupClosesstring · date-time · nullableOptional
useOrganisationBlockDatesboolean · nullableOptional
termsAndConditionsstring · nullableOptional
additionalInfoUrlstring · nullableOptional
isArchivedbooleanOptional
timeZonestring · nullableOptional
createdAtUtcstring · date-time · nullableOptional
updatedAtUtcstring · date-time · nullableOptional
get/api/v1/CcaSignUp/Pref/{id}
GET /api/v1/CcaSignUp/Pref/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
  "id": 1,
  "organisationId": 1,
  "containerTypeId": 1,
  "preferenceTypeId": 1,
  "preferenceSelectionScope": "Daily",
  "eventCategoryId": 1,
  "name": "text",
  "description": "text",
  "activitiesStartDate": "2026-01-01",
  "activitiesEndDate": "2026-01-01",
  "activitiesDefaultStartTime": "16:00:00",
  "activitiesDefaultEndTime": "16:00:00",
  "responsibilityForConfirmation": "None",
  "signupOpens": "2026-01-01T00:00:00.000Z",
  "signupCloses": "2026-01-01T00:00:00.000Z",
  "useOrganisationBlockDates": true,
  "termsAndConditions": "text",
  "additionalInfoUrl": "text",
  "isArchived": true,
  "timeZone": "text",
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z"
}

Partially updates a Preference signup — omitted fields preserve their existing values (§3.7e). The URL {id} is the canonical identifier; the body carries no id. The signup's archive state cannot be changed here: it follows its groups — archiving the last live group archives the signup, unarchiving any group re-activates it. Any write against an archived signup returns 409 RESOURCE_ARCHIVED.

put
/api/v1/CcaSignUp/Pref/{id}
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The signup id (CcaSignUp.CcaSignUpId)

Query parameters
organisationIdinteger · int32Optional

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

Body
namestring · max: 255 · nullableOptional
descriptionstring · nullableOptional
preferenceSelectionScopestring · enumOptionalPossible values:
eventCategoryIdinteger · int32 · min: 1 · max: 2147483647 · nullableOptional
activitiesStartDatestring · date · nullableOptional
activitiesEndDatestring · date · nullableOptional
activitiesDefaultStartTimestring · partial-time · nullableOptionalExample: 16:00:00
activitiesDefaultEndTimestring · partial-time · nullableOptionalExample: 16:00:00
responsibilityForConfirmationstring · enumOptionalPossible values:
signupOpensstring · date-time · nullableOptional
signupClosesstring · date-time · nullableOptional
termsAndConditionsstring · nullableOptional
additionalInfoUrlstring · nullableOptional
Responses
200

OK

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
containerTypeIdinteger · int32Optional
preferenceTypeIdinteger · int32Optional
preferenceSelectionScopestring · enumOptionalPossible values:
eventCategoryIdinteger · int32 · nullableOptional
namestring · nullableOptional
descriptionstring · nullableOptional
activitiesStartDatestring · dateOptional
activitiesEndDatestring · dateOptional
activitiesDefaultStartTimestring · partial-time · nullableOptionalExample: 16:00:00
activitiesDefaultEndTimestring · partial-time · nullableOptionalExample: 16:00:00
responsibilityForConfirmationstring · enumOptionalPossible values:
signupOpensstring · date-time · nullableOptional
signupClosesstring · date-time · nullableOptional
useOrganisationBlockDatesboolean · nullableOptional
termsAndConditionsstring · nullableOptional
additionalInfoUrlstring · nullableOptional
isArchivedbooleanOptional
timeZonestring · nullableOptional
createdAtUtcstring · date-time · nullableOptional
updatedAtUtcstring · date-time · nullableOptional
put/api/v1/CcaSignUp/Pref/{id}
PUT /api/v1/CcaSignUp/Pref/{id} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 414

{
  "name": "text",
  "description": "text",
  "preferenceSelectionScope": "Daily",
  "eventCategoryId": 1,
  "activitiesStartDate": "2026-01-01",
  "activitiesEndDate": "2026-01-01",
  "activitiesDefaultStartTime": "16:00:00",
  "activitiesDefaultEndTime": "16:00:00",
  "responsibilityForConfirmation": "None",
  "signupOpens": "2026-01-01T00:00:00.000Z",
  "signupCloses": "2026-01-01T00:00:00.000Z",
  "termsAndConditions": "text",
  "additionalInfoUrl": "text"
}
{
  "id": 1,
  "organisationId": 1,
  "containerTypeId": 1,
  "preferenceTypeId": 1,
  "preferenceSelectionScope": "Daily",
  "eventCategoryId": 1,
  "name": "text",
  "description": "text",
  "activitiesStartDate": "2026-01-01",
  "activitiesEndDate": "2026-01-01",
  "activitiesDefaultStartTime": "16:00:00",
  "activitiesDefaultEndTime": "16:00:00",
  "responsibilityForConfirmation": "None",
  "signupOpens": "2026-01-01T00:00:00.000Z",
  "signupCloses": "2026-01-01T00:00:00.000Z",
  "useOrganisationBlockDates": true,
  "termsAndConditions": "text",
  "additionalInfoUrl": "text",
  "isArchived": true,
  "timeZone": "text",
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z"
}

Gets a paginated list of a Preference signup's child groups, sorted by id. Archived groups are added when includeArchived is true. The sub-resource list has no search parameter (locked 2026-06-23). The parent may be archived — its groups stay listable so callers can find the ids to unarchive.

get
/api/v1/CcaSignUp/Pref/{id}/groups
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The parent signup id (CcaSignUp.CcaSignUpId)

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/CcaSignUp/Pref/{id}/groups
GET /api/v1/CcaSignUp/Pref/{id}/groups HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Accept: */*
{
  "isSuccess": true,
  "errors": [
    "text"
  ],
  "messageTranslationParameters": null,
  "data": [
    {
      "id": 1,
      "organisationId": 1,
      "groupName": "text",
      "description": "text",
      "groupCode": "text",
      "billingCode": "text",
      "leadStaffId": 1,
      "staffIds": [
        1
      ],
      "activityId": 1,
      "showInSportsPortal": true,
      "locationId": 1,
      "informationOnly": true,
      "day1": "Monday",
      "day1StartTime": "16:00:00",
      "day1EndTime": "16:00:00",
      "day2": "Monday",
      "day2StartTime": "16:00:00",
      "day2EndTime": "16:00:00",
      "maximumPlaces": 1,
      "minimumPlaces": 1,
      "cost": 1,
      "costType": "FreeOfCharge",
      "joinRequestsOn": true,
      "availableTo": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "preRequisite": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "notAvailableTo": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "genderAvailableTo": "Female",
      "taxCode": "text",
      "shortName": "text",
      "isArchived": true,
      "timeZone": "text",
      "createdAtUtc": "2026-01-01T00:00:00.000Z",
      "updatedAtUtc": "2026-01-01T00:00:00.000Z"
    }
  ],
  "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 child group under a Preference signup. The parent signup must exist as a Preference signup (404 CCASIGNUP_NOT_FOUND) and must not be archived (409 RESOURCE_ARCHIVED — unarchive one of its groups first, which re-activates the signup). The day1 triple (day1, day1StartTime, day1EndTime) is required; supplying the day2 triple adds a second weekly session. Day times are organisation-local and are interpreted via the timeZone on the response. costType is derived from cost and is ignored if sent. joinRequestsOn defaults to true when omitted. The group always starts unarchived.

post
/api/v1/CcaSignUp/Pref/{id}/groups
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The parent signup id (CcaSignUp.CcaSignUpId)

Query parameters
organisationIdinteger · int32Optional

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

Body
groupNamestring · min: 1 · max: 255Required
descriptionstring · min: 1Required
groupCodestring · max: 50 · nullableOptional
billingCodestring · max: 50 · nullableOptional
leadStaffIdinteger · int32 · min: 1 · max: 2147483647Required
staffIdsinteger · int32[] · nullableOptional
activityIdinteger · int32 · min: 1 · max: 2147483647Required
showInSportsPortalboolean · nullableOptional
locationIdinteger · int32 · max: 2147483647 · nullableOptional
informationOnlyboolean · nullableOptional
day1string · enumRequiredPossible values:
day1StartTimestring · partial-timeRequiredExample: 16:00:00
day1EndTimestring · partial-timeRequiredExample: 16:00:00
day2string · enumOptionalPossible values:
day2StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day2EndTimestring · partial-time · nullableOptionalExample: 16:00:00
maximumPlacesinteger · int32 · max: 2147483647 · nullableOptional
minimumPlacesinteger · int32 · max: 2147483647 · nullableOptional
costnumber · double · nullableOptional
joinRequestsOnboolean · nullableOptional
genderAvailableTostring · enumOptionalPossible values:
taxCodestring · max: 10 · nullableOptional
shortNamestring · max: 30 · nullableOptional
Responses
201

Created

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
groupNamestring · nullableOptional
descriptionstring · nullableOptional
groupCodestring · nullableOptional
billingCodestring · nullableOptional
leadStaffIdinteger · int32 · nullableOptional
staffIdsinteger · int32[] · nullableOptional
activityIdinteger · int32 · nullableOptional
showInSportsPortalbooleanOptional
locationIdinteger · int32 · nullableOptional
informationOnlybooleanOptional
day1string · enumOptionalPossible values:
day1StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day1EndTimestring · partial-time · nullableOptionalExample: 16:00:00
day2string · enumOptionalPossible values:
day2StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day2EndTimestring · partial-time · nullableOptionalExample: 16:00:00
maximumPlacesinteger · int32Optional
minimumPlacesinteger · int32Optional
costnumber · doubleOptional
costTypestring · enumOptionalPossible values:
joinRequestsOnboolean · nullableOptional
genderAvailableTostring · enumOptionalPossible values:
taxCodestring · nullableOptional
shortNamestring · nullableOptional
isArchivedbooleanOptional
timeZonestring · nullableOptional
createdAtUtcstring · date-time · nullableOptional
updatedAtUtcstring · date-timeOptional
post/api/v1/CcaSignUp/Pref/{id}/groups
POST /api/v1/CcaSignUp/Pref/{id}/groups HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 583

{
  "groupName": "text",
  "description": "text",
  "groupCode": "text",
  "billingCode": "text",
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "activityId": 1,
  "showInSportsPortal": true,
  "locationId": 1,
  "informationOnly": true,
  "day1": "Monday",
  "day1StartTime": "16:00:00",
  "day1EndTime": "16:00:00",
  "day2": "Monday",
  "day2StartTime": "16:00:00",
  "day2EndTime": "16:00:00",
  "maximumPlaces": 1,
  "minimumPlaces": 1,
  "cost": 1,
  "joinRequestsOn": true,
  "availableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "preRequisite": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "notAvailableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "genderAvailableTo": "Female",
  "taxCode": "text",
  "shortName": "text"
}
{
  "id": 1,
  "organisationId": 1,
  "groupName": "text",
  "description": "text",
  "groupCode": "text",
  "billingCode": "text",
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "activityId": 1,
  "showInSportsPortal": true,
  "locationId": 1,
  "informationOnly": true,
  "day1": "Monday",
  "day1StartTime": "16:00:00",
  "day1EndTime": "16:00:00",
  "day2": "Monday",
  "day2StartTime": "16:00:00",
  "day2EndTime": "16:00:00",
  "maximumPlaces": 1,
  "minimumPlaces": 1,
  "cost": 1,
  "costType": "FreeOfCharge",
  "joinRequestsOn": true,
  "availableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "preRequisite": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "notAvailableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "genderAvailableTo": "Female",
  "taxCode": "text",
  "shortName": "text",
  "isArchived": true,
  "timeZone": "text",
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z"
}

Partially updates a child group under a Preference signup — omitted fields preserve their existing values (§3.7e). Each day triple is atomic: send all three of its fields to change that session, or none to leave it as it is (omitting them does not clear the session). cost re-derives costType only when it is present and non-null. For the availableTo / preRequisite / notAvailableTo lists an omitted field preserves the stored set while an empty array clears it. Setting isArchived = true archives the group — rejected with 409 CCASIGNUP_ARCHIVE_BLOCKED_ACTIVE while the group has future events; archiving the LAST live group also archives the signup. Sending isArchived = false unarchives an archived group (EC-1 as amended 2026-07-31, never blocked) and re-activates an archived signup — subject to the signup's NAME_NOT_UNIQUE unarchive-into-collision guard; any other write against an archived group returns 409 RESOURCE_ARCHIVED.

put
/api/v1/CcaSignUp/Pref/{id}/groups/{groupId}
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The parent signup id (CcaSignUp.CcaSignUpId)

groupIdinteger · int32Required

The child group id (Team.Id)

Query parameters
organisationIdinteger · int32Optional

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

Body
groupNamestring · max: 255 · nullableOptional
descriptionstring · nullableOptional
groupCodestring · max: 50 · nullableOptional
billingCodestring · max: 50 · nullableOptional
leadStaffIdinteger · int32 · nullableOptional
staffIdsinteger · int32[] · nullableOptional
activityIdinteger · int32 · nullableOptional
showInSportsPortalboolean · nullableOptional
locationIdinteger · int32 · max: 2147483647 · nullableOptional
informationOnlyboolean · nullableOptional
day1string · enumOptionalPossible values:
day1StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day1EndTimestring · partial-time · nullableOptionalExample: 16:00:00
day2string · enumOptionalPossible values:
day2StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day2EndTimestring · partial-time · nullableOptionalExample: 16:00:00
maximumPlacesinteger · int32 · max: 2147483647 · nullableOptional
minimumPlacesinteger · int32 · max: 2147483647 · nullableOptional
costnumber · double · nullableOptional
joinRequestsOnboolean · nullableOptional
genderAvailableTostring · enumOptionalPossible values:
taxCodestring · max: 10 · nullableOptional
shortNamestring · max: 30 · nullableOptional
isArchivedboolean · nullableOptional
Responses
200

OK

application/json
idinteger · int32Optional
organisationIdinteger · int32Optional
groupNamestring · nullableOptional
descriptionstring · nullableOptional
groupCodestring · nullableOptional
billingCodestring · nullableOptional
leadStaffIdinteger · int32 · nullableOptional
staffIdsinteger · int32[] · nullableOptional
activityIdinteger · int32 · nullableOptional
showInSportsPortalbooleanOptional
locationIdinteger · int32 · nullableOptional
informationOnlybooleanOptional
day1string · enumOptionalPossible values:
day1StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day1EndTimestring · partial-time · nullableOptionalExample: 16:00:00
day2string · enumOptionalPossible values:
day2StartTimestring · partial-time · nullableOptionalExample: 16:00:00
day2EndTimestring · partial-time · nullableOptionalExample: 16:00:00
maximumPlacesinteger · int32Optional
minimumPlacesinteger · int32Optional
costnumber · doubleOptional
costTypestring · enumOptionalPossible values:
joinRequestsOnboolean · nullableOptional
genderAvailableTostring · enumOptionalPossible values:
taxCodestring · nullableOptional
shortNamestring · nullableOptional
isArchivedbooleanOptional
timeZonestring · nullableOptional
createdAtUtcstring · date-time · nullableOptional
updatedAtUtcstring · date-timeOptional
put/api/v1/CcaSignUp/Pref/{id}/groups/{groupId}
PUT /api/v1/CcaSignUp/Pref/{id}/groups/{groupId} HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 601

{
  "groupName": "text",
  "description": "text",
  "groupCode": "text",
  "billingCode": "text",
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "activityId": 1,
  "showInSportsPortal": true,
  "locationId": 1,
  "informationOnly": true,
  "day1": "Monday",
  "day1StartTime": "16:00:00",
  "day1EndTime": "16:00:00",
  "day2": "Monday",
  "day2StartTime": "16:00:00",
  "day2EndTime": "16:00:00",
  "maximumPlaces": 1,
  "minimumPlaces": 1,
  "cost": 1,
  "joinRequestsOn": true,
  "availableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "preRequisite": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "notAvailableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "genderAvailableTo": "Female",
  "taxCode": "text",
  "shortName": "text",
  "isArchived": true
}
{
  "id": 1,
  "organisationId": 1,
  "groupName": "text",
  "description": "text",
  "groupCode": "text",
  "billingCode": "text",
  "leadStaffId": 1,
  "staffIds": [
    1
  ],
  "activityId": 1,
  "showInSportsPortal": true,
  "locationId": 1,
  "informationOnly": true,
  "day1": "Monday",
  "day1StartTime": "16:00:00",
  "day1EndTime": "16:00:00",
  "day2": "Monday",
  "day2StartTime": "16:00:00",
  "day2EndTime": "16:00:00",
  "maximumPlaces": 1,
  "minimumPlaces": 1,
  "cost": 1,
  "costType": "FreeOfCharge",
  "joinRequestsOn": true,
  "availableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "preRequisite": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "notAvailableTo": [
    {
      "id": 1,
      "type": "Group"
    }
  ],
  "genderAvailableTo": "Female",
  "taxCode": "text",
  "shortName": "text",
  "isArchived": true,
  "timeZone": "text",
  "createdAtUtc": "2026-01-01T00:00:00.000Z",
  "updatedAtUtc": "2026-01-01T00:00:00.000Z"
}

Creates child groups under a Preference signup in bulk. The parent signup gates the whole request (validated before any per-item work); items are then processed independently.

post
/api/v1/CcaSignUp/Pref/{id}/groups/BulkCreate
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The parent signup id (CcaSignUp.CcaSignUpId)

Body

Request body for POST /api/v1/CcaSignUp/Pref/{id}/groups/BulkCreate (SB-15666). The parent signup id in the URL gates the whole request (CCASIGNUP_NOT_FOUND, validated before any per-item work — closes SB-15244 / SB-15245).

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/CcaSignUp/Pref/{id}/groups/BulkCreate
POST /api/v1/CcaSignUp/Pref/{id}/groups/BulkCreate HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 641

{
  "organisationId": 1,
  "items": [
    {
      "groupName": "text",
      "description": "text",
      "groupCode": "text",
      "billingCode": "text",
      "leadStaffId": 1,
      "staffIds": [
        1
      ],
      "activityId": 1,
      "showInSportsPortal": true,
      "locationId": 1,
      "informationOnly": true,
      "day1": "Monday",
      "day1StartTime": "16:00:00",
      "day1EndTime": "16:00:00",
      "day2": "Monday",
      "day2StartTime": "16:00:00",
      "day2EndTime": "16:00:00",
      "maximumPlaces": 1,
      "minimumPlaces": 1,
      "cost": 1,
      "joinRequestsOn": true,
      "availableTo": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "preRequisite": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "notAvailableTo": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "genderAvailableTo": "Female",
      "taxCode": "text",
      "shortName": "text",
      "clientReferenceId": "text"
    }
  ]
}
{
  "successfulIds": [
    1
  ],
  "failedItems": [
    {
      "index": 1,
      "clientReferenceId": "text",
      "name": "text",
      "code": "text",
      "error": "text"
    }
  ],
  "totalRequested": 1,
  "totalSuccessful": 1,
  "totalFailed": 1
}

Partially updates child groups under a Preference signup in bulk. The parent signup gates the whole request (validated before any per-item work); each item carries the target group id and items are processed independently. Day-triple, cost and archive semantics per item match the single-resource PUT.

put
/api/v1/CcaSignUp/Pref/{id}/groups/BulkUpdate
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The parent signup id (CcaSignUp.CcaSignUpId)

Body

Request body for PUT /api/v1/CcaSignUp/Pref/{id}/groups/BulkUpdate (SB-15666). The parent signup id in the URL gates the whole request (CCASIGNUP_NOT_FOUND, validated before any per-item work); each item carries its target group Id (EC-7).

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/CcaSignUp/Pref/{id}/groups/BulkUpdate
PUT /api/v1/CcaSignUp/Pref/{id}/groups/BulkUpdate HTTP/1.1
Host: publicapi-eu.schoolsbuddy.net
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 666

{
  "organisationId": 1,
  "items": [
    {
      "groupName": "text",
      "description": "text",
      "groupCode": "text",
      "billingCode": "text",
      "leadStaffId": 1,
      "staffIds": [
        1
      ],
      "activityId": 1,
      "showInSportsPortal": true,
      "locationId": 1,
      "informationOnly": true,
      "day1": "Monday",
      "day1StartTime": "16:00:00",
      "day1EndTime": "16:00:00",
      "day2": "Monday",
      "day2StartTime": "16:00:00",
      "day2EndTime": "16:00:00",
      "maximumPlaces": 1,
      "minimumPlaces": 1,
      "cost": 1,
      "joinRequestsOn": true,
      "availableTo": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "preRequisite": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "notAvailableTo": [
        {
          "id": 1,
          "type": "Group"
        }
      ],
      "genderAvailableTo": "Female",
      "taxCode": "text",
      "shortName": "text",
      "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 child groups under a Preference signup in bulk (toggleable via the isArchived body flag). Archiving is rejected per item (CCASIGNUP_ARCHIVE_BLOCKED_ACTIVE) while a group has future events; archiving the LAST live group also archives the signup. Unarchiving is never blocked and re-activates an archived signup — subject to the signup's NAME_NOT_UNIQUE unarchive-into-collision guard. 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/CcaSignUp/Pref/{id}/groups/BulkArchive
Authorizations
AuthorizationstringRequired

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

Path parameters
idinteger · int32Required

The parent signup id (CcaSignUp.CcaSignUpId)

Body

Request body for POST /api/v1/CcaSignUp/Pref/{id}/groups/BulkArchive (SB-15666, mirroring SB-15665 §10 C3). Toggleable: isArchived true archives each group (Team.StatusId = Archive) — blocked per item with CCASIGNUP_ARCHIVE_BLOCKED_ACTIVE while the group has future events (§10 D2); false unarchives (StatusId = Active, never blocked). The container cascade runs per item: archiving the last live group archives the container (CcaSignUp.Status = 4); unarchiving any group re-activates it. The parent signup id in the URL gates the whole request (CCASIGNUP_NOT_FOUND, validated before any per-item work) — an ARCHIVED parent is allowed here, since unarchiving a group is the container's recovery path (§10 D5).

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 (Team.Id) of the child 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/CcaSignUp/Pref/{id}/groups/BulkArchive
POST /api/v1/CcaSignUp/Pref/{id}/groups/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
}

Last updated