The service capabilities reflect optional functionality of a service. The information is static and does not change during device operation. The following capabilities are available: The maximum number of entries returned by a single Get<Entity>List or Get<Entity> request. The device shall never return more than this number of entities in a single response. Indicates the maximum number of schedules the device supports. The device shall support at least one schedule. Indicates the maximum number of time periods per day the device supports in a schedule including special days schedule. The device shall support at least one time period per day. Indicates the maximum number of special day group entities the device supports. The device shall support at least one ‘SpecialDayGroup’ entity. Indicates the maximum number of days per ‘SpecialDayGroup’ entity the device supports. The device shall support at least one day per ‘SpecialDayGroup’ entity. Indicates the maximum number of ‘SpecialDaysSchedule’ entities referred by a schedule that the device supports. For schedules: If this capability is supported, then all iCalendar recurrence types shall be supported by the device. The device shall also support the start and end dates (or iCalendar occurrence count) in recurring events (see iCalendar examples in section 3). If this capability is not supported, then only the weekly iCalendar recurrence type shall be supported. Non-recurring events and other recurring types are not supported. The device shall only accept a start date with the year ‘1970’ (the month and day is needed to reflect the week day of the recurrence) and will not accept an occurrence count (or iCalendar until date) in recurring events. For special days (only applicable if SpecialDaysSupported is set to true): If this capability is supported, then all iCalendar recurrence types shall be supported by the device. The device shall also support the start and end dates (or occurrence count) in recurring events. If this capability is not supported, then only non-recurring special days are supported. If this capability is supported, then the device shall support special days. If this capability is set to true, the device shall implement the GetScheduleState command, and shall notify subscribing clients whenever schedules become active or inactive. The ScheduleInfo type represents the schedule as a physical object. The structure contains information of a specific schedule instance. A user readable name. It shall be up to 64 characters. User readable description for the schedule. It shall be up to 1024 characters. The schedule structure shall include all properties of the ScheduleInfo structure and also the standard events (iCalendar format) and a list of SpecialDaysSchedule instances. An iCalendar structure that defines a number of events. Events can be recurring or non-recurring. The events can, for instance, be used to control when a camera should record or when a facility is accessible. Some devices might not be able to fully support all the features of iCalendar. Setting the service capability ExtendedRecurrenceSupported to false will enable more devices to be ONVIF compliant. Is of type string (but contains an iCalendar structure). For devices that are not able to support all the features of iCalendar, supporting special days is essential. Each SpecialDaysSchedule instance defines an alternate set of time periods that overrides the regular schedule for a specified list of special days. Is of type SpecialDaysSchedule. A override schedule that defines alternate time periods for a group of special days. Indicates the list of special days in a schedule. Indicates the alternate time periods for the list of special days (overrides the regular schedule). For example, the regular schedule indicates that it is active from 8AM to 5PM on Mondays. However, this particular Monday is a special day, and the alternate time periods state that the schedule is active from 9 AM to 11 AM and 1 PM to 4 PM. If no time periods are defined, then no access is allowed. Is of type TimePeriod. The ScheduleState contains state information for a schedule. Indicates that the current time is within the boundaries of the schedule or its special days schedules’ time periods. For example, if this schedule is being used for triggering automatic recording on a video source, the Active flag will be true when the schedule-based recording is supposed to record. Indicates that the current time is within the boundaries of its special days schedules’ time periods. For example, if this schedule is being used for recording at a lower frame rate on a video source during special days, the SpecialDay flag will be true. If special days are not supported by the device, this field may be omitted and interpreted as false by the client. A time period defines a start and end time. For full day access, the start time ="00:00:00" with no defined end time. For a time period with no end time, the schedule runs until midnight. The end time must always be greater than the start time, otherwise an InvalidArgVal error messages is generated by the device. Indicates the start time. Indicates the end time. Is optional, if omitted, the period ends at midnight. The end time is exclusive, meaning that that exact moment in time is not part of the period. To determine if a moment in time (t) is part of a time period, the formula StartTime ≤ t < EndTime is used. The SpecialDayGroupInfo structure contains the basic information about the special days list. User readable name. It shall be up to 64 characters. User readable description for the special days. It shall be up to 1024 characters. The special day group structure shall include all properties of the SpecialDayGroupInfo structure and also a set of special days. A special day group are days (or parts of days) that require the regular schedule to be overridden with an alternate schedule. For example holidays, half-days, working Sundays, etc. An iCalendar structure that contains a group of special days. Is of type string (containing an iCalendar structure). The capability response message contains the requested schedule service capabilities using a hierarchical XML capability structure. Token of schedule instance to get ScheduleState. ScheduleState item. Tokens of ScheduleInfo items to get. List of ScheduleInfo items. Maximum number of entries to return. If not specified, less than one or higher than what the device supports, the number of items is determined by the device. Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. StartReference to use in next call to get the following items. If absent, no more items to get. List of ScheduleInfo items. Tokens of Schedule items to get List of schedule items. Maximum number of entries to return. If not specified, less than one or higher than what the device supports, the number of items is determined by the device. Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. StartReference to use in next call to get the following items. If absent, no more items to get. List of Schedule items. The Schedule to create The token of created Schedule The Schedule to modify/update The token of the schedule to delete. Tokens of SpecialDayGroupInfo items to get. List of SpecialDayGroupInfo items. Maximum number of entries to return. If not specified, less than one or higher than what the device supports, the number of items is determined by the device. Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. StartReference to use in next call to get the following items. If absent, no more items to get. List of SpecialDayGroupInfo items. Tokens of the SpecialDayGroup items to get List of SpecialDayGroup items. Maximum number of entries to return. If not specified, less than one or higher than what the device supports, the number of items is determined by the device. Start returning entries from this start reference. If not specified, entries shall start from the beginning of the dataset. StartReference to use in next call to get the following items. If absent, no more items to get. List of SpecialDayGroup items. The special day group to create. The token of created special day group. The special day group to modify/update. The token of the special day group item to delete. This operation returns the capabilities of the schedule service. This operation requests the ScheduleState for the schedule instance specified by the given token. This method returns a list of schedule info items, specified in the request. Only found schedules shall be returned, i.e., the returned numbers of elements can differ from the requested element. The device shall ignore tokens it cannot resolve and shall return an empty list if there are no items matching the specified tokens. If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be returned. This operation requests a list of all of ScheduleInfo items provided by the device. A call to this method shall return a StartReference when not all data is returned and more data is available. The reference shall be valid for retrieving the next set of data. Please refer Access Control Service Specification for more details. The number of items returned shall not be greater the Limit parameter. This operation returns the specified schedule item matching the given tokens. The device shall ignore tokens it cannot resolve and shall return an empty list if there are no items matching the specified tokens. If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be returned This operation requests a list of all of Schedule items provided by the device. A call to this method shall return a StartReference when not all data is returned and more data is available. The reference shall be valid for retrieving the next set of data. Please refer Access Control Service Specification for more details. The number of items returned shall not be greater the Limit parameter. This operation creates the specified schedule. The token field of the schedule structure shall be empty, the device shall allocate a token for the schedule. The allocated token shall be returned in the response. If the client sends any value in the token field, the device shall return InvalidArgVal as generic fault code. This operation modifies or updates the specified schedule. This operation will delete the specified schedule. If it is associated with one or more entities some devices may not be able to delete the schedule, and consequently a ReferenceInUse fault shall be generated. This operation requests a list of SpecialDayGroupInfo items matching the given tokens. The device shall ignore tokens it cannot resolve and shall return an empty list if there are no items matching specified tokens. The device shall not return a fault in this case. If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be returned. This operation requests a list of all of SpecialDayGroupInfo items provided by the device. A call to this method shall return a StartReference when not all data is returned and more data is available. The reference shall be valid for retrieving the next set of data. The number of items returned shall not be greater than Limit parameter. This operation returns the specified special day group item matching the given token. This operation requests a list of all of SpecialDayGroupList items provided by the device. A call to this method shall return a StartReference when not all data is returned and more data is available. The reference shall be valid for retrieving the next set of data. Please refer Access Control Service Specification for more details. The number of items returned shall not be greater the Limit parameter. This operation creates the specified special day group. The token field of the SpecialDayGroup structure shall be empty, the device shall allocate a token for the special day group. The allocated token shall be returned in the response. If there is any value in the token field, the device shall return InvalidArgVal as generic fault code. This operation updates the specified special day group. This method deletes the specified special day group. If it is associated with one or more schedules some devices may not be able to delete the special day group, and consequently a ReferenceInUse fault must be generated.