Capabilities are a software pattern used by the Client SDK to indicate to the application what features and operations may be available at a given point in time. Capabilities are dynamic due to the distributed and asynchronous nature of the system. Therefore, an allowed capability is not a guarantee that the associated action will succeed. Capabilities indicate that the action is expected to be available, and the Client SDK provides notification when relevant capabilities change. Many services and service objects in the SDK expose capabilities that inform an application which features and operations are available based on the current state of the system. Capabilities may change based on:
Deployment:
These capabilities may change depending on the type of network elements deployed and the configuration of such network elements. For example, Conferencing9 capabilities differ from Avaya Aura Conferencing capabilities.
Configuration:
These capabilities may change based on the configuration that the application provides to the CSDK, e.g. the application may not support enhanced conferencing.
Runtime:
Availability/unavailablility of capabilities depends on the runtime execution of the service or service object, e.g. the call retrieve operation is not permitted unless the call is in the held state.
Capabilities can be used to control the visibility or enabled state of user interface elements without the application. Otherwise, tracking all the states that could affect the availability of an action may be required. For example, consider the holdWithCompletionHandler:completionHandler: method of the CSCall. Only an established call may be held provided that another action is not currently being attempted on the call. If both of these conditions are true, CSCall.holdCapability.allowed will be true. If either condition is false, CSCall.holdCapability.allowed will also be false and CSCall.holdCapability.denialReason will provide a description of why the action is unavailable. Since the values influencing this capability can change, the Call object also exposes the capabilities updated event to inform the application when the capabilities for the call object have changed.
Capabilities are a completely optional feature provided to aid in user interface development. The system supports any action method being called at any time. Applications must support success and failure handling for all operations, even if the capability indicated that the operation was allowed.
The Capability class is an immutable object with properties populated at the time the capability was created. When the registered listener is notified that the capabilities have changed, all existing Capabilities objects should be considered obsolete. A new Capabilities object will need to be reacquired.
The sequence diagram below shows the example of using Client SDK capabilities.
--- title: macOS Communication Services Package version: 4.31.0.0 - Aug 2023 copyright: Copyright © 2013-2023 by Avaya, All Rights Reserved. publisher: devconnectprogram.com publisherAddress: Avaya comments: '' tableOfContents: true tocAccordion: 2 rightPanel: false publicOnly: false leftPanel: true tableOfContentHeader: true showPageTitle: true gridLayout: toc: 2 codePanelPercent: 50 headerHeight: 0 footerHeight: 0 documentSearch: true languageTabs: - objective_c: Objective-C laTexMath: false codeHighlight: true codeHighlightTheme: agate tocSelectors: h2,h3,h4 tocFooters: [] versionLinks: - title: Current link: "/site/global/products_resources/avaya_client_sdk/programming_docs/current/introduction/index.gsp" newTab: false siteLinks: - title: Avaya Home link: "/" newTab: false documentCollectionOptions: tabs: false baseUrl: '' documentCollection: [] source_file: "/home/build/.jenkins/workspace/avaya-slate/source/site/global/products_resources/avaya_client_sdk/programming_docs/current/macos/communication/tech/using_capabilities.md" sourcePath: "/home/build/.jenkins/workspace/avaya-slate/source/site/global/products_resources/avaya_client_sdk/programming_docs/current/macos/communication/tech" sourceFileName: using_capabilities sourceType: ".md" url: site/global/products_resources/avaya_client_sdk/programming_docs/current/macos/communication/tech/using_capabilities.gsp urlPath: site/global/products_resources/avaya_client_sdk/programming_docs/current/macos/communication/tech urlFileName: using_capabilities urlExtension: ".gsp" titlePage: true gvars: - productFolder: client_sdk - releaseFolder: current BackToPackageOverview: "< Back to Package Overview" BpImages: "/static/images/avaya_client_sdk/programming_docs/current/" DwlAndroidSdk: "Android SDK" DwlIosSdk: "iOS SDK" DwlWindowsSdk: "Windows SDK" DwlMacosSdk: "macOS SDK" DwlJavaScriptSdk: "JavaScript SDK" DwlReleaseNotes: "Avaya Client SDK Release Notes" DwlExternalApiProgDoc: "External Application API Programming Documentation" CSActiveParticipant: "CSActiveParticipant" CSAudioDetails: "CSAudioDetails" CSAudioDevice: "CSAudioDevice" CSAudioRecordPlayStatusListener: "CSAudioRecordPlayStatusListener" CSAutodial: "CSAutodial" CSAutomaticGainControlConfiguration: "CSAutomaticGainControlConfiguration" CSACSConfiguration: "CSACSConfiguration" CSAMMConfiguration: "CSAMMConfiguration" CSBasicShape: "CSBasicShape" CSBusyIndicator: "CSBusyIndicator" CSBFCPConfiguration: "CSBFCPConfiguration" CSCall: "CSCall" CSCallCreationInfo: "CSCallCreationInfo" CSCallFeatureService: "CSCallFeatureService" CSCallForwardingInformation: "CSCallForwardingInformation" CSCallForwardingStatus: "CSCallForwardingStatus" CSCallLogItem: "CSCallLogItem" CSCallLogParticipant: "CSCallLogParticipant" CSCallLogService: "CSCallLogService" CSCallPickupAlertParameters: "CSCallPickupAlertParameters" CSCallPickupAlertStatus: "CSCallPickupAlertStatus" CSCallService: "CSCallService" CSCapability: "CSCapability" CSCertificateBasicConstraint: "CSCertificateBasicConstraint" CSCertificateInfo: "CSCertificateInfo" CSCertificateManager: "CSCertificateManager" CSChallenge: "CSChallenge" CSChat: "CSChat" CSChatMessage: "CSChatMessage" CSCircleShape: "CSCircleShape" CSClient: "CSClient" CSClientConfiguration: "CSClientConfiguration" CSClipboardEvent: "CSClipboardEvent" CSCollaboration: "CSCollaboration" CSCollaborationCapabilities: "CSCollaborationCapabilities" CSCollaborationDetails: "CSCollaborationDetails" CSCollaborationReceiveStatistics: "CSCollaborationReceiveStatistics" CSCollaborationService: "CSCollaborationService" CSCollaborationStatistics: "CSCollaborationStatistics" CSConference: "CSConference" CSConferenceConfiguration: "CSConferenceConfiguration" CSConferenceMobileLink: "CSConferenceMobileLink" CSConferenceMobileLinkConnectionDetails: "CSConferenceMobileLinkConnectionDetails" CSConferenceRoomSystemInformation: "CSConferenceRoomSystemInformation" CSConferenceSlide: "CSConferenceSlide" CSConferenceSlideViewer: "CSConferenceSlideViewer" CSConnectionPolicy: "CSConnectionPolicy" CSContact: "<CSContact>" CSContactBoolField: "CSContactBoolField" CSContactDoubleField: "CSContactDoubleField" CSContactEmailAddressField: "CSContactEmailAddressField" CSContactEmailFieldList: "CSContactEmailFieldList" CSContactField: "CSContactField" CSContactIMAddressField: "CSContactIMAddressField" CSContactIMAddressFieldList: "CSContactIMAddressFieldList" CSContactLimits: "CSContactLimits" CSContactMultiValueField: "CSContactMultiValueField" CSContactPhoneField: "CSContactPhoneField" CSContactPhoneFieldList: "CSContactPhoneFieldList" CSContactResolveContactsRequest: "CSContactResolveContactsRequest" CSContactSearchQueryWatcherPair: "CSContactSearchQueryWatcherPair" CSContactService: "CSContactService" CSContactStringField: "CSContactStringField" CSContactStringFieldList: "CSContactStringFieldList" CSContentSharing: "CSContentSharing" CSContentSharingCapabilities: "CSContentSharingCapabilities" CSControllableEndpoint: "CSControllableEndpoint" CSCESConfiguration: "CSCESConfiguration" CSCPUThresholdConfiguration: "CSCPUThresholdConfiguration" CSDataRetrieval: "CSDataRetrieval" CSDataRetrievalWatcher: "CSDataRetrievalWatcher" CSDataSet: "CSDataSet" CSDialingRulesConfiguration: "CSDialingRulesConfiguration" CSDownloadOptionalParameters: "CSDownloadOptionalParameters" CSDownloadResultInfo: "CSDownloadResultInfo" CSDownloadService: "CSDownloadService" CSDownloadServiceConfiguration: "CSDownloadServiceConfiguration" CSDownloadWatcher: "CSDownloadWatcher" CSDroppedParticipant: "CSDroppedParticipant" CSDSCPPrecedenceConfiguration: "CSDSCPPrecedenceConfiguration" CSEditableContact: "CSEditableContact" CSEditableContactBoolField: "CSEditableContactBoolField" CSEditableContactDoubleField: "CSEditableContactDoubleField" CSEditableContactEmailAddressField: "CSEditableContactEmailAddressField" CSEditableContactEmailFieldList: "CSEditableContactEmailFieldList" CSEditableContactIMAddressField: "CSEditableContactIMAddressField" CSEditableContactIMAddressFieldList: "CSEditableContactIMAddressFieldList" CSEditableContactPhoneField: "CSEditableContactPhoneField" CSEditableContactPhoneFieldList: "CSEditableContactPhoneFieldList" CSEditableContactStringField: "CSEditableContactStringField" CSEditableContactStringFieldList: "CSEditableContactStringFieldList" CSEnhancedCallForwardingStatus: "CSEnhancedCallForwardingStatus" CSEnrollmentCredential: "CSEnrollmentCredential" CSEC500Configuration: "CSEC500Configuration" CSFeatureInvocationParameters: "CSFeatureInvocationParameters" CSFeatureParameters: "CSFeatureParameters" CSFeatureStatusParameters: "CSFeatureStatusParameters" CSHTTPClientConfiguration: "CSHTTPClientConfiguration" CSHTTPUserConfiguration: "CSHTTPUserConfiguration" CSIdentified: "CSIdentified" CSIPOfficeConfiguration: "CSIPOfficeConfiguration" CSKeyboardEvent: "CSKeyboardEvent" CSLibraryDocument: "CSLibraryDocument" CSLibraryManager: "CSLibraryManager" CSLibrarySharing: "CSLibrarySharing" CSLineAppearance: "CSLineAppearance" CSLocalContactConfiguration: "CSLocalContactConfiguration" CSLDAPConfiguration: "CSLDAPConfiguration" CSMatchedContactsWithMatchLevel: "CSMatchedContactsWithMatchLevel" CSMaxSupportedVideoResolutionsCapability: "CSMaxSupportedVideoResolutionsCapability" CSMediaConfiguration: "CSMediaConfiguration" CSMediaServicesInstance: "CSMediaServicesInstance" CSMediaServicesProvider: "CSMediaServicesProvider" CSMeetingMinutes: "CSMeetingMinutes" CSMessage: "CSMessage" CSMessageBodyPart: "CSMessageBodyPart" CSMessageWaitingStatus: "CSMessageWaitingStatus" CSMessagingAddressValidation: "CSMessagingAddressValidation" CSMessagingAsynchDataRetrieval: "CSMessagingAsynchDataRetrieval" CSMessagingAttachment: "CSMessagingAttachment" CSMessagingConfiguration: "CSMessagingConfiguration" CSMessagingConversation: "CSMessagingConversation" CSMessagingLeaveConversationResponse: "CSMessagingLeaveConversationResponse" CSMessagingLimits: "CSMessagingLimits" CSMessagingParticipant: "CSMessagingParticipant" CSMessagingParticipantPhoneNumber: "CSMessagingParticipantPhoneNumber" CSMessagingQuery: "CSMessagingQuery" CSMessagingSearchConversation: "CSMessagingSearchConversation" CSMessagingService: "CSMessagingService" CSMicrophoneDevice: "CSMicrophoneDevice" CSMinuteMessage: "CSMinuteMessage" CSMouseEvent: "CSMouseEvent" CSOtherPhoneService: "CSOtherPhoneService" CSOutboundSubscriptionConfiguration: "CSOutboundSubscriptionConfiguration" CSOSXScreenSharingView: "CSOSXScreenSharingView" CSParticipant: "CSParticipant" CSPendingParticipant: "CSPendingParticipant" CSPendingParticipantAdmissionCancellationReason: "CSPendingParticipantAdmissionCancellationReason" CSPhysicalAddress: "CSPhysicalAddress" CSPresence: "CSPresence" CSPresenceAccessControlList: "CSPresenceAccessControlList" CSPresenceConfiguration: "CSPresenceConfiguration" CSPresenceListSubscription: "CSPresenceListSubscription" CSPresenceService: "CSPresenceService" CSPresenceWatcher: "CSPresenceWatcher" CSPresentationSlidesListener: "CSPresentationSlidesListener" CSPresentationSlideCanvas: "CSPresentationSlideCanvas" CSPPMConfiguration: "CSPPMConfiguration" CSRegistrationGroup: "CSRegistrationGroup" CSRenderingBlock: "CSRenderingBlock" CSScreenCapturerOSX: "CSScreenCapturerOSX" CSScreenSharingListener: "CSScreenSharingListener" CSScreenSharingView: "CSScreenSharingView" CSSearchTerminalsRequest: "CSSearchTerminalsRequest" CSSecurityPolicyConfiguration: "CSSecurityPolicyConfiguration" CSServerInfo: "CSServerInfo" CSServiceStatus: "CSServiceStatus" CSSettingsFileParser: "CSSettingsFileParser" CSShape: "CSShape" CSShapePoint: "CSShapePoint" CSSharedControlService: "CSSharedControlService" CSSharingApplicationWindow: "CSSharingApplicationWindow" CSSharingBlock: "CSSharingBlock" CSSharingDisplay: "CSSharingDisplay" CSSignalingServer: "CSSignalingServer" CSSignalingServerGroup: "CSSignalingServerGroup" CSSlide: "CSSlide" CSSlider: "CSSlider" CSSliderSlide: "CSSliderSlide" CSSpaceParticipant: "CSSpaceParticipant" CSSpaceService: "CSSpaceService" CSSpeakerDevice: "CSSpeakerDevice" CSSCEPConfiguration: "CSSCEPConfiguration" CSSIPClientConfiguration: "CSSIPClientConfiguration" CSSIPUserConfiguration: "CSSIPUserConfiguration" CSTeamButton: "CSTeamButton" CSTeamButtonIncomingCall: "CSTeamButtonIncomingCall" CSTerminal: "CSTerminal" CSUnifiedPortalConferencingConfiguration: "CSUnifiedPortalConferencingConfiguration" CSUnifiedPortalConfiguration: "CSUnifiedPortalConfiguration" CSUnifiedPortalMeetingInfo: "CSUnifiedPortalMeetingInfo" CSUnifiedPortalResources: "CSUnifiedPortalResources" CSUnifiedPortalService: "CSUnifiedPortalService" CSUser: "CSUser" CSUserConfiguration: "CSUserConfiguration" CSUserCredential: "CSUserCredential" CSVideoCapturerOSX: "CSVideoCapturerOSX" CSVideoCaptureDevice: "CSVideoCaptureDevice" CSVideoCaptureFormat: "CSVideoCaptureFormat" CSVideoChannel: "CSVideoChannel" CSVideoDetails: "CSVideoDetails" CSVideoFrameFileSource: "CSVideoFrameFileSource" CSVideoRendererOSX: "CSVideoRendererOSX" CSVideoResolutionCapability: "CSVideoResolutionCapability" CSVideoResolutionPreference: "CSVideoResolutionPreference" CSVideoResolutionPreferenceForMainVideoStreaming: "CSVideoResolutionPreferenceForMainVideoStreaming" CSVideoResolutionPreferenceForMultiVideoStreaming: "CSVideoResolutionPreferenceForMultiVideoStreaming" CSVideoSinkImpl: "CSVideoSinkImpl" CSVideoSourceImpl: "CSVideoSourceImpl" CSVideoSplitter: "CSVideoSplitter" CSVideoStatistics: "CSVideoStatistics" CSVideoTransmitStatistics: "CSVideoTransmitStatistics" CSVideoUserConfiguration: "CSVideoUserConfiguration" CSVirtualRoom: "CSVirtualRoom" CSVoiceMessagingService: "CSVoiceMessagingService" CSVoiceMessagingStatusParameters: "CSVoiceMessagingStatusParameters" CSVoIPConfigurationAudio: "CSVoIPConfigurationAudio" CSVoIPConfigurationVideo: "CSVoIPConfigurationVideo" CSWhiteboard: "CSWhiteboard" CSWhiteboardCanvas: "CSWhiteboardCanvas" CSWhiteboardSurface: "CSWhiteboardSurface" CSWhiteboardText: "CSWhiteboardText" CSWCSConfiguration: "CSWCSConfiguration" CSZangConfiguration: "CSZangConfiguration" CSActiveParticipantDelegate: "<CSActiveParticipantDelegate>" CSAudioDevicesEventListener: "<CSAudioDevicesEventListener>" CSAudioFilePlayer: "<CSAudioFilePlayer>" CSAudioFilePlayerListener: "<CSAudioFilePlayerListener>" CSAudioInterface: "<CSAudioInterface>" CSCallDelegate: "<CSCallDelegate>" CSCallFeatureServiceDelegate: "<CSCallFeatureServiceDelegate>" CSCallLogServiceDelegate: "<CSCallLogServiceDelegate>" CSCallServiceDelegate: "<CSCallServiceDelegate>" CSCertificateManagerClientIdentityDelegate: "<CSCertificateManagerClientIdentityDelegate>" CSCertificateManagerDelegate: "<CSCertificateManagerDelegate>" CSCertificateManagerEnrollmentDelegate: "<CSCertificateManagerEnrollmentDelegate>" CSChatDelegate: "<CSChatDelegate>" CSClientDelegate: "<CSClientDelegate>" CSCollaborationDelegate: "<CSCollaborationDelegate>" CSCollaborationServiceDelegate: "<CSCollaborationServiceDelegate>" CSConferenceDelegate: "<CSConferenceDelegate>" CSConferenceMobileLinkDelegate: "<CSConferenceMobileLinkDelegate>" CSConferenceSlideViewerDelegate: "<CSConferenceSlideViewerDelegate>" CSContactDelegate: "<CSContactDelegate>" CSContactServiceDelegate: "<CSContactServiceDelegate>" CSContentSharingDelegate: "<CSContentSharingDelegate>" CSContentSharingRemoteControlDelegate: "<CSContentSharingRemoteControlDelegate>" CSCredentialProvider: "<CSCredentialProvider>" CSDataRetrievalDelegate: "<CSDataRetrievalDelegate>" CSDataRetrievalWatcherDelegate: "<CSDataRetrievalWatcherDelegate>" CSDataSetDelegate: "<CSDataSetDelegate>" CSDevice: "<CSDevice>" CSDeviceListener: "<CSDeviceListener>" CSDroppedParticipantDelegate: "<CSDroppedParticipantDelegate>" CSEnrollmentCredentialProvider: "<CSEnrollmentCredentialProvider>" CSLibrarySharingDelegate: "<CSLibrarySharingDelegate>" CSMediaLogProvider: "<CSMediaLogProvider>" CSMeetingMinutesDelegate: "<CSMeetingMinutesDelegate>" CSMessageDelegate: "<CSMessageDelegate>" CSMessagingAttachmentDelegate: "<CSMessagingAttachmentDelegate>" CSMessagingComposingParticipantsWatcherDelegate: "<CSMessagingComposingParticipantsWatcherDelegate>" CSMessagingConversationDelegate: "<CSMessagingConversationDelegate>" CSMessagingServiceDelegate: "<CSMessagingServiceDelegate>" CSOtherPhoneServiceDelegate: "<CSOtherPhoneServiceDelegate>" CSParticipantDelegate: "<CSParticipantDelegate>" CSPendingParticipantDelegate: "<CSPendingParticipantDelegate>" CSPresenceAccessControlDelegate: "<CSPresenceAccessControlDelegate>" CSPresenceListSubscriptionDelegate: "<CSPresenceListSubscriptionDelegate>" CSPresenceServiceDelegate: "<CSPresenceServiceDelegate>" CSPresenceWatcherRequestDelegate: "<CSPresenceWatcherRequestDelegate>" CSSettingsFileParserDelegate: "<CSSettingsFileParserDelegate>" CSSharedControlDelegate: "<CSSharedControlDelegate>" CSSliderDelegate: "<CSSliderDelegate>" CSSlideDelegate: "<CSSlideDelegate>" CSUnifiedPortalServiceDelegate: "<CSUnifiedPortalServiceDelegate>" CSUserAdminEventDelegate: "<CSUserAdminEventDelegate>" CSUserExternalAppInterfaceDelegate: "<CSUserExternalAppInterfaceDelegate>" CSUserRegistrationDelegate: "<CSUserRegistrationDelegate>" CSVideoCapturerDelegate: "<CSVideoCapturerDelegate>" CSVideoInterface: "<CSVideoInterface>" CSVideoInterfaceDelegate: "<CSVideoInterfaceDelegate>" CSVideoSink: "<CSVideoSink>" CSVideoSource: "<CSVideoSource>" CSVoiceMessagingServiceDelegate: "<CSVoiceMessagingServiceDelegate>" CSWhiteboardDelegate: "<CSWhiteboardDelegate>" CSWhiteboardSurfaceDelegate: "<CSWhiteboardSurfaceDelegate>"