Miscellaneous¶
Endpoints¶
An endpoint represents a single connection between Skype and a client. A user may have multiple endpoints connected, for example if running Skype on their desktop and their phone. Similarly, connecting through SkPy creates a new endpoint.
There is a noticeable difference between being connected (at least one open endpoint) and being available (at least one client set status to Online). Skype for Web makes the distinction by showing an empty white circle when all clients claim to be offline, but no circle at all for no endpoints connected.
For desktop clients, the Invisible status sets its endpoint to be offline, whereas Offline actually disconnects the endpoint from the network.
Pagination¶
Some APIs, such as fetching recent conversations or messages, include syncState
URLs in the response. This allows you to fetch subsequent pages of data by calling this URL rather than the documented one.
{...
"_metadata": {"backwardLink": "https://db3-client-s.gateway.messenger.live.com/v1/...?syncState=...&view=msnp24Equivalent",
"forwardLink": "https://db3-client-s.gateway.messenger.live.com/v1/...?syncState=...&view=msnp24Equivalent",
"syncState": "https://db3-client-s.gateway.messenger.live.com/v1/...?syncState=...&view=msnp24Equivalent",
"totalCount": 10},
...}
The backwardLink
and forwardLink
attributes link to the previous and next result set, whilst syncState
is the current page URL, and the one needed to retrieve all results.
Typically (for recents), the first call will give you the 10 most recent objects of that type. The response from the provided syncState
URL would be objects 11 to 20, and a new syncState
URL for objects 21 to 30, and so on. If a new object becomes available in the meantime, it is provided in the next synced call. For example, assume we start on item 100. The first call will provide items 100 to 91 (the 10 most recent). The next call gives 90 to 81. Two more items show up, 101 and 102. The next call will now give 102, 101, and 80 to 73.
Web UI options¶
Skype for Web allows configuring various server-side settings for the connected account. This table shows how UI options map to flags and options:
Setting |
Value |
Flags/options |
---|---|---|
Notifications tab |
||
Notifications |
ON |
21=OFF |
Sounds |
ON |
22=OFF |
Messaging tab |
||
Web link previews |
ON |
11=OFF |
YouTube player |
ON |
12=ON |
@mention notifications |
ON |
13=OFF |
Enable image paste (removed) |
ON |
14=ON |
Typing indicator |
ON |
20=OFF |
Emoticon suggestions |
ON |
23=ON |
Show emoticons |
ON |
24=OFF |
Show animated emoticons |
ON |
25=OFF |
Show large emoticons |
ON |
26=OFF |
Pin favorites (removed) |
ON |
27=OFF |
Privacy tab |
||
Allow calls from… [1] |
Anyone |
OPT_SKYPE_CALL_POLICY=0 |
Contacts only |
OPT_SKYPE_CALL_POLICY=2 |
|
Allow video and screen sharing from… |
Anyone |
15=OFF, 16=OFF |
Contacts only |
15=ON, 16=OFF |
|
Nobody |
15=OFF, 16=ON |
|
Personalization tab |
||
Dark theme |
ON |
28=ON |
- GET https://flagsapi.skype.com/api/v1¶
Retrieve all flags set for the current user.
[1, 12, 14, 15]
- PUT https://flagsapi.skype.com/api/v1/(int: id)¶
Set (enable) a flag.
- Parameters:
id – flag identifier
- DELETE https://flagsapi.skype.com/api/v1/(int: id)¶
Clear (disable) a flag.
- Parameters:
id – flag identifier
- GET https://api.skype.com/users/(str: id)/options/(str: option)¶
Get an option’s value. One of
optionInt
,optionBin
oroptionStr
will be set in the response.- Parameters:
id – user identifier of connected account
option – option name
{"optionInt": 0, "optionName": "OPT_SKYPE_NAME", "optionBin": null, "optionStr": null}
- POST https://api.skype.com/users/(str: id)/options/(str: option)¶
Set an option’s value.
Note
There are probably
stringValue
andbinaryValue
form fields too, but no options of those types currently exist.- Parameters:
id – user identifier of connected account
option – option name
- Form Parameters:
integerValue – new value to set
Profile and services¶
The people settings endpoint provides another interface for setting account-wide options. Currently the only known one here is Skype.AutoBuddy
, for automatically adding address book contacts to the Skype contact list.
- GET https://people.directory.live.com/people/account/settings¶
Retrieve all set options.
Note
Skype.AutoBuddy
is only returned if true. The value is also returned as a string.- Request Headers:
X-AppId –
5c7a1e34-3a23-4a36-b2e6-7aa15be85f07
X-SerializeAs –
purejson
{"Settings": [{"Name": "Skype.AutoBuddy", "Value": "true"}]}
- POST https://people.directory.live.com/people/account/settings¶
Update one or more options.
Note
Boolean values are passed as booleans here, despite being retrieved as a string.
- Request Headers:
X-AppId –
5c7a1e34-3a23-4a36-b2e6-7aa15be85f07
X-SerializeAs –
purejson
- Request JSON Array of Objects:
Settings – subset of data to add or edit
The profile provides access to contact email addresses and phone numbers on the account.
- GET https://pf.directory.live.com/profile/mine/System.ShortCircuitProfile.json¶
Retrieve all profile information for the connected account.
- Request Headers:
PS-ApplicationId –
5c7a1e34-3a23-4a36-b2e6-7aa15be85f07
{"TraceGraph": null, "Views": [{"Attributes": [{"Acl": null, "Name": "PersonalContactProfile.Emails", "Value": [{"Acl": null, "AddSearchableApplications": null, "DeleteSearchableApplications": null, "HasSearchableApplications": true, "Label": "Email_Other", "Name": "fred.adams@live.co.uk", "Searchable": true, "SearchableApplications": [{"Name": "Skype"}], "Source": "Msa", "State": "Verified"}]}, {"Acl": null, "Name": "PersonalContactProfile.Emails.LastModified", "Value": "/Date(1451606400000)/"}, {"Acl": null, "Name": "PhoneVerificationQosAlert", "Value": 0}, {"Acl": null, "Name": "PersonalContactProfile.Phones", "Value": [{"Acl": "", "AddSearchableApplications": null, "Country": "UK-44", "CountryName": "UK", "DeleteSearchableApplications": null, "HasSearchableApplications": false, "Label": "Phone_Other", "Name": "07012345678", "Searchable": false, "SearchableApplications": [], "Source": "Msa", "State": "Verified", "SuggestedVerifyMethod": "Sms"}]}], "Id": {"Cid": "-9000000000000000000", "Puid": null}}]}
- POST https://pf.directory.live.com/profile/mine/System.ShortCircuitProfile.json¶
Make changes to a part of the profile information.
- Request Headers:
PS-ApplicationId –
5c7a1e34-3a23-4a36-b2e6-7aa15be85f07
- Request JSON Array of Objects:
Attributes – subset of data to add or edit
Services are additional or paid featured applied to an account, such as voicemail, local numbers, and Skype minutes.
- GET https://consumer.entitlement.skype.com/users/(string: id)/services¶
Retrieve a list of all active services.
- Query Parameters:
id – user identifier of connected account
- Request Headers:
Accept –
application/json; ver=3.0
[{"active": false, "attributes": {"currency": "GBP"}, "balance": 0, "balanceFormatted": "£0.00", "end": null, "href": "/users/fred.2/services/pstn", "id": "pstn", "reset": null, "service": "pstn", "start": null}, {"active": true, "end": "2036-01-01T00:00:00+00:00", "href": "/users/fred.2/services/voicemail", "id": "voicemail", "reset": null, "service": "voicemail", "start": "2016-01-01T00:00:00+00:00"}, {"active": true, "end": "2016-01-01T00:00:00+00:00", "href": "/users/fred.2/services/pstn_transfer", "id": "pstn_transfer", "reset": null, "service": "pstn_transfer", "start": "2016-01-01T00:00:00+00:00"}, {"active": true, "attributes": {"monthly_minutes": 60, "package": "api_300-region-landline-world-60"}, "balance": 60, "data": {"calling_plan": "api_300-region-landline-world", "href": "/offers/calling-legacy/skus/package-api_300-region-landline-world-60/subscriptions/package-api_300-region-landline-world-60-1m", "nameFormatted": "World minutes for Office 365 60 mins 1 month"}, "end": "2017-01-01T00:00:00+00:00", "href": "/users/fred.2/services/package.api_300-region-landline-world-60", "id": "package.api_300-region-landline-world-60", "quota": 60, "reset": "2016-02-01T00:00:00+00:00", "service": "package", "start": "2016-01-01T00:00:00+00:00"}]
- GET https://consumer.entitlement.skype.com/users/(string: id)/services/(string: service)¶
Fetch details for a single service.
- Query Parameters:
id – user identifier of connected account
service – active service identifier
- Request Headers:
Accept –
application/json; ver=3.0
{"active": false, "attributes": {"currency": "GBP"}, "balance": 0, "balanceFormatted": "£0.00", "end": null, "href": "/users/fred.2/services/pstn", "id": "pstn", "reset": null, "service": "pstn", "start": null}
URL scanning¶
On Skype for Web, URLs in messages are displayed as rich block links containing a thumbnail and blurb.
- GET https://urlp.asm.skype.com/v1/url/info¶
- Query Parameters:
url – address to ping for info
{"category": "generic", "content_type": "text/html", "description": "Search the world's information, including webpages, images, videos and more.", "favicon": "https://eus1-urlp.secure.skypeassets.com/static/google-32x32.ico", "favicon_meta": {"height": 32, "width": 32}, "site": "www.google.com", "size": "-1", "status_code": "200", "thumbnail": "https://eus1-urlp.secure.skypeassets.com/static/google-90x90.png", "thumbnail_meta": {"height": 90, "width": 90}, "title": "Google", "url": "http://google.com/", "user_pic": ""}
Static resources¶
Skype provides a single JSON file containing all emoticons, animations and videos. Each release (i.e. when any resources are added or removed) has a different hash.
- GET https://static-asm.secure.skypeassets.com/pes/v1/configs/(string: hash)/views/en¶
Retrieve a list of all resources, along with their shortcuts and visibility.
- Parameters:
hash – version identifier for the static set
Tracking¶
There appears to be several analytics/tracking tools in place on Skype for Web, from the following domains:
browser.pipe.aria.microsoft.com
c1.microsoft.com
go.trouter.io
and*.drip.trouter.io
pipe.skype.com
Unsupported features¶
P2P group chats¶
These are the older variants of group conversations, referenced by blob rather than thread ID, and not stored centrally on Skype’s servers. As such, these are not available via Skype for Web.
Note
You can “convert” a P2P chat to a threaded conversation from within a supported client, by using the /fork
command. This creates a new cloud group chat with the same participants.
Multiple file transfers¶
It appears that file transfers involving more than one file are handled differently within downloadable clients, and are not yet available over Skype for Web (the message is replaced with “Receiving files over P2P network is not supported on Skype for Web”).
This forum post notes that there are two file transfer modes, one of which is “cloud transfer” and works with Skype for Web. Other clients will likely be updated to support this at some point.