Skype for Business presence, mailbox and routing API
Skype for Business for Android is Microsoft Corporation's enterprise instant-messaging and meetings client — the phone half of the Lync / Skype for Business stack that organisations ran on Skype for Business Server or in Office 365. After a work SIP address or Microsoft 365 account signs in through Azure AD, the home screens show IM conversations, a people list with coloured presence (available, busy, do-not-disturb, away, be-right-back, off work), scheduled meetings with a one-tap join button, a PSTN dial-pad, call-forward and simultaneous-ring options, an Exchange-backed contact card, and a voicemail inbox that can ring a desk phone to play a message. IT-managed staff still use it as a desk-phone replacement and lobby-meeting client in hybrid or on-premises pools, sitting alongside Microsoft Teams (the successor) and Zoom in workplace calling. Primary remaining users are enterprises in the United States, Germany and India.
Exchange persona cards carry personaId and imAddressSipUri for every colleague the people picker can resolve, while self-presence rows publish publishableState and personalNote. Mailbox calendar items add onlineMeetingExternalLink, myResponseType and pstnBestAvailableNumber; scheduled UCWA meetings add automaticLeaderAssignment, phoneUserAdmission and lobbyBypassForPhoneUsers. Call-routing records expose routingMode, forwardCustomTarget, simuRingCustomTarget and activePeriod, and team-call membership adds isTeamCallEnabled plus isDelegationEnabled. Voicemail items carry senderTelephoneNumber, attachmentDurationInSeconds and canPlayOnPhone.
Reception consoles join those directory and presence fields before transferring a PSTN call, room panels consume the meeting join links without typing a conference ID, and voice ops audit forward targets that still ring a personal mobilePhone outside working hours. Tenant admins hash policiesHash with each settingId and the tenant statementUrl to catch silent Android policy drift. openData Studio turns that surface into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Issue an Azure AD OAuth access token
POST
/v1/identity/sessionsopendataMints the Azure AD access token the app splits across three resource audiences (SFB, EWS, GRAPH_API) after sign-in returns authorityUrl, resourceUrl and userId.
Auth: None on the token endpoint itself. The app later attaches the returned access_token as Authorization: Bearer on Graph, mailbox and UCWA calls. Regional Azure AD authorities are selected from the signed-in tenant.
- token_type
- access_token
- refresh_token
- expires_in
- ext_expires_in
- client_id
- grant_type
- scope
- authorityUrl
- resourceUrl
- userId
POST /v1/identity/sessions HTTP/1.1 Content-Type: application/x-www-form-urlencoded client_id=<client-id>&grant_type=refresh_token&refresh_token=<refresh-token>&scope=uc.sessions mailbox.calendar directory.people{ "token_type": "Bearer", "access_token": "<jwt>", "refresh_token": "<refresh-token>", "expires_in": 3599, "ext_expires_in": 3599 }Read the tenant privacy-statement URL
GET
/v1/tenant/privacyopendataLoads the signed-in tenant's privacyProfile.statementUrl that the in-app privacy screen displays after Graph receives an Azure AD token.
Auth: Authorization: Bearer <access_token> issued for the Graph resource audience.
- value
- privacyProfile
- statementUrl
- contactEmail
GET /v1/tenant/privacy HTTP/1.1 Authorization: Bearer <graph-access-token> Accept: application/json{ "value": [ { "privacyProfile": { "statementUrl": "https://privacy.example.com/statement", "contactEmail": "[email protected]" } } ] }Fetch Office cloud policies for Android
GET
/v1/device/policiesopendataReturns the tenant's Office cloud policy bag for the Android Skype for Business client, including the checkin-interval header the SDK stores as checkinIntervalMin.
Auth: Authorization: Bearer <office-access-token>. Also sends Device-Name and SDK-Version request headers.
- policiesHash
- value
- id
- policyType
- priority
- policiesPayload
- allowOverride
- app
- class
- enabled
- key
- settingId
- name
- platform
- type
- value
- valueName
- version
- minVersion
- maxVersion
- isVersionNeutral
- docVersion
- checkinIntervalMin
GET /v1/device/policies HTTP/1.1 Authorization: Bearer <office-access-token> Device-Name: Pixel 8 SDK-Version: 1.0{ "policiesHash": "a1b2c3d4", "value": [ { "id": "policy-android-sfb", "policyType": 1, "priority": 100, "policiesPayload": [ { "allowOverride": false, "app": "SkypeForBusiness", "class": "CloudPolicy", "enabled": true, "key": "DisableFileTransfer", "settingId": "sfb.filetransfer.disabled", "name": "Disable file transfer", "platform": "Android", "type": "bool", "value": "true", "valueName": "Enabled", "version": "1.0", "minVersion": "6.0", "maxVersion": "99.0", "isVersionNeutral": "false", "docVersion": "1" } ] } ] }Read Office roaming settings (SOAP)
POST
/v1/prefs/roaming:readopendataSOAP-reads the signed-in user's Office roaming SettingData bag (Id, Knowledge, Value) that syncs across Microsoft 365 clients.
Auth: Azure AD token for the Office roaming resource. SOAPAction ReadSettings. Regional roaming hosts are selected from the signed-in tenant.
- Identity
- Generation
- Id
- Knowledge
- Context
- Value
- Settings
- SettingData
- SettingInfo
- ReadSettingErrors
- ErrorCode
- Message
POST /v1/prefs/roaming:read HTTP/1.1 Content-Type: application/json Authorization: Bearer <office-access-token> { "Identity": "[email protected]", "Generation": 2, "Settings": [ {"SettingInfo": {"Id": "1067", "Knowledge": "-1"}} ] }{ "Generation": 2, "Settings": [ { "SettingData": { "SettingInfo": {"Id": "1067", "Knowledge": "3", "Context": null}, "Value": "<OfficeTheme>Colorful</OfficeTheme>" } } ], "ReadSettingErrors": null }Write Office roaming settings (SOAP)
POST
/v1/prefs/roaming:writeopendataSOAP-writes a single Office roaming SettingData row (Id, Knowledge, Value) and returns WriteSettingResult.ResultCode 1001 on success.
Auth: Azure AD token for the Office roaming resource. SOAPAction WriteSettings. Same regional roaming hosts as the read call.
- Identity
- Generation
- Id
- Knowledge
- Value
- Settings
- SettingData
- SettingInfo
- Results
- ResultCode
- WriteSettingResult
POST /v1/prefs/roaming:write HTTP/1.1 Content-Type: application/json Authorization: Bearer <office-access-token> { "Identity": "[email protected]", "Generation": 2, "Settings": [ { "SettingData": { "SettingInfo": {"Id": "1067", "Knowledge": "3"}, "Value": "<OfficeTheme>Colorful</OfficeTheme>" } } ] }{ "Generation": 2, "Results": [ { "ResultCode": "1001", "SettingInfo": {"Id": "1067", "Knowledge": "4", "Context": null} } ] }UCWA / Skype for Business autodiscover
GET
/v1/uc/discover?address={sipUri}opendataResolves the tenant's UCWA application entry (ucwa / ucwaUrl) plus internal/external autodiscover roots from the SIP URI so the native stack can open a UC session.
Auth: Unauthenticated host lookup. The follow-on user resource requires the SFB-audience Bearer token. The TLS stack treats expected autodiscover names as trusted UC entry points.
- sipuri
- sipdomain
- ucwa
- ucwaInternal
- externalUcwa
- intADRoot
- extADRoot
- clienttelemetryurl
- ucwaUrl
- ucwaCorrelationId
- ucwaTimestamp
GET /v1/uc/discover?address=sip:[email protected] HTTP/1.1 Accept: application/json{ "sipuri": "sip:[email protected]", "sipdomain": "example.com", "ucwa": "https://uc.example.com/v1/uc/sessions/", "ucwaInternal": "https://uc-internal.example.com/v1/uc/sessions/", "externalUcwa": "https://uc.example.com/v1/uc/sessions/", "intADRoot": "https://uc-internal.example.com/v1/uc/root", "extADRoot": "https://uc.example.com/v1/uc/root", "clienttelemetryurl": "https://telemetry.example.com/v1/collect", "ucwaUrl": "https://uc.example.com/v1/uc/sessions/", "ucwaCorrelationId": "6b2e1c90-9b11-4d2e-a7c4-0f8e6b1d2a33", "ucwaTimestamp": "2026-10-10T14:02:11Z" }Create a UCWA application session
POST
/v1/uc/sessionsopendataRegisters this Android endpoint on the UCWA pool (userAgent, endpointId, culture) and returns the application _links bag the native stack uses for me, people, communication and onlineMeetings.
Auth: Authorization: Bearer <access_token> for the SFB resource audience. Host is the ucwa URL returned by autodiscover (online, China and Germany tenants each resolve their own pool).
- userAgent
- endpointId
- culture
- _links
- self
- me
- people
- communication
- onlineMeetings
POST /v1/uc/sessions HTTP/1.1 Authorization: Bearer <sfb-access-token> Content-Type: application/json; charset=utf-8 { "userAgent": "Skype for Business Android/6.39.0.23", "endpointId": "c0a1e2b3-4d5e-6789-abcd-ef0123456789", "culture": "en-US" }{ "culture": "en-US", "userAgent": "Skype for Business Android/6.39.0.23", "endpointId": "c0a1e2b3-4d5e-6789-abcd-ef0123456789", "_links": { "self": {"href": "/v1/uc/sessions/112"}, "me": {"href": "/v1/uc/sessions/112/me"}, "people": {"href": "/v1/uc/sessions/112/people"}, "communication": {"href": "/v1/uc/sessions/112/communication"}, "onlineMeetings": {"href": "/v1/uc/sessions/112/meetings"} } }Register the endpoint as available (makeMeAvailable)
POST
/v1/uc/sessions/{sessionId}/availabilityopendataPosts the UCWA makeMeAvailable resource so this Android endpoint comes online for IM and phone-audio after the application session is created, retrying without the mobile number if posting phoneNumber fails.
Auth: Authorization: Bearer <access_token> for the SFB resource audience on the ucwaUrl application. The availability POST runs after the sessions resource returns makeMeAvailableRelativeUrl.
- signInAs
- supportedModalities
- phoneNumber
- makeMeAvailableRelativeUrl
POST /v1/uc/sessions/112/availability HTTP/1.1 Authorization: Bearer <sfb-access-token> Content-Type: application/json { "signInAs": "Online", "supportedModalities": ["Messaging", "PhoneAudio"], "phoneNumber": "+14255550123" }{ "status": "success", "signInAs": "Online", "supportedModalities": ["Messaging", "PhoneAudio"], "phoneNumber": "+14255550123" }Resolve Exchange EWS URLs (GetUserSettings)
POST
/v1/mailbox/locateopendataSOAP-autodiscovers the mailbox InternalEwsUrl / ExternalEwsUrl (and UM voicemail URLs) that later directory search, persona, calendar and PlayOnPhone calls target.
Auth: SOAP GetUserSettings. Follow-on mailbox calls use the SFB/EWS Bearer token or on-premises Exchange credentials. The client also probes a root locator with the SIP URI.
- Mailbox
- InternalEwsUrl
- ExternalEwsUrl
- InternalUMUrl
- ExternalUMUrl
- useLiveId
- useOAuth
POST /v1/mailbox/locate HTTP/1.1 Content-Type: application/json Authorization: Bearer <ews-access-token> { "Mailbox": "[email protected]", "RequestedSettings": ["InternalEwsUrl", "ExternalEwsUrl", "InternalUMUrl", "ExternalUMUrl"] }{ "Mailbox": "[email protected]", "InternalEwsUrl": "https://mail.example.com/mailbox", "ExternalEwsUrl": "https://mail.example.com/mailbox", "InternalUMUrl": "https://mail.example.com/mailbox/voicemail", "ExternalUMUrl": "https://mail.example.com/mailbox/voicemail", "useLiveId": false, "useOAuth": true }Search the Exchange directory (FindPeople)
POST
/v1/directory/people:searchosintRuns the people-picker keyword search against Exchange FindPeople and returns person rows for the contact card.
Auth: Authorization: Bearer <access_token> for the EWS resource audience (Office 365) or Exchange credentials collected on the on-premises sign-in banner. SOAP operation FindPeople.
- personaId
- displayName
- title
- imAddressSipUri
- changeKey
- phoneNumberTypes
- phoneNumberValues
- QueryString
POST /v1/directory/people:search HTTP/1.1 Authorization: Bearer <ews-access-token> Content-Type: application/json { "QueryString": "alex", "MaxEntriesReturned": 25, "Offset": 0 }{ "people": [ { "personaId": "AAMkAGI2...", "displayName": "Alex Rivera", "email": "[email protected]", "title": "Product Manager", "imAddressSipUri": "sip:[email protected]", "changeKey": "EQAAABYAAA...", "phoneNumberTypes": ["Business", "Mobile"], "phoneNumberValues": ["+14255550100", "+14255550123"] } ] }Load an Exchange persona card (GetPersona)
POST
/v1/directory/people/{personaId}osintHydrates a single Exchange persona when the user opens a contact card, using the personaId returned by FindPeople.
Auth: Authorization: Bearer <access_token> for the EWS resource audience, or on-premises Exchange credentials. SOAP operation GetPersona.
- personaId
- displayName
- title
- imAddressSipUri
- changeKey
- phoneNumberTypes
- phoneNumberValues
POST /v1/directory/people/AAMkAGI2 HTTP/1.1 Authorization: Bearer <ews-access-token> Content-Type: application/json { "personaId": "AAMkAGI2..." }{ "personaId": "AAMkAGI2...", "displayName": "Alex Rivera", "email": "[email protected]", "title": "Product Manager", "imAddressSipUri": "sip:[email protected]", "changeKey": "EQAAABYAAA...", "phoneNumberTypes": ["Business"], "phoneNumberValues": ["+14255550100"] }List mailbox calendar meetings (FindItem)
POST
/v1/mailbox/calendar:listopendataPages the signed-in mailbox calendar that the Meetings tab renders, including Skype meeting join URLs and PSTN dial-in extracted from calendar item properties.
Auth: Authorization: Bearer <access_token> for the EWS resource audience after mailbox sign-in. SOAP operation FindItem against the Calendar folder.
- subject
- start
- end
- location
- organizer
- organizerEmail
- onlineMeetingExternalLink
- onlineMeetingInternalLink
- onlineMeetingConfLink
- requiredAttendees
- optionalAttendees
- myResponseType
- isAllDayEvent
- pstnBestAvailableNumber
- pstnPostDialString
POST /v1/mailbox/calendar:list HTTP/1.1 Authorization: Bearer <ews-access-token> Content-Type: application/json { "StartDate": "2026-10-10T00:00:00Z", "EndDate": "2026-10-17T00:00:00Z" }{ "items": [ { "subject": "Platform standup", "start": "2026-10-10T15:00:00Z", "end": "2026-10-10T15:30:00Z", "location": "Conf Room 4", "organizer": "Alex Rivera", "organizerEmail": "[email protected]", "onlineMeetingExternalLink": "https://meet.example.com/example/alex.rivera/ABC123", "onlineMeetingInternalLink": "sip:[email protected];gruu;opaque=app:conf:focus:id:ABC123", "onlineMeetingConfLink": "conf:sip:[email protected];gruu;opaque=app:conf:focus:id:ABC123", "requiredAttendees": ["[email protected]"], "optionalAttendees": [], "myResponseType": "Accept", "isAllDayEvent": false, "pstnBestAvailableNumber": "+14255551999", "pstnPostDialString": ",,123456#" } ] }Publish self presence and personal note
POST
/v1/uc/me/presenceosintPublishes the signed-in user's PublishableState (Free, Busy, BeRightBack, DoNotDisturb, Away, Offwork, Reset) and personalNote that colleagues see as presence dots.
Auth: Authorization: Bearer <access_token> for the SFB resource audience, scoped to the ucwaUrl from autodiscover. The UC session holds the application.
- availability
- publishableState
- personalNote
- activity
- deviceType
- ucSipUri
- displayName
- title
- company
- office
- location
- noteType
- lastActivityTime
POST /v1/uc/me/presence HTTP/1.1 Authorization: Bearer <sfb-access-token> Content-Type: application/json { "availability": "Busy", "publishableState": "PublishableStateBusy", "personalNote": "In a customer call" }{ "availability": "Busy", "publishableState": "PublishableStateBusy", "personalNote": "In a customer call", "activity": "in-a-call", "deviceType": "Mobile", "ucSipUri": "sip:[email protected]", "displayName": "Alex Rivera", "title": "Product Manager", "company": "Example Corp", "office": "Redmond 18", "location": "Building 18", "noteType": "Personal", "lastActivityTime": 1760104800 }List UCWA team members and pending contacts
GET
/v1/uc/me/teamosintReads the signed-in user's UCWA team-call membership and pending contact invitations that simultaneous-ring-to-team and people-picker flows consult.
Auth: Authorization: Bearer <access_token> for the SFB resource audience on the ucwaUrl application. Pending invitations use the sibling pending-contacts resource.
- teamMembers
- pendingContacts
- ucSipUri
- displayName
- availability
- deviceType
- isTeamCallEnabled
- isDelegationEnabled
GET /v1/uc/me/team HTTP/1.1 Authorization: Bearer <sfb-access-token> Accept: application/json{ "teamMembers": [ { "ucSipUri": "sip:[email protected]", "displayName": "Sam Lee", "availability": "Available", "deviceType": "Desktop" } ], "pendingContacts": [ { "ucSipUri": "sip:[email protected]", "displayName": "Jordan Patel" } ], "isTeamCallEnabled": true, "isDelegationEnabled": false }Read and activate call-routing configuration
GET
/v1/uc/me/routingopendataReads the signed-in user's call-forward / simultaneous-ring policy (delegates, voicemail, custom SIP target, team ring) that the Call Forwarding settings screen edits.
Auth: Authorization: Bearer <access_token> for the SFB resource audience on the ucwaUrl application.
- routingMode
- forwardCustomTarget
- simuRingCustomTarget
- activePeriod
- lineUri
- callBackNumber
- workPhone
- mobilePhone
- homePhone
- otherPhone
- isCallForwardingAllowed
- isCallForwardAllowedToVoicemail
- isCallForwardAllowedToDelegates
- isCallForwardAllowedToCustomTarget
- isSimultaneousRingAllowed
- isSimultaneousRingAllowedToTeam
- isSimultaneousRingAllowedToDelegates
- isDelegationEnabled
- isTeamCallEnabled
GET /v1/uc/me/routing HTTP/1.1 Authorization: Bearer <sfb-access-token> Accept: application/json{ "routingMode": "FwdMode_CustomTarget", "forwardCustomTarget": "sip:[email protected]", "simuRingCustomTarget": null, "activePeriod": "ActivePeriod_Workinghours", "lineUri": "tel:+14255550100", "callBackNumber": "+14255550123", "workPhone": "+14255550100", "mobilePhone": "+14255550123", "homePhone": "", "otherPhone": "", "isCallForwardingAllowed": true, "isCallForwardAllowedToVoicemail": true, "isCallForwardAllowedToDelegates": true, "isCallForwardAllowedToCustomTarget": true, "isSimultaneousRingAllowed": true, "isSimultaneousRingAllowedToTeam": false, "isSimultaneousRingAllowedToDelegates": true, "isDelegationEnabled": true, "isTeamCallEnabled": false }List my online meetings
GET
/v1/uc/meetingsopendataLists the user's scheduled UCWA online meetings (myOnlineMeetings / myAssignedOnlineMeeting) that the join button and lobby controls hang off.
Auth: Authorization: Bearer <access_token> for the SFB resource audience. Rel named myOnlineMeetings (and myAssignedOnlineMeeting) on the meetings manager.
- onlineMeetingRel
- subject
- onlineMeetingExternalLink
- onlineMeetingInternalLink
- organizer
- automaticLeaderAssignment
- phoneUserAdmission
- lobbyBypassForPhoneUsers
- entryExitAnnouncement
GET /v1/uc/meetings HTTP/1.1 Authorization: Bearer <sfb-access-token> Accept: application/json{ "meetings": [ { "onlineMeetingRel": "OnlineMeetingRelmyOnlineMeetings", "subject": "Weekly ops", "onlineMeetingExternalLink": "https://meet.example.com/example/alex.rivera/WKLY01", "onlineMeetingInternalLink": "sip:[email protected];gruu;opaque=app:conf:focus:id:WKLY01", "organizer": "Alex Rivera", "automaticLeaderAssignment": "SameEnterprise", "phoneUserAdmission": "Enabled", "lobbyBypassForPhoneUsers": "Disabled", "entryExitAnnouncement": "Enabled" } ] }List Exchange voicemail items
POST
/v1/mailbox/voicemail:listopendataPages the signed-in mailbox VoiceMail folder that the voicemail screen renders, including caller PSTN/SIP identity and the attachment duration used by the in-app player.
Auth: Authorization: Bearer <access_token> for the EWS resource audience, or on-premises Exchange credentials. SOAP FindItem against the VoiceMail distinguished folder, then GetItem / GetAttachment for the audio payload.
- key
- subject
- normalizedSubject
- ucSubject
- dateTimeReceived
- senderTelephoneNumber
- pstnCallbackTelephoneNumber
- sipUri
- attachmentDurationInSeconds
- messageIsRead
- itemImportanceLevel
- itemSensitivityLevel
- body
POST /v1/mailbox/voicemail:list HTTP/1.1 Authorization: Bearer <ews-access-token> Content-Type: application/json { "folder": "voicemail", "shape": "IdOnly" }{ "items": [ { "key": "AAMkAGI2...", "subject": "Voice Mail from +14255550123", "normalizedSubject": "Voice Mail from +14255550123", "ucSubject": "Missed call", "dateTimeReceived": "2026-10-10T13:41:02Z", "senderTelephoneNumber": "+14255550123", "pstnCallbackTelephoneNumber": "+14255550123", "sipUri": "sip:[email protected]", "attachmentDurationInSeconds": 18, "messageIsRead": false, "itemImportanceLevel": "Normal", "itemSensitivityLevel": "Normal", "body": "You have a new voice mail." } ] }Play a voicemail on a phone
POST
/v1/mailbox/voicemail/{itemKey}/playopendataAsks Exchange to ring DialString and play the selected voicemail item (PlayOnPhone), the action the voicemail row exposes when canPlayOnPhone is true.
Auth: Authorization: Bearer <access_token> for the EWS resource audience. SOAP operation PlayOnPhone; cancel uses cancelPlayOnPhone on the same mailbox item.
- playOnPhoneId
- itemKey
- DialString
- canPlayOnPhone
- isPlayOnPhonePending
POST /v1/mailbox/voicemail/AAMkAGI2/play HTTP/1.1 Authorization: Bearer <ews-access-token> Content-Type: application/json { "itemKey": "AAMkAGI2...", "DialString": "+14255550100" }{ "playOnPhoneId": "NwAAAA==", "itemKey": "AAMkAGI2...", "dialString": "+14255550100", "canPlayOnPhone": true, "isPlayOnPhonePending": true }Submit a Send-a-Smile / BRB diagnostic report
POST
/v1/diagnostics/reportsopendataOpens a diagnostic blob container for a user-submitted Send-a-Smile / BRB report and returns ContainerID plus a SharedAccessSignature the client uses to upload logs.
Auth: JSON body carries ClientID=sfb_android and SkypeAuthToken. Follow-up log upload uses the SharedAccessSignature returned with ContainerID; a later release call frees the blob.
- ReportTitle
- ReportDescription
- CategoryName
- ClientID
- ClientVersion
- MSAlias
- UploadID
- SkypeAuthToken
- SystemInfo
- ContainerID
- SharedAccessSignature
POST /v1/diagnostics/reports HTTP/1.1 Content-Type: application/json { "ReportTitle": "Call drop after hold", "ReportDescription": "Audio modality dropped when resuming from hold", "CategoryName": "Calling", "ClientID": "sfb_android", "ClientVersion": "6.39.0.23", "MSAlias": "[email protected]", "UploadID": "c0a1e2b3-4d5e-6789-abcd-ef0123456789", "SkypeAuthToken": "<brb-token>", "SystemInfo": "Android 14; Pixel 8" }{ "ContainerID": "brb-6b2e1c90", "SharedAccessSignature": "https://storage.example.com/brb-6b2e1c90?<sas>" }
Data categories
- oauth tokens
- tenant privacy profile
- office cloud policies
- roaming settings
- ucwa autodiscover
- directory people
- exchange personas
- calendar meetings
- presence
- call routing
- online meetings
- diagnostic reports
- voicemail
- ucwa application
- ews autodiscover
- team members
- endpoint availability
Where teams use this data
Live directory + presence overlay
An internal people directory joins FindPeople personaId, displayName, imAddressSipUri and phoneNumberValues with the self-presence PublishableState and personalNote so a receptionist console can show who is Free, Busy or DoNotDisturb before transferring a PSTN call.
Meeting-room join panel
A room panel reads mailbox FindItem rows for onlineMeetingExternalLink, start/end and pstnBestAvailableNumber, then matches myOnlineMeetings automaticLeaderAssignment so a hallway display can one-tap join the next Skype meeting without typing a conference ID.
After-hours call-routing audit
Voice ops pull routingMode, forwardCustomTarget, simuRingCustomTarget and activePeriod overnight and flag mailboxes still forwarding to a personal mobilePhone outside ActivePeriod_Workinghours.
Tenant policy drift check
Compliance bots hash the OCPS policiesPayload (settingId, enabled, value) plus the Graph privacyProfile.statementUrl and alert when a Skype for Business Android policy silently flips file-transfer or privacy text.
Frequently asked questions
How does Skype for Business for Android authenticate?
Azure AD issues access tokens against three resource audiences: SFB for UCWA sessions, EWS for the mailbox, and Graph for the tenant privacy profile. On-premises pools still accept Exchange credentials collected on the mailbox sign-in banner.
Which directory, calendar and voicemail fields are available?
Directory search and persona-card loads return personaId, displayName, email, title, imAddressSipUri and phone numbers. Calendar rows include subject, start, end, organizerEmail, onlineMeetingExternalLink and PSTN dial-in (pstnBestAvailableNumber, pstnPostDialString). Voicemail items add senderTelephoneNumber, attachmentDurationInSeconds and canPlayOnPhone.
Can presence and call forwarding be read?
Yes. The me-presence resource publishes PublishableState values (Free, Busy, BeRightBack, DoNotDisturb, Away, Offwork) plus personalNote. Call-routing settings return routingMode, forwardCustomTarget, simuRingCustomTarget, activePeriod, lineUri and the isCallForwardAllowed* / isSimultaneousRingAllowed* flags. Team-call membership adds isTeamCallEnabled and isDelegationEnabled.
Where do Office cloud policies come from?
The Android client fetches the Office cloud policy bag with a Bearer token and parses policiesHash plus per-setting settingId, enabled and value. Roaming SettingData (Id, Knowledge, Value) is read over SOAP from the Office roaming service.
Apps similar to Skype for Business for Android
- Microsoft Teams — Microsoft Teams is Microsoft's Microsoft 365 collaboration app for workspace chat, video conferencing and file storage, and it replaced Skype for Business as the successor client.
- Zoom Workplace — Zoom Workplace is Zoom Communications' videotelephony app for online meetings; the free plan allows up to 100 concurrent participants with a 40-minute time limit.
- Slack — Slack is a cloud-based team communication platform from Slack Technologies, owned by Salesforce since 2021, and is offered mainly as a business-to-business messaging service.
- Cisco Webex — Webex by Cisco develops web conferencing, videoconferencing and unified-communications apps, including Webex Meetings, Webex Messaging and Webex Calling.
- Google Meet — Google Meet is Google's video communication service and, together with Google Chat, is one of the two apps that replaced Google Hangouts.
- Google Chat — Google Chat is Google's Workspace messaging service for direct messages, group conversations and spaces where teams chat, share files and assign tasks.
- GoTo Meeting — GoTo Meeting is GoTo's web conferencing tool for business use that lets people host and join virtual meetings, share screens and talk over audio and video.
Topics
- Skype for Business API
- Skype for Business Android endpoints
- UCWA session ucwaUrl
- Exchange directory personaId
- mailbox calendar onlineMeetingExternalLink
- Skype for Business presence PublishableState
- call forwarding routingMode
- Office cloud policies policiesHash
- Azure AD SFB EWS Graph tokens
- Skype for Business voicemail canPlayOnPhone
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use