zermelogo

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2026 License: MIT Imports: 9 Imported by: 0

README

A Go client for the Zermelo API.

Requirements

  • Go 1.24.4 or later
  • A Zermelo school portal and an account with access to it

Installation

go get github.com/blacklizardcode/zermelogo

The package name is zermelogo, so import it like this:

import zermelogo "github.com/blacklizardcode/zermelogo"

Documentation

All public types, methods, and functions are documented with Go doc comments. Read them with the standard tool:

go doc github.com/blacklizardcode/zermelogo

To read the documentation for a single symbol:

go doc github.com/blacklizardcode/zermelogo Client
go doc github.com/blacklizardcode/zermelogo Client.GetHolidays
go doc github.com/blacklizardcode/zermelogo HolidaysParams

Usage

Create a client with the base URL of your portal, exchange an authentication code for a bearer token, and call the endpoint you need.

package main

import (
	"fmt"
	"log"

	zermelogo "github.com/blacklizardcode/zermelogo"
)

func main() {
	client := zermelogo.New("https://example.zportal.nl")

	bearer, err := client.Auth().CodeToBearer(123456)
	if err != nil {
		log.Fatal(err)
	}
	client.Auth().SetBearerToken(bearer)

	holidays, err := client.GetHolidays(zermelogo.HolidaysParams{
		SchoolInSchoolYear: "452",
		Fields:             "id,name,start,end",
	})
	if err != nil {
		log.Fatal(err)
	}

	for _, holiday := range holidays {
		fmt.Println(holiday.Name, holiday.Start, holiday.End)
	}
}

If you already have a bearer token, set it directly and skip the code exchange:

client := zermelogo.New("https://example.zportal.nl")
client.Auth().SetBearerToken("your-bearer-token")

Filtering

Every endpoint takes a typed parameter struct. Zero values are omitted from the request, so you only set the fields you need. Use Fields to limit the returned columns.

data, err := client.GetStudents(zermelogo.StudentsParams{
	SchoolInSchoolYear: "452,502",
	Fields:             "id,firstName,lastName",
})

SchoolInSchoolYear accepts a single project id or a comma separated list of project ids. The type also decodes the numeric form that the API returns inside a response.

Endpoints

Method Path
GetAppointments /api/v3/appointments
GetBranchesOfSchools /api/v3/branchesofschools
GetContracts /api/v3/contracts
GetCourses /api/v3/courses
GetDepartmentsOfBranches /api/v3/departmentsofbranches
GetEmployeeAbsences /api/v3/employeeabsences
GetEmployees /api/v3/employees
GetEnrollmentStatus /api/v3/enrollmentstatus
GetFamilyMembers /api/v3/familymembers
GetGroupsInDepartments /api/v3/groupindepartments
GetHolidays /api/v3/holidays
GetJobs /api/v3/jobs
GetLiveSchedule /api/v3/liveschedule
GetLocationsOfBranches /api/v3/locationofbranches
GetParentTeacherNights /api/v3/parentteachernights
GetParentToSchedulerRemarks /api/v3/parenttoschedulerremarks
GetSchoolsInSchoolYears /api/v3/schoolsinschoolyears
GetStudents /api/v3/students
GetStudentsInDepartments /api/v3/studentsindepartments
GetTalkDays /api/v3/talkdays
GetTalkTimeBlockAbsenceParent /api/v3/talktimeblockabsenceparent
GetTalkTimeBlocks /api/v3/talktimeblocks
GetUsers /api/v3/users

Run go doc on any method above for its parameter struct and fields.

Errors

Failed requests return an *APIError that carries the HTTP status code and the message reported by the portal. Use errors.As to inspect it.

import (
	"errors"
	"fmt"
	"log"
	"net/http"

	zermelogo "github.com/blacklizardcode/zermelogo"
)

data, err := client.GetStudents(zermelogo.StudentsParams{SchoolInSchoolYear: "452"})
if err != nil {
	var apiErr *zermelogo.APIError
	if errors.As(err, &apiErr) && apiErr.StatusCode == http.StatusForbidden {
		log.Println("no permission for this endpoint:", apiErr.Message)
		return
	}
	log.Fatal(err)
}
fmt.Println(data)

A status of 403 usually means the account lacks the security rule for that endpoint, so check the permissions granted in Zermelo before changing the request.

Live smoke test

The test directory contains a small program that calls every endpoint and reports the result. Pass a base URL plus either a bearer token or an authentication code, and optionally a schoolInSchoolYear value.

go run ./test https://example.zportal.nl "" "$BEARER_TOKEN" "452,502"

License

No license file is included in this repository.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError struct {
	StatusCode int
	Message    string
}

APIError is returned when the portal answers a request with a status of 400 or higher. Message holds the text reported by Zermelo.

func (*APIError) Error

func (e *APIError) Error() string

Error implements the error interface.

type AppointmentsParams

type AppointmentsParams struct {
	AppointmentInstance                    int                `url:"appointmentInstance,omitempty" json:"appointmentInstance,omitempty"`
	BranchOfSchool                         int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	Cancelled                              bool               `url:"cancelled,omitempty" json:"cancelled,omitempty"`
	ChangeDescription                      string             `url:"changeDescription,omitempty" json:"changeDescription,omitempty"`
	Created                                int                `url:"created,omitempty" json:"created,omitempty"`
	End                                    int64              `url:"end" json:"end"`
	EndTimeSlot                            int                `url:"endTimeSlot,omitempty" json:"endTimeSlot,omitempty"`
	EndTimeSlotName                        string             `url:"endTimeSlotName,omitempty" json:"endTimeSlotName,omitempty"`
	GroupChanged                           bool               `url:"groupChanged,omitempty" json:"groupChanged,omitempty"`
	Hidden                                 bool               `url:"hidden,omitempty" json:"hidden,omitempty"`
	ID                                     int                `url:"id,omitempty" json:"id,omitempty"`
	LocationChanged                        bool               `url:"locationChanged,omitempty" json:"locationChanged,omitempty"`
	Optional                               bool               `url:"optional,omitempty" json:"optional,omitempty"`
	SchedulerRemark                        string             `url:"schedulerRemark,omitempty" json:"schedulerRemark,omitempty"`
	Start                                  int64              `url:"start" json:"start"`
	StartTimeSlot                          int                `url:"startTimeSlot,omitempty" json:"startTimeSlot,omitempty"`
	StartTimeSlotName                      string             `url:"startTimeSlotName,omitempty" json:"startTimeSlotName,omitempty"`
	Subjects                               []string           `url:"subjects,omitempty" json:"subjects,omitempty"`
	TeacherChanged                         bool               `url:"teacherChanged,omitempty" json:"teacherChanged,omitempty"`
	Teachers                               []string           `url:"teachers,omitempty" json:"teachers,omitempty"`
	TimeChanged                            bool               `url:"timeChanged,omitempty" json:"timeChanged,omitempty"`
	Type                                   string             `url:"type,omitempty" json:"type,omitempty"`
	Valid                                  bool               `url:"valid,omitempty" json:"valid,omitempty"`
	Changed                                string             `url:"changed,omitempty" json:"changed,omitempty"`
	Fields                                 string             `url:"fields,omitempty" json:"fields,omitempty"`
	IncludeHidden                          string             `url:"includeHidden,omitempty" json:"includeHidden,omitempty"`
	ModifiedSince                          string             `url:"modifiedSince,omitempty" json:"modifiedSince,omitempty"`
	SchoolInSchoolYear                     SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Base                                   string             `url:"base,omitempty" json:"base,omitempty"`
	Branch                                 string             `url:"branch,omitempty" json:"branch,omitempty"`
	ChoosableInDepartments                 string             `url:"choosableInDepartments,omitempty" json:"choosableInDepartments,omitempty"`
	Creator                                string             `url:"creator,omitempty" json:"creator,omitempty"`
	ExtraStudentSource                     string             `url:"extraStudentSource,omitempty" json:"extraStudentSource,omitempty"`
	GroupsInDepartments                    []int              `url:"groupsInDepartments,omitempty" json:"groupsInDepartments,omitempty"`
	IgnoreSubstitutions                    string             `url:"ignoreSubstitutions,omitempty" json:"ignoreSubstitutions,omitempty"`
	LocationsOfBranch                      []int              `url:"locationsOfBranch,omitempty" json:"locationsOfBranch,omitempty"`
	Modified                               bool               `url:"modified,omitempty" json:"modified,omitempty"`
	Moved                                  bool               `url:"moved,omitempty" json:"moved,omitempty"`
	New                                    bool               `url:"new,omitempty" json:"new,omitempty"`
	AppointmentModifiedSince               string             `url:"appointmentModifiedSince,omitempty" json:"appointmentModifiedSince,omitempty"`
	ContainsStudentsFromDepartmentOfBranch string             `url:"containsStudentsFromDepartmentOfBranch,omitempty" json:"containsStudentsFromDepartmentOfBranch,omitempty"`
	ContainsStudentsFromGroupInDepartment  string             `url:"containsStudentsFromGroupInDepartment,omitempty" json:"containsStudentsFromGroupInDepartment,omitempty"`
	ContainsTeachersFromTeacherTeam        string             `url:"containsTeachersFromTeacherTeam,omitempty" json:"containsTeachersFromTeacherTeam,omitempty"`
	DepartmentOfBranch                     string             `url:"departmentOfBranch,omitempty" json:"departmentOfBranch,omitempty"`
	EndWeekOffset                          string             `url:"endWeekOffset,omitempty" json:"endWeekOffset,omitempty"`
	ExtraStudentSourceForDepartment        string             `url:"extraStudentSourceForDepartment,omitempty" json:"extraStudentSourceForDepartment,omitempty"`
	HasCreator                             string             `url:"hasCreator,omitempty" json:"hasCreator,omitempty"`
	PossibleStudents                       string             `url:"possibleStudents,omitempty" json:"possibleStudents,omitempty"`
	StartWeekOffset                        string             `url:"startWeekOffset,omitempty" json:"startWeekOffset,omitempty"`
	User                                   string             `url:"user,omitempty" json:"user,omitempty"`
	Locations                              []string           `url:"locations,omitempty" json:"locations,omitempty"`
}

AppointmentsParams holds the query filters for GetAppointments and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type AppointmentsResponse

type AppointmentsResponse struct {
	Response struct {
		Status int                  `json:"status"`
		Data   []AppointmentsParams `json:"data"`
	} `json:"response"`
}

AppointmentsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type AuthService

type AuthService struct {
	// contains filtered or unexported fields
}

AuthService handles the OAuth exchange used by the Zermelo API.

func (*AuthService) CodeToBearer

func (a *AuthService) CodeToBearer(code int) (string, error)

CodeToBearer exchanges a single use authentication code for a bearer token. Authentication codes can only be used once and expire quickly, so prefer reusing a token that you already have.

func (*AuthService) SetBearerToken

func (a *AuthService) SetBearerToken(bearer string)

SetBearerToken stores a bearer token that the client sends with every request.

type BranchesOfSchoolsParams

type BranchesOfSchoolsParams struct {
	Archived           bool               `url:"archived,omitempty" json:"archived,omitempty"`
	Branch             string             `url:"branch,omitempty" json:"branch,omitempty"`
	ID                 int                `url:"id,omitempty" json:"id,omitempty"`
	Name               string             `url:"name,omitempty" json:"name,omitempty"`
	SchoolInSchoolYear SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	SchoolYear         int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	Fields             string             `url:"fields,omitempty" json:"fields,omitempty"`
}

BranchesOfSchoolsParams holds the query filters for GetBranchesOfSchools and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type BranchesOfSchoolsResponse

type BranchesOfSchoolsResponse struct {
	Response struct {
		Status int                       `json:"status"`
		Data   []BranchesOfSchoolsParams `json:"data"`
	} `json:"response"`
}

BranchesOfSchoolsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client talks to a single Zermelo portal. It is safe to reuse across requests and is safe for concurrent use.

func New

func New(baseURL string) *Client

New returns a Client for the portal at baseURL, for example https://example.zportal.nl. The client has no credentials yet, set one with Auth().SetBearerToken or obtain one with Auth().CodeToBearer.

func (*Client) Auth

func (c *Client) Auth() *AuthService

Auth returns the authentication service for this client.

func (*Client) GetAppointments

func (c *Client) GetAppointments(param AppointmentsParams) ([]AppointmentsParams, error)

GetAppointments calls /api/v3/appointments and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetBranchesOfSchools

func (c *Client) GetBranchesOfSchools(param BranchesOfSchoolsParams) ([]BranchesOfSchoolsParams, error)

GetBranchesOfSchools calls /api/v3/branchesofschools and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetContracts

func (c *Client) GetContracts(param ContractsParams) ([]ContractsParams, error)

GetContracts calls /api/v3/contracts and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetCourses

func (c *Client) GetCourses(param CoursesParams) ([]CoursesParams, error)

GetCourses calls /api/v3/courses and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetDepartmentsOfBranches

func (c *Client) GetDepartmentsOfBranches(param DepartmentsOfBranchesParams) ([]DepartmentsOfBranchesParams, error)

GetDepartmentsOfBranches calls /api/v3/departmentsofbranches and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetEmployeeAbsences

func (c *Client) GetEmployeeAbsences(param EmployeeAbsencesParams) ([]EmployeeAbsencesParams, error)

GetEmployeeAbsences calls /api/v3/employeeabsences and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetEmployees

func (c *Client) GetEmployees(param EmployeesParams) ([]EmployeesParams, error)

GetEmployees calls /api/v3/employees and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetEnrollmentStatus

func (c *Client) GetEnrollmentStatus(param EnrollmentStatusParams) ([]EnrollmentStatusParams, error)

GetEnrollmentStatus calls /api/v3/enrollmentstatus and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetFamilyMembers

func (c *Client) GetFamilyMembers(param FamilyMembersParams) ([]FamilyMembersParams, error)

GetFamilyMembers calls /api/v3/familymembers and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetGroupsInDepartments

func (c *Client) GetGroupsInDepartments(param GroupsInDepartmentsParams) ([]GroupsInDepartmentsParams, error)

GetGroupsInDepartments calls /api/v3/groupindepartments and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetHolidays

func (c *Client) GetHolidays(param HolidaysParams) ([]HolidaysParams, error)

GetHolidays calls /api/v3/holidays and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetJobs

func (c *Client) GetJobs(param JobsParams) ([]JobsParams, error)

GetJobs calls /api/v3/jobs and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetLiveSchedule

func (c *Client) GetLiveSchedule(param LiveScheduleParams) ([]LiveScheduleParams, error)

GetLiveSchedule calls /api/v3/liveschedule and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetLocationsOfBranches

func (c *Client) GetLocationsOfBranches(param LocationsOfBranchesParams) ([]LocationsOfBranchesParams, error)

GetLocationsOfBranches calls /api/v3/locationofbranches and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetParentTeacherNights

func (c *Client) GetParentTeacherNights(param ParentTeacherNightsParams) ([]ParentTeacherNightsParams, error)

GetParentTeacherNights calls /api/v3/parentteachernights and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetParentToSchedulerRemarks

func (c *Client) GetParentToSchedulerRemarks(param ParentToSchedulerRemarksParams) ([]ParentToSchedulerRemarksParams, error)

GetParentToSchedulerRemarks calls /api/v3/parenttoschedulerremarks and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetSchoolsInSchoolYears

func (c *Client) GetSchoolsInSchoolYears(param SchoolsInSchoolYearsParams) ([]SchoolsInSchoolYearsParams, error)

GetSchoolsInSchoolYears calls /api/v3/schoolsinschoolyears and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetStudents

func (c *Client) GetStudents(param StudentsParams) ([]StudentsParams, error)

GetStudents calls /api/v3/students and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetStudentsInDepartments

func (c *Client) GetStudentsInDepartments(param StudentsInDepartmentsParams) ([]StudentsInDepartmentsParams, error)

GetStudentsInDepartments calls /api/v3/studentsindepartments and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetTalkDays

func (c *Client) GetTalkDays(param TalkDaysParams) ([]TalkDaysParams, error)

GetTalkDays calls /api/v3/talkdays and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetTalkTimeBlockAbsenceParent

func (c *Client) GetTalkTimeBlockAbsenceParent(param TalkTimeBlockAbsenceParentParams) ([]TalkTimeBlockAbsenceParentParams, error)

GetTalkTimeBlockAbsenceParent calls /api/v3/talktimeblockabsenceparent and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetTalkTimeBlocks

func (c *Client) GetTalkTimeBlocks(param TalkTimeBlocksParams) ([]TalkTimeBlocksParams, error)

GetTalkTimeBlocks calls /api/v3/talktimeblocks and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

func (*Client) GetUsers

func (c *Client) GetUsers(param UsersParams) ([]UsersParams, error)

GetUsers calls /api/v3/users and returns the records that match param. A non nil *APIError is returned when the portal rejects the request.

type ContractsParams

type ContractsParams struct {
	Employee                                         string             `url:"employee,omitempty" json:"employee,omitempty"`
	End                                              string             `url:"end,omitempty" json:"end,omitempty"`
	ID                                               int                `url:"id,omitempty" json:"id,omitempty"`
	SchoolInSchoolYear                               SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Start                                            string             `url:"start,omitempty" json:"start,omitempty"`
	AvailabilityManually                             bool               `url:"availabilityManually,omitempty" json:"availabilityManually,omitempty"`
	AvailableDayParts                                int                `url:"availableDayParts,omitempty" json:"availableDayParts,omitempty"`
	AvailableDays                                    int                `url:"availableDays,omitempty" json:"availableDays,omitempty"`
	ClockHoursBalance                                int                `url:"clockHoursBalance,omitempty" json:"clockHoursBalance,omitempty"`
	ClockHoursBalancePreviousYear                    int                `url:"clockHoursBalancePreviousYear,omitempty" json:"clockHoursBalancePreviousYear,omitempty"`
	ClockHoursGeneralTasks                           int                `url:"clockHoursGeneralTasks,omitempty" json:"clockHoursGeneralTasks,omitempty"`
	ClockHoursGeneralTasksManually                   bool               `url:"clockHoursGeneralTasksManually,omitempty" json:"clockHoursGeneralTasksManually,omitempty"`
	ClockHoursGross                                  int                `url:"clockHoursGross,omitempty" json:"clockHoursGross,omitempty"`
	ClockHoursLessonRelief                           int                `url:"clockHoursLessonRelief,omitempty" json:"clockHoursLessonRelief,omitempty"`
	ClockHoursLessonReliefManually                   bool               `url:"clockHoursLessonReliefManually,omitempty" json:"clockHoursLessonReliefManually,omitempty"`
	ClockHoursLessons                                int                `url:"clockHoursLessons,omitempty" json:"clockHoursLessons,omitempty"`
	ClockHoursLessonsManually                        bool               `url:"clockHoursLessonsManually,omitempty" json:"clockHoursLessonsManually,omitempty"`
	ClockHoursLessonsMax                             int                `url:"clockHoursLessonsMax,omitempty" json:"clockHoursLessonsMax,omitempty"`
	ClockHoursNet                                    int                `url:"clockHoursNet,omitempty" json:"clockHoursNet,omitempty"`
	ClockHoursNetManually                            bool               `url:"clockHoursNetManually,omitempty" json:"clockHoursNetManually,omitempty"`
	ClockHoursProfessionalDevelopment                int                `url:"clockHoursProfessionalDevelopment,omitempty" json:"clockHoursProfessionalDevelopment,omitempty"`
	ClockHoursProfessionalDevelopmentManually        bool               `url:"clockHoursProfessionalDevelopmentManually,omitempty" json:"clockHoursProfessionalDevelopmentManually,omitempty"`
	ClockHoursTaskRelief                             int                `url:"clockHoursTaskRelief,omitempty" json:"clockHoursTaskRelief,omitempty"`
	ClockHoursTaskReliefManually                     bool               `url:"clockHoursTaskReliefManually,omitempty" json:"clockHoursTaskReliefManually,omitempty"`
	ClockHoursTasks                                  int                `url:"clockHoursTasks,omitempty" json:"clockHoursTasks,omitempty"`
	ClockHoursToAuxiliaryProjects                    int                `url:"clockHoursToAuxiliaryProjects,omitempty" json:"clockHoursToAuxiliaryProjects,omitempty"`
	CommencementSchool                               string             `url:"commencementSchool,omitempty" json:"commencementSchool,omitempty"`
	CommencementTeaching                             string             `url:"commencementTeaching,omitempty" json:"commencementTeaching,omitempty"`
	CompensationAbsenceHours                         int                `url:"compensationAbsenceHours,omitempty" json:"compensationAbsenceHours,omitempty"`
	DateOfBirth                                      string             `url:"dateOfBirth,omitempty" json:"dateOfBirth,omitempty"`
	DefaultFunctionCategory                          string             `url:"defaultFunctionCategory,omitempty" json:"defaultFunctionCategory,omitempty"`
	DevelopmentTime                                  int                `url:"developmentTime,omitempty" json:"developmentTime,omitempty"`
	DevelopmentTimeBudget                            int                `url:"developmentTimeBudget,omitempty" json:"developmentTimeBudget,omitempty"`
	DevelopmentTimeManually                          bool               `url:"developmentTimeManually,omitempty" json:"developmentTimeManually,omitempty"`
	DurationManually                                 bool               `url:"durationManually,omitempty" json:"durationManually,omitempty"`
	Email                                            string             `url:"email,omitempty" json:"email,omitempty"`
	EmployeeNumber                                   string             `url:"employeeNumber,omitempty" json:"employeeNumber,omitempty"`
	EmployerCostBasisMaintenance                     int                `url:"employerCostBasisMaintenance,omitempty" json:"employerCostBasisMaintenance,omitempty"`
	EmployerCostBasisPlanning                        int                `url:"employerCostBasisPlanning,omitempty" json:"employerCostBasisPlanning,omitempty"`
	EmployerCostLeaveReductionMaintenance            int                `url:"employerCostLeaveReductionMaintenance,omitempty" json:"employerCostLeaveReductionMaintenance,omitempty"`
	EmployerCostLeaveReductionPlanning               int                `url:"employerCostLeaveReductionPlanning,omitempty" json:"employerCostLeaveReductionPlanning,omitempty"`
	EmployerCostPostingBalanceMaintenance            int                `url:"employerCostPostingBalanceMaintenance,omitempty" json:"employerCostPostingBalanceMaintenance,omitempty"`
	EmployerCostPostingBalancePlanning               int                `url:"employerCostPostingBalancePlanning,omitempty" json:"employerCostPostingBalancePlanning,omitempty"`
	EmployerCostTotalMaintenance                     int                `url:"employerCostTotalMaintenance,omitempty" json:"employerCostTotalMaintenance,omitempty"`
	EmployerCostTotalPlanning                        int                `url:"employerCostTotalPlanning,omitempty" json:"employerCostTotalPlanning,omitempty"`
	EmployerCostsPercentage                          float64            `url:"employerCostsPercentage,omitempty" json:"employerCostsPercentage,omitempty"`
	ExtensionsDevelopmentTime                        int                `url:"extensionsDevelopmentTime,omitempty" json:"extensionsDevelopmentTime,omitempty"`
	ExtensionsGeneralTasks                           int                `url:"extensionsGeneralTasks,omitempty" json:"extensionsGeneralTasks,omitempty"`
	ExtensionsGeneralTasksManually                   bool               `url:"extensionsGeneralTasksManually,omitempty" json:"extensionsGeneralTasksManually,omitempty"`
	ExtensionsProfessionalDevelopment                int                `url:"extensionsProfessionalDevelopment,omitempty" json:"extensionsProfessionalDevelopment,omitempty"`
	ExtensionsProfessionalDevelopmentManually        bool               `url:"extensionsProfessionalDevelopmentManually,omitempty" json:"extensionsProfessionalDevelopmentManually,omitempty"`
	ExtraWork                                        int                `url:"extraWork,omitempty" json:"extraWork,omitempty"`
	ExtraWorkAllowance                               int                `url:"extraWorkAllowance,omitempty" json:"extraWorkAllowance,omitempty"`
	ExtraWorkAllowanceBasis                          int                `url:"extraWorkAllowanceBasis,omitempty" json:"extraWorkAllowanceBasis,omitempty"`
	FirstName                                        string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	FteNet                                           float64            `url:"fteNet,omitempty" json:"fteNet,omitempty"`
	FtePermanent                                     float64            `url:"ftePermanent,omitempty" json:"ftePermanent,omitempty"`
	FteTemporary                                     float64            `url:"fteTemporary,omitempty" json:"fteTemporary,omitempty"`
	FteToAuxiliaryProjects                           float64            `url:"fteToAuxiliaryProjects,omitempty" json:"fteToAuxiliaryProjects,omitempty"`
	FteYearLeave                                     float64            `url:"fteYearLeave,omitempty" json:"fteYearLeave,omitempty"`
	FullMonthlySalary                                int                `url:"fullMonthlySalary,omitempty" json:"fullMonthlySalary,omitempty"`
	Gender                                           string             `url:"gender,omitempty" json:"gender,omitempty"`
	HasLessonReliefStarter                           bool               `url:"hasLessonReliefStarter,omitempty" json:"hasLessonReliefStarter,omitempty"`
	HourlySalary                                     float64            `url:"hourlySalary,omitempty" json:"hourlySalary,omitempty"`
	HourlySalaryManually                             bool               `url:"hourlySalaryManually,omitempty" json:"hourlySalaryManually,omitempty"`
	IsMainContract                                   bool               `url:"isMainContract,omitempty" json:"isMainContract,omitempty"`
	LastName                                         string             `url:"lastName,omitempty" json:"lastName,omitempty"`
	LeavesDevelopmentTime                            int                `url:"leavesDevelopmentTime,omitempty" json:"leavesDevelopmentTime,omitempty"`
	LeavesGeneralTasks                               int                `url:"leavesGeneralTasks,omitempty" json:"leavesGeneralTasks,omitempty"`
	LeavesGeneralTasksManually                       bool               `url:"leavesGeneralTasksManually,omitempty" json:"leavesGeneralTasksManually,omitempty"`
	LeavesProfessionalDevelopment                    int                `url:"leavesProfessionalDevelopment,omitempty" json:"leavesProfessionalDevelopment,omitempty"`
	LeavesProfessionalDevelopmentManually            bool               `url:"leavesProfessionalDevelopmentManually,omitempty" json:"leavesProfessionalDevelopmentManually,omitempty"`
	LessonHoursSectionAssignments                    float64            `url:"lessonHoursSectionAssignments,omitempty" json:"lessonHoursSectionAssignments,omitempty"`
	LessonHoursSurplusAllowance                      int                `url:"lessonHoursSurplusAllowance,omitempty" json:"lessonHoursSurplusAllowance,omitempty"`
	LessonHoursSurplusAllowanceManually              bool               `url:"lessonHoursSurplusAllowanceManually,omitempty" json:"lessonHoursSurplusAllowanceManually,omitempty"`
	LessonHoursSurplusAllowanceViaSectionAssignments int                `` /* 130-byte string literal not displayed */
	LessonHoursTeachingAssignments                   float64            `url:"lessonHoursTeachingAssignments,omitempty" json:"lessonHoursTeachingAssignments,omitempty"`
	LessonReducingTasks                              int                `url:"lessonReducingTasks,omitempty" json:"lessonReducingTasks,omitempty"`
	LessonReplacement                                int                `url:"lessonReplacement,omitempty" json:"lessonReplacement,omitempty"`
	LessonSpace                                      int                `url:"lessonSpace,omitempty" json:"lessonSpace,omitempty"`
	LessonsMax                                       float64            `url:"lessonsMax,omitempty" json:"lessonsMax,omitempty"`
	LessonsMaxManually                               bool               `url:"lessonsMaxManually,omitempty" json:"lessonsMaxManually,omitempty"`
	LessonsToPlan                                    float64            `url:"lessonsToPlan,omitempty" json:"lessonsToPlan,omitempty"`
	MainBranchOfSchool                               int                `url:"mainBranchOfSchool,omitempty" json:"mainBranchOfSchool,omitempty"`
	MainContract                                     int                `url:"mainContract,omitempty" json:"mainContract,omitempty"`
	MaintenanceJobClockHoursBudget                   int                `url:"maintenanceJobClockHoursBudget,omitempty" json:"maintenanceJobClockHoursBudget,omitempty"`
	MaintenanceJobFteBudget                          float64            `url:"maintenanceJobFteBudget,omitempty" json:"maintenanceJobFteBudget,omitempty"`
	MaintenanceLeaveClockHoursBudget                 int                `url:"maintenanceLeaveClockHoursBudget,omitempty" json:"maintenanceLeaveClockHoursBudget,omitempty"`
	MaintenanceLeaveFteBudget                        float64            `url:"maintenanceLeaveFteBudget,omitempty" json:"maintenanceLeaveFteBudget,omitempty"`
	PersonalBudgetStatus                             string             `url:"personalBudgetStatus,omitempty" json:"personalBudgetStatus,omitempty"`
	PostedBranches                                   []int              `url:"postedBranches,omitempty" json:"postedBranches,omitempty"`
	Postings                                         []int              `url:"postings,omitempty" json:"postings,omitempty"`
	Prefix                                           string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	PreviousSalaryScale                              int                `url:"previousSalaryScale,omitempty" json:"previousSalaryScale,omitempty"`
	PreviousSalaryStep                               int                `url:"previousSalaryStep,omitempty" json:"previousSalaryStep,omitempty"`
	PrivateComment                                   string             `url:"privateComment,omitempty" json:"privateComment,omitempty"`
	PublicComment                                    string             `url:"publicComment,omitempty" json:"publicComment,omitempty"`
	ReplacementBalance                               int                `url:"replacementBalance,omitempty" json:"replacementBalance,omitempty"`
	ReservationReplacement                           int                `url:"reservationReplacement,omitempty" json:"reservationReplacement,omitempty"`
	SalaryScale                                      int                `url:"salaryScale,omitempty" json:"salaryScale,omitempty"`
	SalaryStep                                       int                `url:"salaryStep,omitempty" json:"salaryStep,omitempty"`
	School                                           int                `url:"school,omitempty" json:"school,omitempty"`
	SchoolInSchoolYearName                           string             `url:"schoolInSchoolYearName,omitempty" json:"schoolInSchoolYearName,omitempty"`
	SchoolName                                       string             `url:"schoolName,omitempty" json:"schoolName,omitempty"`
	SchoolYear                                       int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	SubstitutionQuota                                int                `url:"substitutionQuota,omitempty" json:"substitutionQuota,omitempty"`
	SubstitutionQuotaManually                        bool               `url:"substitutionQuotaManually,omitempty" json:"substitutionQuotaManually,omitempty"`
	TaskBalance                                      int                `url:"taskBalance,omitempty" json:"taskBalance,omitempty"`
	TaskLessonSpace                                  int                `url:"taskLessonSpace,omitempty" json:"taskLessonSpace,omitempty"`
	TaskReplacement                                  int                `url:"taskReplacement,omitempty" json:"taskReplacement,omitempty"`
	TaskSpace                                        int                `url:"taskSpace,omitempty" json:"taskSpace,omitempty"`
	TaskSurplus                                      int                `url:"taskSurplus,omitempty" json:"taskSurplus,omitempty"`
	TeacherTeam                                      int                `url:"teacherTeam,omitempty" json:"teacherTeam,omitempty"`
	Fields                                           string             `url:"fields,omitempty" json:"fields,omitempty"`
	BranchOfSchool                                   int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	RelatedToEmployee                                string             `url:"relatedToEmployee,omitempty" json:"relatedToEmployee,omitempty"`
	SchoolFunction                                   string             `url:"schoolFunction,omitempty" json:"schoolFunction,omitempty"`
	Section                                          int                `url:"section,omitempty" json:"section,omitempty"`
	SectionOfBranch                                  int                `url:"sectionOfBranch,omitempty" json:"sectionOfBranch,omitempty"`
	Year                                             int                `url:"year,omitempty" json:"year,omitempty"`
}

ContractsParams holds the query filters for GetContracts and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type ContractsResponse

type ContractsResponse struct {
	Response struct {
		Status int               `json:"status"`
		Data   []ContractsParams `json:"data"`
	} `json:"response"`
}

ContractsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type CoursesParams

type CoursesParams struct {
	BranchCode            string             `url:"branchCode,omitempty" json:"branchCode,omitempty"`
	ChoosableInDepartment int                `url:"choosableInDepartment,omitempty" json:"choosableInDepartment,omitempty"`
	DepartmentCode        string             `url:"departmentCode,omitempty" json:"departmentCode,omitempty"`
	EducationTypes        []string           `url:"educationTypes,omitempty" json:"educationTypes,omitempty"`
	GroupName             string             `url:"groupName,omitempty" json:"groupName,omitempty"`
	ID                    int                `url:"id,omitempty" json:"id,omitempty"`
	ILTCode               int                `url:"iltCode,omitempty" json:"iltCode,omitempty"`
	SchoolYear            int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	Students              []string           `url:"students,omitempty" json:"students,omitempty"`
	SubjectCode           string             `url:"subjectCode,omitempty" json:"subjectCode,omitempty"`
	SubjectName           string             `url:"subjectName,omitempty" json:"subjectName,omitempty"`
	Teachers              []string           `url:"teachers,omitempty" json:"teachers,omitempty"`
	YearOfEducation       int                `url:"yearOfEducation,omitempty" json:"yearOfEducation,omitempty"`
	Fields                string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear    SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Student               string             `url:"student,omitempty" json:"student,omitempty"`
	Teacher               string             `url:"teacher,omitempty" json:"teacher,omitempty"`
}

CoursesParams holds the query filters for GetCourses and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type CoursesResponse

type CoursesResponse struct {
	Response struct {
		Status int             `json:"status"`
		Data   []CoursesParams `json:"data"`
	} `json:"response"`
}

CoursesResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type DepartmentsOfBranchesParams

type DepartmentsOfBranchesParams struct {
	BranchOfSchool                        int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	BranchOfSchoolCode                    string             `url:"branchOfSchoolCode,omitempty" json:"branchOfSchoolCode,omitempty"`
	ClockHoursPerLesson                   float64            `url:"clockHoursPerLesson,omitempty" json:"clockHoursPerLesson,omitempty"`
	ClockHoursPerLessonManually           bool               `url:"clockHoursPerLessonManually,omitempty" json:"clockHoursPerLessonManually,omitempty"`
	Code                                  string             `url:"code,omitempty" json:"code,omitempty"`
	DefaultEnrollmentValidationType       string             `url:"defaultEnrollmentValidationType,omitempty" json:"defaultEnrollmentValidationType,omitempty"`
	DefaultMaximalLessonEnrollmentPerWeek int                `url:"defaultMaximalLessonEnrollmentPerWeek,omitempty" json:"defaultMaximalLessonEnrollmentPerWeek,omitempty"`
	DefaultMaximalLessonsPerWeek          int                `url:"defaultMaximalLessonsPerWeek,omitempty" json:"defaultMaximalLessonsPerWeek,omitempty"`
	DefaultMinimalLessonEnrollmentPerWeek int                `url:"defaultMinimalLessonEnrollmentPerWeek,omitempty" json:"defaultMinimalLessonEnrollmentPerWeek,omitempty"`
	DefaultMinimalLessonsPerWeek          int                `url:"defaultMinimalLessonsPerWeek,omitempty" json:"defaultMinimalLessonsPerWeek,omitempty"`
	EducationType                         string             `url:"educationType,omitempty" json:"educationType,omitempty"`
	Educations                            []int              `url:"educations,omitempty" json:"educations,omitempty"`
	ExcludedSegments                      []int              `url:"excludedSegments,omitempty" json:"excludedSegments,omitempty"`
	ExpectedInflow                        float64            `url:"expectedInflow,omitempty" json:"expectedInflow,omitempty"`
	ExpectedInflowManually                bool               `url:"expectedInflowManually,omitempty" json:"expectedInflowManually,omitempty"`
	ExpectedMainGroupCount                int                `url:"expectedMainGroupCount,omitempty" json:"expectedMainGroupCount,omitempty"`
	ExpectedMainGroupCountManually        bool               `url:"expectedMainGroupCountManually,omitempty" json:"expectedMainGroupCountManually,omitempty"`
	ExpectedStudentCount                  float64            `url:"expectedStudentCount,omitempty" json:"expectedStudentCount,omitempty"`
	ExpectedStudentCountManually          bool               `url:"expectedStudentCountManually,omitempty" json:"expectedStudentCountManually,omitempty"`
	ID                                    int                `url:"id,omitempty" json:"id,omitempty"`
	MainGroupAuthority                    string             `url:"mainGroupAuthority,omitempty" json:"mainGroupAuthority,omitempty"`
	MaxGroupSize                          int                `url:"maxGroupSize,omitempty" json:"maxGroupSize,omitempty"`
	MaxGroupSizeManually                  bool               `url:"maxGroupSizeManually,omitempty" json:"maxGroupSizeManually,omitempty"`
	MaximalExtraEnrollmentPerSubject      int                `url:"maximalExtraEnrollmentPerSubject,omitempty" json:"maximalExtraEnrollmentPerSubject,omitempty"`
	MinimalExtraEnrollmentPerSubject      int                `url:"minimalExtraEnrollmentPerSubject,omitempty" json:"minimalExtraEnrollmentPerSubject,omitempty"`
	ParticipationThreshold                float64            `url:"participationThreshold,omitempty" json:"participationThreshold,omitempty"`
	Profiles                              []int              `url:"profiles,omitempty" json:"profiles,omitempty"`
	PrognosticInflow                      float64            `url:"prognosticInflow,omitempty" json:"prognosticInflow,omitempty"`
	PrognosticStudentCount                float64            `url:"prognosticStudentCount,omitempty" json:"prognosticStudentCount,omitempty"`
	SchoolInSchoolYear                    SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	SchoolInSchoolYearID                  int                `url:"schoolInSchoolYearId,omitempty" json:"schoolInSchoolYearId,omitempty"`
	SchoolInSchoolYearName                string             `url:"schoolInSchoolYearName,omitempty" json:"schoolInSchoolYearName,omitempty"`
	ScroungeSegments                      []int              `url:"scroungeSegments,omitempty" json:"scroungeSegments,omitempty"`
	StudentCount                          int                `url:"studentCount,omitempty" json:"studentCount,omitempty"`
	StudentCountCorrection                float64            `url:"studentCountCorrection,omitempty" json:"studentCountCorrection,omitempty"`
	StudentCountCorrectionManually        bool               `url:"studentCountCorrectionManually,omitempty" json:"studentCountCorrectionManually,omitempty"`
	StudentsMayViewSubjectSelections      bool               `url:"studentsMayViewSubjectSelections,omitempty" json:"studentsMayViewSubjectSelections,omitempty"`
	SubjectSelectionDeadline              string             `url:"subjectSelectionDeadline,omitempty" json:"subjectSelectionDeadline,omitempty"`
	TeacherTeams                          []int              `url:"teacherTeams,omitempty" json:"teacherTeams,omitempty"`
	TeachingLevel                         string             `url:"teachingLevel,omitempty" json:"teachingLevel,omitempty"`
	WeekTimeTable                         int                `url:"weekTimeTable,omitempty" json:"weekTimeTable,omitempty"`
	YearOfEducation                       int                `url:"yearOfEducation,omitempty" json:"yearOfEducation,omitempty"`
	Fields                                string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolYear                            int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	TeacherTeam                           int                `url:"teacherTeam,omitempty" json:"teacherTeam,omitempty"`
}

DepartmentsOfBranchesParams holds the query filters for GetDepartmentsOfBranches and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type DepartmentsOfBranchesResponse

type DepartmentsOfBranchesResponse struct {
	Response struct {
		Status int                           `json:"status"`
		Data   []DepartmentsOfBranchesParams `json:"data"`
	} `json:"response"`
}

DepartmentsOfBranchesResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type EmployeeAbsencesParams

type EmployeeAbsencesParams struct {
	AbsenceDuration         float64            `url:"absenceDuration,omitempty" json:"absenceDuration,omitempty"`
	AbsenceDurationManually bool               `url:"absenceDurationManually,omitempty" json:"absenceDurationManually,omitempty"`
	AbsenceType             int                `url:"absenceType,omitempty" json:"absenceType,omitempty"`
	AbsenceTypeCode         string             `url:"absenceTypeCode,omitempty" json:"absenceTypeCode,omitempty"`
	AbsenceTypePriority     int                `url:"absenceTypePriority,omitempty" json:"absenceTypePriority,omitempty"`
	Contract                int                `url:"contract,omitempty" json:"contract,omitempty"`
	Created                 int64              `url:"created,omitempty" json:"created,omitempty"`
	Definitive              bool               `url:"definitive,omitempty" json:"definitive,omitempty"`
	Employee                string             `url:"employee,omitempty" json:"employee,omitempty"`
	End                     int64              `url:"end,omitempty" json:"end,omitempty"`
	FirstName               string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	ID                      int                `url:"id,omitempty" json:"id,omitempty"`
	LastModified            int64              `url:"lastModified,omitempty" json:"lastModified,omitempty"`
	LastModifiedBy          string             `url:"lastModifiedBy,omitempty" json:"lastModifiedBy,omitempty"`
	LastName                string             `url:"lastName,omitempty" json:"lastName,omitempty"`
	Leave                   int                `url:"leave,omitempty" json:"leave,omitempty"`
	LinkedToStructuralLeave bool               `url:"linkedToStructuralLeave,omitempty" json:"linkedToStructuralLeave,omitempty"`
	Prefix                  string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	PrivateComment          string             `url:"privateComment,omitempty" json:"privateComment,omitempty"`
	Start                   int64              `url:"start,omitempty" json:"start,omitempty"`
	Fields                  string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear      SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	BranchOfSchool          int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	EndDate                 string             `url:"endDate,omitempty" json:"endDate,omitempty"`
	EndWeek                 string             `url:"endWeek,omitempty" json:"endWeek,omitempty"`
	RelatedToEmployee       string             `url:"relatedToEmployee,omitempty" json:"relatedToEmployee,omitempty"`
	SectionOfBranch         int                `url:"sectionOfBranch,omitempty" json:"sectionOfBranch,omitempty"`
	StartDate               string             `url:"startDate,omitempty" json:"startDate,omitempty"`
	StartWeek               string             `url:"startWeek,omitempty" json:"startWeek,omitempty"`
	TeacherTeam             int                `url:"teacherTeam,omitempty" json:"teacherTeam,omitempty"`
	Unlinked                bool               `url:"unlinked,omitempty" json:"unlinked,omitempty"`
}

EmployeeAbsencesParams holds the query filters for GetEmployeeAbsences and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type EmployeeAbsencesResponse

type EmployeeAbsencesResponse struct {
	Response struct {
		Status int                      `json:"status"`
		Data   []EmployeeAbsencesParams `json:"data"`
	} `json:"response"`
}

EmployeeAbsencesResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type EmployeesParams

type EmployeesParams struct {
	CommencementSchool   string             `url:"commencementSchool,omitempty" json:"commencementSchool,omitempty"`
	CommencementTeaching string             `url:"commencementTeaching,omitempty" json:"commencementTeaching,omitempty"`
	City                 string             `url:"city,omitempty" json:"city,omitempty"`
	Created              int64              `url:"created,omitempty" json:"created,omitempty"`
	DateOfBirth          string             `url:"dateOfBirth,omitempty" json:"dateOfBirth,omitempty"`
	Email                string             `url:"email,omitempty" json:"email,omitempty"`
	EmployeeNumber       string             `url:"employeeNumber,omitempty" json:"employeeNumber,omitempty"`
	FirstName            string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	Gender               string             `url:"gender,omitempty" json:"gender,omitempty"`
	HouseNumber          string             `url:"houseNumber,omitempty" json:"houseNumber,omitempty"`
	LastModified         int64              `url:"lastModified,omitempty" json:"lastModified,omitempty"`
	LastModifiedBy       string             `url:"lastModifiedBy,omitempty" json:"lastModifiedBy,omitempty"`
	LastName             string             `url:"lastName,omitempty" json:"lastName,omitempty"`
	PostalCode           string             `url:"postalCode,omitempty" json:"postalCode,omitempty"`
	Prefix               string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	Roles                []string           `url:"roles,omitempty" json:"roles,omitempty"`
	Street               string             `url:"street,omitempty" json:"street,omitempty"`
	User                 string             `url:"user,omitempty" json:"user,omitempty"`
	UserCode             string             `url:"userCode,omitempty" json:"userCode,omitempty"`
	Fields               string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear   SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	BranchOfSchool       int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	Archived             bool               `url:"archived,omitempty" json:"archived,omitempty"`
	HasPassword          bool               `url:"hasPassword,omitempty" json:"hasPassword,omitempty"`
	Ldap                 bool               `url:"ldap,omitempty" json:"ldap,omitempty"`
	TeacherTeam          int                `url:"teacherTeam,omitempty" json:"teacherTeam,omitempty"`
}

EmployeesParams holds the query filters for GetEmployees and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type EmployeesResponse

type EmployeesResponse struct {
	Response struct {
		Status int               `json:"status"`
		Data   []EmployeesParams `json:"data"`
	} `json:"response"`
}

EmployeesResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type EnrollmentStatusParams

type EnrollmentStatusParams struct {
	ActivityEnrollment          int                `url:"activityEnrollment,omitempty" json:"activityEnrollment,omitempty"`
	ConcurrentPlannedAttendance int                `url:"concurrentPlannedAttendance,omitempty" json:"concurrentPlannedAttendance,omitempty"`
	DepartmentOfBranch          int                `url:"departmentOfBranch,omitempty" json:"departmentOfBranch,omitempty"`
	EnrollmentValidationType    string             `url:"enrollmentValidationType,omitempty" json:"enrollmentValidationType,omitempty"`
	ExamEnrollment              int                `url:"examEnrollment,omitempty" json:"examEnrollment,omitempty"`
	LessonEnrollment            int                `url:"lessonEnrollment,omitempty" json:"lessonEnrollment,omitempty"`
	MaximalLessonEnrollment     int                `url:"maximalLessonEnrollment,omitempty" json:"maximalLessonEnrollment,omitempty"`
	MaximalLessons              int                `url:"maximalLessons,omitempty" json:"maximalLessons,omitempty"`
	MentorGroup                 int                `url:"mentorGroup,omitempty" json:"mentorGroup,omitempty"`
	MinimalLessonEnrollment     int                `url:"minimalLessonEnrollment,omitempty" json:"minimalLessonEnrollment,omitempty"`
	MinimalLessons              int                `url:"minimalLessons,omitempty" json:"minimalLessons,omitempty"`
	Name                        string             `url:"name,omitempty" json:"name,omitempty"`
	PlannedActivityAttendance   int                `url:"plannedActivityAttendance,omitempty" json:"plannedActivityAttendance,omitempty"`
	PlannedAttendance           int                `url:"plannedAttendance,omitempty" json:"plannedAttendance,omitempty"`
	PlannedExamAttendance       int                `url:"plannedExamAttendance,omitempty" json:"plannedExamAttendance,omitempty"`
	PlannedLessonAttendance     int                `url:"plannedLessonAttendance,omitempty" json:"plannedLessonAttendance,omitempty"`
	SchoolInSchoolYear          SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Status                      []string           `url:"status,omitempty" json:"status,omitempty"`
	Student                     string             `url:"student,omitempty" json:"student,omitempty"`
	StudentInDepartment         int                `url:"studentInDepartment,omitempty" json:"studentInDepartment,omitempty"`
	Week                        string             `url:"week,omitempty" json:"week,omitempty"`
	Fields                      string             `url:"fields,omitempty" json:"fields,omitempty"`
}

EnrollmentStatusParams holds the query filters for GetEnrollmentStatus and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type EnrollmentStatusResponse

type EnrollmentStatusResponse struct {
	Response struct {
		Status int                      `json:"status"`
		Data   []EnrollmentStatusParams `json:"data"`
	} `json:"response"`
}

EnrollmentStatusResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type FamilyMembersParams

type FamilyMembersParams struct {
	Archived                bool               `url:"archived,omitempty" json:"archived,omitempty"`
	City                    string             `url:"city,omitempty" json:"city,omitempty"`
	Email                   string             `url:"email,omitempty" json:"email,omitempty"`
	FirstName               string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	HouseNumber             string             `url:"houseNumber,omitempty" json:"houseNumber,omitempty"`
	IncludedForRequests     bool               `url:"includedForRequests,omitempty" json:"includedForRequests,omitempty"`
	MagisterUUID            string             `url:"magisterUUID,omitempty" json:"magisterUUID,omitempty"`
	PostalCode              string             `url:"postalCode,omitempty" json:"postalCode,omitempty"`
	Prefix                  string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	ScheduleFill            int                `url:"scheduleFill,omitempty" json:"scheduleFill,omitempty"`
	ScheduleSpanWidthFactor int                `url:"scheduleSpanWidthFactor,omitempty" json:"scheduleSpanWidthFactor,omitempty"`
	ScheduleWidth           int                `url:"scheduleWidth,omitempty" json:"scheduleWidth,omitempty"`
	SomUUID                 string             `url:"somUUID,omitempty" json:"somUUID,omitempty"`
	Street                  string             `url:"street,omitempty" json:"street,omitempty"`
	Students                []string           `url:"students,omitempty" json:"students,omitempty"`
	UserCode                string             `url:"userCode,omitempty" json:"userCode,omitempty"`
	Fields                  string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear      SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	HasPassword             bool               `url:"hasPassword,omitempty" json:"hasPassword,omitempty"`
	Ldap                    bool               `url:"ldap,omitempty" json:"ldap,omitempty"`
	ParentTeacherNight      int                `url:"parentTeacherNight,omitempty" json:"parentTeacherNight,omitempty"`
}

FamilyMembersParams holds the query filters for GetFamilyMembers and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type FamilyMembersResponse

type FamilyMembersResponse struct {
	Response struct {
		Status int                   `json:"status"`
		Data   []FamilyMembersParams `json:"data"`
	} `json:"response"`
}

FamilyMembersResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type GroupsInDepartmentsParams

type GroupsInDepartmentsParams struct {
	DepartmentOfBranch   int                `url:"departmentOfBranch,omitempty" json:"departmentOfBranch,omitempty"`
	Educations           []int              `url:"educations,omitempty" json:"educations,omitempty"`
	ExtendedName         string             `url:"extendedName,omitempty" json:"extendedName,omitempty"`
	ID                   int                `url:"id,omitempty" json:"id,omitempty"`
	IsMainGroup          bool               `url:"isMainGroup,omitempty" json:"isMainGroup,omitempty"`
	IsMentorGroup        bool               `url:"isMentorGroup,omitempty" json:"isMentorGroup,omitempty"`
	MentorUserCodes      []string           `url:"mentorUserCodes,omitempty" json:"mentorUserCodes,omitempty"`
	Name                 string             `url:"name,omitempty" json:"name,omitempty"`
	StudentInDepartments []int              `url:"studentInDepartments,omitempty" json:"studentInDepartments,omitempty"`
	YearOfEducation      int                `url:"yearOfEducation,omitempty" json:"yearOfEducation,omitempty"`
	Fields               string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear   SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	BranchOfSchool       int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	IsMentorOrMainGroup  bool               `url:"isMentorOrMainGroup,omitempty" json:"isMentorOrMainGroup,omitempty"`
	SchoolYear           int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
}

GroupsInDepartmentsParams holds the query filters for GetGroupsInDepartments and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type GroupsInDepartmentsResponse

type GroupsInDepartmentsResponse struct {
	Response struct {
		Status int                         `json:"status"`
		Data   []GroupsInDepartmentsParams `json:"data"`
	} `json:"response"`
}

GroupsInDepartmentsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type HolidaysParams

type HolidaysParams struct {
	End                string             `url:"end,omitempty" json:"end,omitempty"`
	ID                 int                `url:"id,omitempty" json:"id,omitempty"`
	Name               string             `url:"name,omitempty" json:"name,omitempty"`
	SchoolInSchoolYear SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Start              string             `url:"start,omitempty" json:"start,omitempty"`
	Fields             string             `url:"fields,omitempty" json:"fields,omitempty"`
}

HolidaysParams holds the query filters for GetHolidays and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type HolidaysResponse

type HolidaysResponse struct {
	Response struct {
		Status int              `json:"status"`
		Data   []HolidaysParams `json:"data"`
	} `json:"response"`
}

HolidaysResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type JobsParams

type JobsParams struct {
	ClockHoursGross          float64            `url:"clockHoursGross,omitempty" json:"clockHoursGross,omitempty"`
	Contract                 int                `url:"contract,omitempty" json:"contract,omitempty"`
	Created                  int64              `url:"created,omitempty" json:"created,omitempty"`
	DurationManually         bool               `url:"durationManually,omitempty" json:"durationManually,omitempty"`
	Employee                 string             `url:"employee,omitempty" json:"employee,omitempty"`
	EmploymentType           string             `url:"employmentType,omitempty" json:"employmentType,omitempty"`
	EmployerCost             int                `url:"employerCost,omitempty" json:"employerCost,omitempty"`
	End                      string             `url:"end,omitempty" json:"end,omitempty"`
	ExternalID               string             `url:"externalId,omitempty" json:"externalId,omitempty"`
	FTE                      float64            `url:"fte,omitempty" json:"fte,omitempty"`
	FTEManually              bool               `url:"fteManually,omitempty" json:"fteManually,omitempty"`
	FTEReal                  float64            `url:"fteReal,omitempty" json:"fteReal,omitempty"`
	FirstName                string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	FunctionCategory         string             `url:"functionCategory,omitempty" json:"functionCategory,omitempty"`
	FunctionCategoryManually bool               `url:"functionCategoryManually,omitempty" json:"functionCategoryManually,omitempty"`
	ID                       int                `url:"id,omitempty" json:"id,omitempty"`
	LastModified             int64              `url:"lastModified,omitempty" json:"lastModified,omitempty"`
	LastModifiedBy           string             `url:"lastModifiedBy,omitempty" json:"lastModifiedBy,omitempty"`
	LastName                 string             `url:"lastName,omitempty" json:"lastName,omitempty"`
	Prefix                   string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	PrivateComment           string             `url:"privateComment,omitempty" json:"privateComment,omitempty"`
	ProjectBudget            int                `url:"projectBudget,omitempty" json:"projectBudget,omitempty"`
	PublicComment            string             `url:"publicComment,omitempty" json:"publicComment,omitempty"`
	Start                    string             `url:"start,omitempty" json:"start,omitempty"`
	Type                     string             `url:"type,omitempty" json:"type,omitempty"`
	Fields                   string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear       SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	TeacherTeam              int                `url:"teacherTeam,omitempty" json:"teacherTeam,omitempty"`
	Week                     string             `url:"week,omitempty" json:"week,omitempty"`
}

JobsParams holds the query filters for GetJobs and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type JobsResponse

type JobsResponse struct {
	Response struct {
		Status int          `json:"status"`
		Data   []JobsParams `json:"data"`
	} `json:"response"`
}

JobsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type LiveScheduleParams

type LiveScheduleParams struct {
	Appointments       []string           `url:"appointments,omitempty" json:"appointments,omitempty"`
	Replacements       []string           `url:"replacements,omitempty" json:"replacements,omitempty"`
	Status             []string           `url:"status,omitempty" json:"status,omitempty"`
	User               string             `url:"user,omitempty" json:"user,omitempty"`
	Week               string             `url:"week,omitempty" json:"week,omitempty"`
	Fields             string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Student            string             `url:"student,omitempty" json:"student,omitempty"`
	Teacher            string             `url:"teacher,omitempty" json:"teacher,omitempty"`
}

LiveScheduleParams holds the query filters for GetLiveSchedule and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type LiveScheduleResponse

type LiveScheduleResponse struct {
	Response struct {
		Status int                  `json:"status"`
		Data   []LiveScheduleParams `json:"data"`
	} `json:"response"`
}

LiveScheduleResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type LocationsOfBranchesParams

type LocationsOfBranchesParams struct {
	AllowMeetings                  bool               `url:"allowMeetings,omitempty" json:"allowMeetings,omitempty"`
	Branch                         int                `url:"branch,omitempty" json:"branch,omitempty"`
	BranchOfSchool                 int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	CourseCapacity                 int                `url:"courseCapacity,omitempty" json:"courseCapacity,omitempty"`
	ID                             int                `url:"id,omitempty" json:"id,omitempty"`
	Name                           string             `url:"name,omitempty" json:"name,omitempty"`
	ParentTeacherNightCapacity     int                `url:"parentteachernightCapacity,omitempty" json:"parentteachernightCapacity,omitempty"`
	SchoolInSchoolYear             SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	SecondaryBranches              []int              `url:"secondaryBranches,omitempty" json:"secondaryBranches,omitempty"`
	SupportsConcurrentAppointments bool               `url:"supportsConcurrentAppointments,omitempty" json:"supportsConcurrentAppointments,omitempty"`
	Fields                         string             `url:"fields,omitempty" json:"fields,omitempty"`
}

LocationsOfBranchesParams holds the query filters for GetLocationsOfBranches and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type LocationsOfBranchesResponse

type LocationsOfBranchesResponse struct {
	Response struct {
		Status int                         `json:"status"`
		Data   []LocationsOfBranchesParams `json:"data"`
	} `json:"response"`
}

LocationsOfBranchesResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type ParentTeacherNightsParams

type ParentTeacherNightsParams struct {
	AllowRequestingUntil            int64              `url:"allowRequestingUntil,omitempty" json:"allowRequestingUntil,omitempty"`
	Archived                        bool               `url:"archived,omitempty" json:"archived,omitempty"`
	Description                     string             `url:"description,omitempty" json:"description,omitempty"`
	EmployeeScheduleFill            int                `url:"employeeScheduleFill,omitempty" json:"employeeScheduleFill,omitempty"`
	EmployeeScheduleSpanWidthFactor int                `url:"employeeScheduleSpanWidthFactor,omitempty" json:"employeeScheduleSpanWidthFactor,omitempty"`
	EmployeeScheduleWidth           int                `url:"employeeScheduleWidth,omitempty" json:"employeeScheduleWidth,omitempty"`
	HasParentToSchedulerRemark      bool               `url:"hasParentToSchedulerRemark,omitempty" json:"hasParentToSchedulerRemark,omitempty"`
	HasParentToTeacherRemark        bool               `url:"hasParentToTeacherRemark,omitempty" json:"hasParentToTeacherRemark,omitempty"`
	ID                              int                `url:"id,omitempty" json:"id,omitempty"`
	MaxNumberOfRequests             int                `url:"maxNumberOfRequests,omitempty" json:"maxNumberOfRequests,omitempty"`
	ParentCanRequestLongTalk        bool               `url:"parentCanRequestLongTalk,omitempty" json:"parentCanRequestLongTalk,omitempty"`
	ParentScheduleFill              int                `url:"parentScheduleFill,omitempty" json:"parentScheduleFill,omitempty"`
	ParentScheduleSpanWidthFactor   int                `url:"parentScheduleSpanWidthFactor,omitempty" json:"parentScheduleSpanWidthFactor,omitempty"`
	ParentScheduleWidth             int                `url:"parentScheduleWidth,omitempty" json:"parentScheduleWidth,omitempty"`
	Published                       bool               `url:"published,omitempty" json:"published,omitempty"`
	ReferenceWeek                   string             `url:"referenceWeek,omitempty" json:"referenceWeek,omitempty"`
	SchedulePublished               bool               `url:"schedulePublished,omitempty" json:"schedulePublished,omitempty"`
	SchoolInSchoolYear              SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	TalkDays                        []string           `url:"talkDays,omitempty" json:"talkDays,omitempty"`
	TalkDaysText                    []string           `url:"talkDaysText,omitempty" json:"talkDaysText,omitempty"`
	Title                           string             `url:"title,omitempty" json:"title,omitempty"`
	Fields                          string             `url:"fields,omitempty" json:"fields,omitempty"`
	FamilyMember                    []int              `url:"familyMember,omitempty" json:"familyMember,omitempty"`
}

ParentTeacherNightsParams holds the query filters for GetParentTeacherNights and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type ParentTeacherNightsResponse

type ParentTeacherNightsResponse struct {
	Response struct {
		Status int                         `json:"status"`
		Data   []ParentTeacherNightsParams `json:"data"`
	} `json:"response"`
}

ParentTeacherNightsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type ParentToSchedulerRemarksParams

type ParentToSchedulerRemarksParams struct {
	FamilyMember       string             `url:"familyMember,omitempty" json:"familyMember,omitempty"`
	ID                 int                `url:"id,omitempty" json:"id,omitempty"`
	ParentTeacherNight int                `url:"parentTeacherNight,omitempty" json:"parentTeacherNight,omitempty"`
	Processed          bool               `url:"processed,omitempty" json:"processed,omitempty"`
	Remark             string             `url:"remark,omitempty" json:"remark,omitempty"`
	SchoolInSchoolYear SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Fields             string             `url:"fields,omitempty" json:"fields,omitempty"`
}

ParentToSchedulerRemarksParams holds the query filters for GetParentToSchedulerRemarks and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type ParentToSchedulerRemarksResponse

type ParentToSchedulerRemarksResponse struct {
	Response struct {
		Status int                              `json:"status"`
		Data   []ParentToSchedulerRemarksParams `json:"data"`
	} `json:"response"`
}

ParentToSchedulerRemarksResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type SchoolInSchoolYear

type SchoolInSchoolYear string

SchoolInSchoolYear identifies a project, which is a school in a single school year. As a query filter it accepts one id or a comma separated list of ids. As a response field the API returns a single numeric id, which is accepted too.

func (SchoolInSchoolYear) MarshalJSON

func (s SchoolInSchoolYear) MarshalJSON() ([]byte, error)

MarshalJSON writes a single id as a number and a list of ids as a string.

func (*SchoolInSchoolYear) UnmarshalJSON

func (s *SchoolInSchoolYear) UnmarshalJSON(data []byte) error

UnmarshalJSON accepts both a number and a quoted string, and treats null as empty.

type SchoolsInSchoolYearsParams

type SchoolsInSchoolYearsParams struct {
	Archived               bool               `url:"archived,omitempty" json:"archived,omitempty"`
	ArchivedTime           int64              `url:"archivedTime,omitempty" json:"archivedTime,omitempty"`
	BranchOfSchools        []int              `url:"branchOfSchools,omitempty" json:"branchOfSchools,omitempty"`
	DesktopProjectSettings string             `url:"desktopProjectSettings,omitempty" json:"desktopProjectSettings,omitempty"`
	DesktopStorageOnline   bool               `url:"desktopStorageOnline,omitempty" json:"desktopStorageOnline,omitempty"`
	ID                     int                `url:"id,omitempty" json:"id,omitempty"`
	Name                   string             `url:"name,omitempty" json:"name,omitempty"`
	Project                string             `url:"project,omitempty" json:"project,omitempty"`
	ProjectName            string             `url:"projectName,omitempty" json:"projectName,omitempty"`
	School                 int                `url:"school,omitempty" json:"school,omitempty"`
	SchoolHrmsCode         string             `url:"schoolHrmsCode,omitempty" json:"schoolHrmsCode,omitempty"`
	SchoolName             string             `url:"schoolName,omitempty" json:"schoolName,omitempty"`
	Year                   int                `url:"year,omitempty" json:"year,omitempty"`
	Fields                 string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear     SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Archivable             bool               `url:"archivable,omitempty" json:"archivable,omitempty"`
	AtlasNexusEnabled      bool               `url:"atlasNexusEnabled,omitempty" json:"atlasNexusEnabled,omitempty"`
	Branches               string             `url:"branches,omitempty" json:"branches,omitempty"`
	Removable              bool               `url:"removable,omitempty" json:"removable,omitempty"`
	SchoolYear             int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	UseHrms                bool               `url:"useHrms,omitempty" json:"useHrms,omitempty"`
}

SchoolsInSchoolYearsParams holds the query filters for GetSchoolsInSchoolYears and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type SchoolsInSchoolYearsResponse

type SchoolsInSchoolYearsResponse struct {
	Response struct {
		Status int                          `json:"status"`
		Data   []SchoolsInSchoolYearsParams `json:"data"`
	} `json:"response"`
}

SchoolsInSchoolYearsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type StudentsInDepartmentsParams

type StudentsInDepartmentsParams struct {
	DeanApprovesSelection           bool               `url:"deanApprovesSelection,omitempty" json:"deanApprovesSelection,omitempty"`
	DepartmentOfBranch              int                `url:"departmentOfBranch,omitempty" json:"departmentOfBranch,omitempty"`
	DepartmentOfBranchCode          string             `url:"departmentOfBranchCode,omitempty" json:"departmentOfBranchCode,omitempty"`
	EducationalTrack                int                `url:"educationalTrack,omitempty" json:"educationalTrack,omitempty"`
	Educations                      []int              `url:"educations,omitempty" json:"educations,omitempty"`
	Email                           string             `url:"email,omitempty" json:"email,omitempty"`
	FirstName                       string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	FullName                        string             `url:"fullName,omitempty" json:"fullName,omitempty"`
	Gender                          string             `url:"gender,omitempty" json:"gender,omitempty"`
	GroupInDepartments              []int              `url:"groupInDepartments,omitempty" json:"groupInDepartments,omitempty"`
	ID                              int                `url:"id,omitempty" json:"id,omitempty"`
	LastModified                    int64              `url:"lastModified,omitempty" json:"lastModified,omitempty"`
	LastName                        string             `url:"lastName,omitempty" json:"lastName,omitempty"`
	Lwoo                            bool               `url:"lwoo,omitempty" json:"lwoo,omitempty"`
	MainGroup                       int                `url:"mainGroup,omitempty" json:"mainGroup,omitempty"`
	MainGroupName                   string             `url:"mainGroupName,omitempty" json:"mainGroupName,omitempty"`
	MainGroupPreviousYear           int                `url:"mainGroupPreviousYear,omitempty" json:"mainGroupPreviousYear,omitempty"`
	MainGroupPreviousYearName       string             `url:"mainGroupPreviousYearName,omitempty" json:"mainGroupPreviousYearName,omitempty"`
	MentorGroup                     int                `url:"mentorGroup,omitempty" json:"mentorGroup,omitempty"`
	MentorGroupPreviousYear         int                `url:"mentorGroupPreviousYear,omitempty" json:"mentorGroupPreviousYear,omitempty"`
	OutflowComment                  string             `url:"outflowComment,omitempty" json:"outflowComment,omitempty"`
	OutflowPercentage               int                `url:"outflowPercentage,omitempty" json:"outflowPercentage,omitempty"`
	ParentApprovalTime              int64              `url:"parentApprovalTime,omitempty" json:"parentApprovalTime,omitempty"`
	ParentApprovesSelection         bool               `url:"parentApprovesSelection,omitempty" json:"parentApprovesSelection,omitempty"`
	ParticipationWeight             float64            `url:"participationWeight,omitempty" json:"participationWeight,omitempty"`
	Prefix                          string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	PreviousMainGroup               string             `url:"previousMainGroup,omitempty" json:"previousMainGroup,omitempty"`
	Profiles                        []int              `url:"profiles,omitempty" json:"profiles,omitempty"`
	PrognosisComment                string             `url:"prognosisComment,omitempty" json:"prognosisComment,omitempty"`
	SchoolInSchoolYear              SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	SchoolPreviousYear              string             `url:"schoolPreviousYear,omitempty" json:"schoolPreviousYear,omitempty"`
	Student                         string             `url:"student,omitempty" json:"student,omitempty"`
	StudentApprovesSelection        bool               `url:"studentApprovesSelection,omitempty" json:"studentApprovesSelection,omitempty"`
	StudentHasEditedSelection       bool               `url:"studentHasEditedSelection,omitempty" json:"studentHasEditedSelection,omitempty"`
	StudentInDepartmentPreviousYear int                `url:"studentInDepartmentPreviousYear,omitempty" json:"studentInDepartmentPreviousYear,omitempty"`
	Fields                          string             `url:"fields,omitempty" json:"fields,omitempty"`
	Archived                        bool               `url:"archived,omitempty" json:"archived,omitempty"`
	BranchOfSchool                  int                `url:"branchOfSchool,omitempty" json:"branchOfSchool,omitempty"`
	DepartmentOfBranchPreviousYear  int                `url:"departmentOfBranchPreviousYear,omitempty" json:"departmentOfBranchPreviousYear,omitempty"`
	FamilyMember                    string             `url:"familyMember,omitempty" json:"familyMember,omitempty"`
	GroupInDepartmentPreviousYear   int                `url:"groupInDepartmentPreviousYear,omitempty" json:"groupInDepartmentPreviousYear,omitempty"`
	Inflow                          bool               `url:"inflow,omitempty" json:"inflow,omitempty"`
	Outflow                         bool               `url:"outflow,omitempty" json:"outflow,omitempty"`
	RelatedToDepartment             int                `url:"relatedToDepartment,omitempty" json:"relatedToDepartment,omitempty"`
	SchoolYear                      int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	Teacher                         string             `url:"teacher,omitempty" json:"teacher,omitempty"`
	TeacherTeam                     int                `url:"teacherTeam,omitempty" json:"teacherTeam,omitempty"`
	VisibleToStudent                bool               `url:"visibleToStudent,omitempty" json:"visibleToStudent,omitempty"`
}

StudentsInDepartmentsParams holds the query filters for GetStudentsInDepartments and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type StudentsInDepartmentsResponse

type StudentsInDepartmentsResponse struct {
	Response struct {
		Status int                           `json:"status"`
		Data   []StudentsInDepartmentsParams `json:"data"`
	} `json:"response"`
}

StudentsInDepartmentsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type StudentsParams

type StudentsParams struct {
	City                        string             `url:"city,omitempty" json:"city,omitempty"`
	DateOfBirth                 string             `url:"dateOfBirth,omitempty" json:"dateOfBirth,omitempty"`
	DepartmentOfBranch          []int              `url:"departmentOfBranch,omitempty" json:"departmentOfBranch,omitempty"`
	Email                       string             `url:"email,omitempty" json:"email,omitempty"`
	FamilyMembers               []string           `url:"familyMembers,omitempty" json:"familyMembers,omitempty"`
	FirstName                   string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	Gender                      string             `url:"gender,omitempty" json:"gender,omitempty"`
	GroupInDepartments          []int              `url:"groupInDepartments,omitempty" json:"groupInDepartments,omitempty"`
	HouseNumber                 string             `url:"houseNumber,omitempty" json:"houseNumber,omitempty"`
	IndividualRequestsParents   bool               `url:"individualRequestsParents,omitempty" json:"individualRequestsParents,omitempty"`
	IntakeProjects              []int              `url:"intakeProjects,omitempty" json:"intakeProjects,omitempty"`
	LastName                    string             `url:"lastName,omitempty" json:"lastName,omitempty"`
	Lwoo                        bool               `url:"lwoo,omitempty" json:"lwoo,omitempty"`
	NonarchivedFamilyMembers    []string           `url:"nonarchivedFamilyMembers,omitempty" json:"nonarchivedFamilyMembers,omitempty"`
	PostalCode                  string             `url:"postalCode,omitempty" json:"postalCode,omitempty"`
	Prefix                      string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	Street                      string             `url:"street,omitempty" json:"street,omitempty"`
	StudentInDepartments        []string           `url:"studentInDepartments,omitempty" json:"studentInDepartments,omitempty"`
	UserCode                    string             `url:"userCode,omitempty" json:"userCode,omitempty"`
	Fields                      string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear          SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Archived                    bool               `url:"archived,omitempty" json:"archived,omitempty"`
	PlacedIntakeForProject      int                `url:"placedIntakeForProject,omitempty" json:"placedIntakeForProject,omitempty"`
	PossibleIntakeForProject    int                `url:"possibleIntakeForProject,omitempty" json:"possibleIntakeForProject,omitempty"`
	UnplacedIntakeForSchoolYear int                `url:"unplacedIntakeForSchoolYear,omitempty" json:"unplacedIntakeForSchoolYear,omitempty"`
}

StudentsParams holds the query filters for GetStudents and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type StudentsResponse

type StudentsResponse struct {
	Response struct {
		Status int              `json:"status"`
		Data   []StudentsParams `json:"data"`
	} `json:"response"`
}

StudentsResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type TalkDaysParams

type TalkDaysParams struct {
	Date               string             `url:"date,omitempty" json:"date,omitempty"`
	ID                 int                `url:"id,omitempty" json:"id,omitempty"`
	ParentTeacherNight int                `url:"parentTeacherNight,omitempty" json:"parentTeacherNight,omitempty"`
	StringDate         string             `url:"stringDate,omitempty" json:"stringDate,omitempty"`
	Title              string             `url:"title,omitempty" json:"title,omitempty"`
	Fields             string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
}

TalkDaysParams holds the query filters for GetTalkDays and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type TalkDaysResponse

type TalkDaysResponse struct {
	Response struct {
		Status int              `json:"status"`
		Data   []TalkDaysParams `json:"data"`
	} `json:"response"`
}

TalkDaysResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type TalkTimeBlockAbsenceParentParams

type TalkTimeBlockAbsenceParentParams struct {
	ID                      int                `url:"id,omitempty" json:"id,omitempty"`
	Overruled               bool               `url:"overruled,omitempty" json:"overruled,omitempty"`
	SchoolInSchoolYear      SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	TalkDay                 int                `url:"talkDay,omitempty" json:"talkDay,omitempty"`
	TalkTimeBlock           int                `url:"talkTimeBlock,omitempty" json:"talkTimeBlock,omitempty"`
	TalkTimeBlockDefinition int                `url:"talkTimeBlockDefinition,omitempty" json:"talkTimeBlockDefinition,omitempty"`
	User                    string             `url:"user,omitempty" json:"user,omitempty"`
	Fields                  string             `url:"fields,omitempty" json:"fields,omitempty"`
	ParentTeacherNight      int                `url:"parentTeacherNight,omitempty" json:"parentTeacherNight,omitempty"`
}

TalkTimeBlockAbsenceParentParams holds the query filters for GetTalkTimeBlockAbsenceParent and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type TalkTimeBlockAbsenceParentResponse

type TalkTimeBlockAbsenceParentResponse struct {
	Response struct {
		Status int                                `json:"status"`
		Data   []TalkTimeBlockAbsenceParentParams `json:"data"`
	} `json:"response"`
}

TalkTimeBlockAbsenceParentResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type TalkTimeBlocksParams

type TalkTimeBlocksParams struct {
	ID                 int                `url:"id,omitempty" json:"id,omitempty"`
	ParentTeacherNight int                `url:"parentTeacherNight,omitempty" json:"parentTeacherNight,omitempty"`
	Span               string             `url:"span,omitempty" json:"span,omitempty"`
	TalkTimeSlots      []int              `url:"talkTimeSlots,omitempty" json:"talkTimeSlots,omitempty"`
	Title              string             `url:"title,omitempty" json:"title,omitempty"`
	Fields             string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
}

TalkTimeBlocksParams holds the query filters for GetTalkTimeBlocks and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type TalkTimeBlocksResponse

type TalkTimeBlocksResponse struct {
	Response struct {
		Status int                    `json:"status"`
		Data   []TalkTimeBlocksParams `json:"data"`
	} `json:"response"`
}

TalkTimeBlocksResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

type UsersParams

type UsersParams struct {
	Admin                               bool               `url:"admin,omitempty" json:"admin,omitempty"`
	Archived                            bool               `url:"archived,omitempty" json:"archived,omitempty"`
	ArchivedSchoolInSchoolYears         []int              `url:"archivedSchoolInSchoolYears,omitempty" json:"archivedSchoolInSchoolYears,omitempty"`
	ArchivedTime                        int64              `url:"archivedTime,omitempty" json:"archivedTime,omitempty"`
	City                                string             `url:"city,omitempty" json:"city,omitempty"`
	Code                                string             `url:"code,omitempty" json:"code,omitempty"`
	DateOfBirth                         string             `url:"dateOfBirth,omitempty" json:"dateOfBirth,omitempty"`
	DisplayName                         string             `url:"displayName,omitempty" json:"displayName,omitempty"`
	Email                               string             `url:"email,omitempty" json:"email,omitempty"`
	EmployeeSchoolInSchoolYears         []int              `url:"employeeSchoolInSchoolYears,omitempty" json:"employeeSchoolInSchoolYears,omitempty"`
	FamilyMemberSchoolInSchoolYears     []int              `url:"familyMemberSchoolInSchoolYears,omitempty" json:"familyMemberSchoolInSchoolYears,omitempty"`
	FirstName                           string             `url:"firstName,omitempty" json:"firstName,omitempty"`
	Gender                              string             `url:"gender,omitempty" json:"gender,omitempty"`
	HasPassword                         bool               `url:"hasPassword,omitempty" json:"hasPassword,omitempty"`
	HouseNumber                         string             `url:"houseNumber,omitempty" json:"houseNumber,omitempty"`
	IsApplicationManager                bool               `url:"isApplicationManager,omitempty" json:"isApplicationManager,omitempty"`
	IsBranchLeader                      bool               `url:"isBranchLeader,omitempty" json:"isBranchLeader,omitempty"`
	IsDean                              bool               `url:"isDean,omitempty" json:"isDean,omitempty"`
	IsEmployee                          bool               `url:"isEmployee,omitempty" json:"isEmployee,omitempty"`
	IsFamilyMember                      bool               `url:"isFamilyMember,omitempty" json:"isFamilyMember,omitempty"`
	IsMentor                            bool               `url:"isMentor,omitempty" json:"isMentor,omitempty"`
	IsParentTeacherNightScheduler       bool               `url:"isParentTeacherNightScheduler,omitempty" json:"isParentTeacherNightScheduler,omitempty"`
	IsSchoolLeader                      bool               `url:"isSchoolLeader,omitempty" json:"isSchoolLeader,omitempty"`
	IsSchoolScheduler                   bool               `url:"isSchoolScheduler,omitempty" json:"isSchoolScheduler,omitempty"`
	IsSectionLeader                     bool               `url:"isSectionLeader,omitempty" json:"isSectionLeader,omitempty"`
	IsStudent                           bool               `url:"isStudent,omitempty" json:"isStudent,omitempty"`
	IsStudentAdministrator              bool               `url:"isStudentAdministrator,omitempty" json:"isStudentAdministrator,omitempty"`
	IsTeamLeader                        bool               `url:"isTeamLeader,omitempty" json:"isTeamLeader,omitempty"`
	Ldap                                bool               `url:"ldap,omitempty" json:"ldap,omitempty"`
	MagisterUUID                        string             `url:"magisterUUID,omitempty" json:"magisterUUID,omitempty"`
	MayLogin                            bool               `url:"mayLogin,omitempty" json:"mayLogin,omitempty"`
	ParentTeacherNightOfFamilyIDs       []int              `url:"parentTeacherNightOfFamilyIds,omitempty" json:"parentTeacherNightOfFamilyIds,omitempty"`
	ParentTeacherNightOfTeacherIDs      []int              `url:"parentTeacherNightOfTeacherIds,omitempty" json:"parentTeacherNightOfTeacherIds,omitempty"`
	PostalCode                          string             `url:"postalCode,omitempty" json:"postalCode,omitempty"`
	Prefix                              string             `url:"prefix,omitempty" json:"prefix,omitempty"`
	Roles                               []string           `url:"roles,omitempty" json:"roles,omitempty"`
	SchoolInSchoolYears                 []int              `url:"schoolInSchoolYears,omitempty" json:"schoolInSchoolYears,omitempty"`
	SomUUID                             string             `url:"somUUID,omitempty" json:"somUUID,omitempty"`
	Street                              string             `url:"street,omitempty" json:"street,omitempty"`
	StudentSchoolInSchoolYears          []int              `url:"studentSchoolInSchoolYears,omitempty" json:"studentSchoolInSchoolYears,omitempty"`
	SubjectSelectionSchoolInSchoolYears []int              `url:"subjectSelectionSchoolInSchoolYears,omitempty" json:"subjectSelectionSchoolInSchoolYears,omitempty"`
	TfaMandatory                        bool               `url:"tfaMandatory,omitempty" json:"tfaMandatory,omitempty"`
	TotpEnabled                         bool               `url:"totpEnabled,omitempty" json:"totpEnabled,omitempty"`
	UserKind                            string             `url:"userKind,omitempty" json:"userKind,omitempty"`
	UserPrincipalName                   string             `url:"userPrincipalName,omitempty" json:"userPrincipalName,omitempty"`
	Username                            string             `url:"username,omitempty" json:"username,omitempty"`
	Fields                              string             `url:"fields,omitempty" json:"fields,omitempty"`
	SchoolInSchoolYear                  SchoolInSchoolYear `url:"schoolInSchoolYear,omitempty" json:"schoolInSchoolYear,omitempty"`
	Archivable                          bool               `url:"archivable,omitempty" json:"archivable,omitempty"`
	FamilyMember                        bool               `url:"familyMember,omitempty" json:"familyMember,omitempty"`
	NoSchoolInSchoolYear                bool               `url:"noSchoolInSchoolYear,omitempty" json:"noSchoolInSchoolYear,omitempty"`
	Removable                           bool               `url:"removable,omitempty" json:"removable,omitempty"`
	SchoolYear                          int                `url:"schoolYear,omitempty" json:"schoolYear,omitempty"`
	Type                                string             `url:"type,omitempty" json:"type,omitempty"`
}

UsersParams holds the query filters for GetUsers and the fields of the records it returns. Zermelo uses the same field names in requests and responses, so one struct covers both. Zero values are omitted, and Fields selects the columns to return.

type UsersResponse

type UsersResponse struct {
	Response struct {
		Status int           `json:"status"`
		Data   []UsersParams `json:"data"`
	} `json:"response"`
}

UsersResponse is the envelope the Zermelo API wraps around every response. Data holds the decoded records and Status holds the reported status.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL