[0.1.4-alpha.1] xml examples, NOT stuff, fixes

updated yiki also
This commit is contained in:
Declan B. 2024-11-19 20:23:28 +00:00
parent f096fe907f
commit 0cfc511907
Signed by: yellows111
SSH key fingerprint: SHA256:ynw5IJBU1pb7fZfHgLihKu9gHHA8FVpixZbB6IEB3r8
31 changed files with 1247 additions and 187 deletions

View file

@ -3,7 +3,8 @@
It is a Notification Server command, without either a request or response payload.
Changes your presence status, and sets your Client Capabilities and MSNObject in later MSNP versions.
Changes your presence status,
and sets your [Client Capabilities](../files/client_capabilities.md) and MSNObject in later MSNP versions.
# Client/Request
`CHG TrID status {flags} {msnobj}`
@ -20,7 +21,7 @@ Where `status` can be any of the below:
* `FLN`: Semi-offline. More on this below.
In [MSNP8](../versions/msnp8.md) and higher, `flags`, an optional parameter may be used to
specify your Client Capabilities.
specify your [Client Capabilities](../files/client_capabilities.md).
In [MSNP9](../versions/msnp9.md) and higher, `msnobj`, an optional parameter may be used to
add additional information related to your user. Requires that `flags` MUST be set to use.
@ -91,6 +92,6 @@ C: CHG 4 HOT
Server disconnects client.
# Known changes
* [MSNP8](../versions/msnp8.md): Added optional Client Capabilities parameter (as parameter 2).
* [MSNP8](../versions/msnp8.md): Added optional [Client Capabilities](../files/client_capabilities.md) parameter (as parameter 2).
* [MSNP9](../versions/msnp9.md): Added optional MSNObject parameter (as parameter 3).
* Removed in MSNP24.

View file

@ -35,7 +35,7 @@ S: NOT 367
</NOTIFICATION>
```
## Advanced notification
## Extended notification
*Since [MSNP9](../versions/msnp9.md).*
```
S: NOT 457
@ -55,7 +55,7 @@ S: NOT 457
## Blog update notification
*Since [MSNP11](../versions/msnp11.md).*
```
S: NOT 1249
S: NOT 1264
<NOTIFICATION id="2" siteid="45705" siteurl="http://storage.msn.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com">
<VIA agent="messenger"/>
@ -64,7 +64,10 @@ S: NOT 1249
<ACTION url="a.htm" />
<SUBSCR url="s.htm" />
<BODY>
&lt;NotificationData xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
&lt;NotificationData
xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
&gt;
&lt;SpaceHandle&gt;
&lt;ResourceID&gt;example1!101&lt;/ResourceID&gt;
&lt;/SpaceHandle&gt;
@ -93,7 +96,7 @@ S: NOT 1249
## Contact update notification
*Since [MSNP13](../versions/msnp13.md).*
```
S: NOT 685
S: NOT 694
<NOTIFICATION id="2" siteid="45705" siteurl="http://contacts.msn.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com">
<VIA agent="messenger"/>
@ -102,7 +105,10 @@ S: NOT 685
<ACTION url="a.htm" />
<SUBSCR url="s.htm" />
<BODY>
&lt;NotificationData xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
&lt;NotificationData
xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
&gt;
&lt;Service&gt;ABCHInternal&lt;/Service&gt;
&lt;CID&gt;4294967298&lt;/CID&gt;
&lt;LastModifiedDate&gt;2024-10-26T09:33:27.1020000-08:00&lt;/LastModifiedDate&gt;
@ -122,6 +128,7 @@ C: NOT 1 0
Server disconnects client.
# Known changes
* [MSNP9](../versions/msnp9.md): Added support for extended notifications using the `<TEXTX>` element.
* [MSNP11](../versions/msnp11.md): Using an `<NotificationData>` sub-document embedded into a `<NOTIFICATION>` document is supported.
Using the new sub-document, live blog updates are now sent.
* [MSNP13](../versions/msnp13.md): Used for [Address Book Service](../services/abservice.md) live updates using the `<NotificationData>` sub-document.

View file

@ -12,6 +12,7 @@ payload
```
Where `public-key` is your client's Public Key.
For a list of valid Public Keys, read the [Challenge Key Pairs](../files/challenge_keypairs.md) article.
Where `length` is the size (in bytes) of the `payload`.
@ -20,6 +21,8 @@ Where `payload` is the challenge response.
## Challenge responses
Calculating the challenge response depends on the version of the protocol you are using.
For a list of valid Private Keys, read the [Challenge Key Pairs](../files/challenge_keypairs.md) article.
### Basic responses
*Only in [MSNP6](../versions/msnp10.md) to [MSNP10](../versions/msnp10.md).*

View file

@ -0,0 +1,47 @@
# Introduction
Challenges ([CHL](../commands/chl.md) commands) require a key pair (for the [QRY](../commands/qry.md) command) to be solved.
The following is a list of valid key pairs.
If you know of a key pair not on this list,
or just the Public Key associated with a client, feel free to contact me.
Format of the Public Keys (except the first `msmsgs@msnmsgr.com` one)
seems to be "PROD", then four digits, the first being a `0`, than 8 random characters.
The four digits seem to increase by at least `1` every time a new key pair is made.
Private keys seem to have a format of 16 random characters.
Random characters in both cases will match the regular expression of
`[A-Z0-9{}!@*%_?$#]`.
# Old key pairs
*Only in [MSNP6](../versions/msnp6.md) to [MSNP10](../versions/msnp10.md).*
| `PUBLIC KEY` | `PRIVATE KEY` | Introduced with... |
| ------------ | ------------- | ------------------ |
|`msmsgs@msnmsgr.com`| `Q1P7W2E4J9R8U3S5` | Client Version 3.6.0038 ([MSNP6](../versions/msnp6.md)) |
| `PROD0038W!61ZTF9` | `VT6PX?UQTM4WM%YR` | Client Version ?.?.???? |
| `PROD0058#7IL2{QD` | `QHDCY@7R1TB6W?5B` | Client Version ?.?.???? |
| `PROD0061VRRZH@4F` | `JXQ6J@TUOGYV@N0M` | Client Version ?.?.???? |
| `PROD00504RLUG%WL` | `I2EBK%PYNLZL5_J4` | Client Version ?.?.???? |
| `PROD0076ENE8*@AW` | `CEQJ8}OE0!WTSWII` | Client Version ?.?.???? |
| `PROD00517IFH4@RV` | ? | Client Version ?.?.???? |
# New key pairs
*Since [MSNP11](../versions/msnp11.md).*
| `PUBLIC KEY` | `PRIVATE KEY` | Introduced with... |
| ------------ | ------------- | ------------------ |
| `PROD008955JTJ_S7` | ? | Client Version 7.?.???? |
| `PROD0090YUAUV{2B` | `YMM8C_H7KCQ2S_KL` | Client Version 7.?.???? ([MSNP11](../versions/msnp11.md)) |
| `PROD00974#MT*RC2` | `LMCVO*18PQJ3H!K3` | Client Version 7.?.???? |
| `PROD0101{0RM?UBW` | `CFHUR$52U_{VIX5T` | Client Version 7.0.0777 (unconfirmed) |
| `PROD0104U6VVM{UJ` | `VK67B}379XYM5}$T` | Client Version 7.5.???? |
| `PROD01065C%ZFN6F` | `O4BG@C7BWLYQX?5G` | Client Version 8.0.0328 (unconfirmed) |
| `PROD0112J1LW7%NB` | `RH96F{PHI8PPX_TJ` | Client Version 8.0.0812 (unconfirmed) |
| `PROD0113H11T8$X_` | `RG@XY*28Q5QHS%Q5` | Client Version 8.1.0168 (unconfirmed) |
| `PROD0114ES4Z%Q5W` | `PK}_A_0N_K%O?A9S` | Client Version 8.1.0178 (unconfirmed) |
| `PROD0118R6%2WYOS` | `YIXPX@5I2P0UT*LK` | Client Version 8.5.1235 (unconfirmed) |
| `PROD0119GSJUC$18` | `ILTXC!4IXB5FB*PX` | Client Version 8.5.1288 (unconfirmed) |
| `PROD0120PW!CCV9@` | `C1BX{V4W}Q3*10SM` | Client Version 14.0.8050 (unconfirmed)|

View file

@ -0,0 +1,63 @@
# Information
Client Capabilities are a feature introduced with [MSNP8](../versions/msnp8.md)
to notify other clients what optional features your client supports.
This was expanded in [MSNP16](../versions/msnp16.md) with Extended Client Capabilities.
# Client Capabilities
*Since [MSNP8](../versions/msnp8.md).*
| `hexadecimal` | `decimal` | meaning |
| ------------- | ------------ | ------- |
| `0x00000001` | `1` | The user is on a mobile device. |
| `0x00000002` | `2` | The user is the MSN Desktop client, version 8 or above. |
| `0x00000004` | `4` | The user's client supports receiving Ink. (GIF) |
| `0x00000008` | `8` | The user's client supports sending Ink. (ISF) |
| `0x00000010` | `16` | The user has a webcam and is sharing the fact they have one. |
| `0x00000020` | `32` | The user's client supports messages sent over multiple packets. |
| `0x00000040` | `64` | The user can be messaged via their mobile device. |
| `0x00000080` | `128` | The user can be messaged via their Web Watch. |
| `0x00000100` | `256` | ? |
| `0x00000200` | `512` | The user is on a web-based client. |
| `0x00000400` | `1024` | ? |
| `0x00000800` | `2048` | The user is using Microsoft Office Communicator via a cross-platform gateway. |
| `0x00001000` | `4096` | The user has a blog. |
| `0x00002000` | `8192` | The user is using a media center client. |
| `0x00004000` | `16384` | The user's client supports opening a direct connection for instant messaging. |
| `0x00008000` | `32768` | The user's client supports sending and receiving Winks (flash animations). |
| `0x00010000` | `65536` | The user's client supports the shared search feature. |
| `0x00020000` | `131072` | This client is a provisioned user. (User is a bot) |
| `0x00040000` | `262144` | The user's client supports sending and receiving Voice Clips. |
| `0x00080000` | `524288` | The user's client supports encrypted conversations. |
| `0x00100000` | `1048576` | ... |
| `0x00200000` | `2097152` | ... |
| `0x00400000` | `4194304` | ... |
| `0x00800000` | `8388608` | ... |
| `0x01000000` | `16777216` | ... |
| `0x02000000` | `33554432` | ... |
| `0x04000000` | `67108864` | ... |
| `0x08000000` | `134217728` | ... |
| `0x10000000` | `268435456` | The user's client supports MSNC1. (Client Version 6.0+) |
| `0x20000000` | `536870912` | The user's client supports MSNC2 and below. (Client Version 6.1+) |
| `0x30000000` | `805306368` | The user's client supports MSNC3 and below. (Client Version 6.2+) |
| `0x40000000` | `1073741824` | The user's client supports MSNC4 and below. (Client Version 7.0+) |
| `0x50000000` | `1342177280` | The user's client supports MSNC5 and below. (Client Version 7.5+) |
| `0x60000000` | `1610612736` | The user's client supports MSNC6 and below. (Client Version 8.0+) |
| `0x70000000` | `1879048192` | The user's client supports MSNC7 and below. (Client Version 8.1+) |
| `0x80000000` | `2147483648` | The user's client supports MSNC8 and below. (Client Version 8.5+) |
| `0x90000000` | `2415919104` | The user's client supports MSNC9 and below. (Client Version 9.0+) |
| `0xA0000000` | `2684354560` | The user's client supports MSNC10 and below. (Client Version 14.0+) |
| `0xB0000000` | `2952790016` | The user's client supports MSNC11 and below. (Client Version 14.1+) |
| `0xC0000000` | `3221225472` | The user's client supports MSNC12 and below. (Client Version 15.0+) |
| `0xD0000000` | `3489660928` | The user's client supports MSNC13 and below. |
| `0xE0000000` | `3758096384` | The user's client supports MSNC14 and below. |
| `0xF0000000` | `4026531840` | The user's client supports MSNC15 and below. |
# Extended Client Capabilities
*Since [MSNP16](../versions/msnp16.md).*
**TODO: this**
| `hexadecimal` | `decimal` | meaning |
| ------------- | ------------ | ------- |
| `0x00000001` | `1` | ... |

View file

@ -79,9 +79,9 @@ This is the main body of the document, and supports two attributes:
* `lang`: The decimal LCID that this notification document is meant to display in. Optional, but should be set.
* `icon`: The custom 32x32 PNG icon URL, relative to `siteurl`. Optional.
Note: Newer versions of the client support 48x32 icons and will use them automatically
if your icon URL has `_32x32` in it, the client can replace it with `_48x32`.
If you do not have a 48x32 icon, it will fall-back to the original 32x32 one.
Note: Client Version 6.0 ([MSNP9](../versions/msnp9.md)) and above support 48x32 icons and will use them automatically
if your icon URL includes the substring `_32x32`, the client will replace it with `_48x32`.
If you do not have a 48x32 icon, the client will fallback to the original 32x32 icon.
The default element that this parents is `<TEXT>`. It may also contain other types of data.
One such data type is the [`<NotificationData>`](#notificationdata) sub-document.
@ -102,7 +102,7 @@ supported by [MSNP9](../versions/msnp9.md) and higher.
The [`<TEXT>`](#text) element is required for this to be parsed by the Official Client.
The inner docment of this is required to be XML encoded.
The inner document of this is required to be XML encoded.
##### P
A paragraph, required for [`<TEXTX>`](#textx) elements to parse correctly.

View file

@ -40,6 +40,8 @@ More is to come soon! Hopefully!
* [Constants used on the wiki](reference_constants.md)
* [Shields Configuration Data](files/shields.md)
* [`<NOTIFICATION>` documents](files/notification.md)
* [Challenge key pairs](files/challenge_keypairs.md)
* [All Client Capabilities](files/client_capabilities.md)
# Wanted Information
* [MSNP2](versions/msnp2.md): What is the format of the initial `text/x-msmsgsemailnotification`?
@ -49,7 +51,7 @@ More is to come soon! Hopefully!
* [MSNP10](versions/msnp10.md): Did [LSG](commands/lsg.md) and [LST](commands/lst.md) change outside of [SYN](commands/syn.md) in this version?
* [MSNP11](versions/msnp11.md): How does `ABCHMigrated: 0` really work now? `OUT MIG` still exists.
* [MSNP12](versions/msnp12.md): Did [LST](commands/lst.md) change outside of [SYN](commands/syn.md) in this version?
* MSNP18: Was `<NotificationData>`'d circle updates get added in MSNP17 instead?
* MSNP18: Was `<NotificationData>`-based circle updates added in MSNP17 instead?
* Error Codes: A new article for them, seems like they are implemented in wildly different ways.
* [MSNP2](versions/msnp2.md) to [MSNP7](versions/msnp7.md): TODO: Add CVR requests as command 10.
* All Protocols: Any error code known to exist but is missing from the pages.
@ -75,6 +77,16 @@ More is to come soon! Hopefully!
* `FIR`
* Meta: A good way to handle removed-mid-protocol commands like [FND](commands/fnd.md), [LSG](commands/lsg.md) and [LST](commands/lst.md)...
## We know, but isn't written
* [Contact Sharing Service](services/sharingservice.md): write about `FindMembership`
* [Address Book Service](services/abservice.md): write about `ABFindAll`
* [Messenger Config service](services/msgrconfig.md): maybe provide examples?
* [MSNP13](versions/msnp13.md): just write this page already
* [Passport SOAP](services/passportsoap.md): document this service for [MSNP12](versions/msnp12.md), [MSNP13](versions/msnp13.md) and above.
Examples would be nice, too.
* MSNC1: the client-to-client subprotocol introduced with [MSNP9](versions/msnp9.md), un-sure where to put this one...
* MSNP2P: the sub-protocol used for file transfers in [MSNP5](versions/msnp5.md), also un-sure where to put this one...
## Unsolved Mysteries
* [INF command](commands/inf.md): ***Why*** does the [MSNP2](versions/msnp2.md) [draft](https://datatracker.ietf.org/doc/html/draft-movva-msn-messenger-protocol-00#section-7.2) have this in Switchboard? It's not used by any client as far as i'm aware.
* [FND command](commands/fnd.md): Why does this have an iterator if you can't send it over multiple packets?
@ -92,7 +104,7 @@ More is to come soon! Hopefully!
* Protocol Split: A MSNP version that usually defines a point of no return.
* PP14: [Passport SSI Version 1.4](services/passport14.md).
* PP30: Passport over SOAP that was implemented in Client Version 7.5+ ([MSNP12](versions/msnp12.md)).
* SOAP: Simple Object Access Protocol, A wrapper over XML. That's the kindest thing I can write about it.
* SOAP: Simple Object Access Protocol, A message schema based on XML. That's the kindest thing I can write about it.
* Passport: The Authentication Server and/or Protocol.
* Undefined Behaviour: An intentional blank left in the documentation, basically as a "I am not responsible for what this does to your client or server" warning.
* Dispatch Server: A type of MSNP server that handles moving users to Notification Servers.
@ -101,6 +113,7 @@ More is to come soon! Hopefully!
* Command: A 3-letter case-sensitive command type, followed optionally by a transaction ID and the rest of the Command parameters, ending with a new-line.
* Payload Command: A special type of Command that has a integer length parameter as the final parameter before the deliminating new-line.
* New-line/Newline: A Carriage Return character followed by a Line Feed character. Seperates commands in the protocol.
* Error Code: A 3-digit Command that denotes that there was a problem with the last command sent.
* Carriage Return: To return the page-writing apparatus to the left of the page.
* Line Feed: To move the page-writing apparatus down a "line".
* TrID: Transaction ID. Links the server's response to the client's request.

View file

@ -23,7 +23,7 @@ This refers to all the constants used on the wiki.
* John's (mobile-only contact) GUID: `a47e39cf-312c-4100-94a6-f2b33adf5b68`
## Other things
* My Passport Unique ID: `0x00000001:0x000000002`, High: `1`, Low: `2`.
* My Passport Unique ID: `0x00000001:0x00000002`, High: `1`, Low: `2`.
* My computer's GUID: `44bfd5a4-7450-4bda-ba3a-c51b3031126d`
* Another User's computer's GUID: `0061d708-cd9b-4d56-b64b-fffaa92ff344`

View file

@ -97,7 +97,8 @@ This element has only one attribute:
This element has five children:
* `<Version>`: The version of this service.
* `<CacheKey>`: The current or new address book caching key.
Usually starts with `14r2;`, then continues with some form of base64-encoded data.
Usually starts with `14r2;`, then continues with base64-encoded data.
The meaning of the appended data is yet to be known. It may be a 128-bit hash of some kind.
* `<CacheKeyChanged>`: Did the `<CacheKey>` change? If it did, set to `true`, otherwise set to `false`.
* `<PreferredHostName>`: The domain name that this service would like to receive requests to.
* `<SessionId>`: The current session GUID.

View file

@ -56,3 +56,94 @@ but this behavour is yet to be confirmed.
#### guid
The GUID of the contact you have added.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABContactAdd
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1464
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>ContactSave</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABContactAdd
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<contacts>
<Contact
xmlns="http://www.msn.com/webservices/AddressBook"
>
<contactInfo>
<passportName>anotheruser@hotmail.com</passportName>
<isMessengerUser>true</isMessengerUser>
<contactType>LivePending</contactType>
</contactInfo>
</Contact>
</contacts>
<options>
<EnableAllowListManagement>true</EnableAllowListManagement>
</options>
</ABContactAdd>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 911
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNDowOTowNi41MzZa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABContactAddResponse
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ABContactAddResult>
<guid>c1f9a363-4ee9-4a33-a434-b056a4c55b98</guid>
</ABContactAddResult>
</ABContactAddResponse>
</soap:Body>
</soap:Envelope>
```

View file

@ -30,3 +30,83 @@ The template used in this action is described on the [Address Book Service](../a
## ABContactDeleteResponse
This empty element has only one attribute:
* `xmlns`: Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABContactDelete
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1213
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>Timer</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABContactDelete
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<contacts>
<Contact
xmlns="http://www.msn.com/webservices/AddressBook"
>
<contactId>c1f9a363-4ee9-4a33-a434-b056a4c55b98</contactId>
</Contact>
</contacts>
</ABContactDelete>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 774
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo0ODowOS44MDNa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABContactDeleteResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -51,6 +51,90 @@ The valid values are the following:
# Server/Response
The template used in this action is described on the [Address Book Service](../abservice.md) main page.
## ABContactUpdate
## ABContactUpdateResponse
This empty element has only one attribute:
* `xmlns`: Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABContactUpdate
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1378
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>Timer</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABContactUpdate
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<contacts>
<Contact
xmlns="http://www.msn.com/webservices/AddressBook"
>
<contactId>c1f9a363-4ee9-4a33-a434-b056a4c55b98</contactId>
<contactInfo>
<displayName>another user</displayName>
</contactInfo>
<propertiesChanged>DisplayName <propertiesChanged>
</Contact>
</contacts>
</ABContactUpdate>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 911
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo0Nzo1OS4zMDZa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABContactUpdateResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -50,3 +50,96 @@ This element only contains the `<guid>` element.
#### guid
This element only contains the GUID of the newly created group.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABGroupAdd
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1486
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>GroupSave</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABGroupAdd
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<groupAddOptions>
<fRenameOnMsgrConflict>false</fRenameOnMsgrConflict>
</groupAddOptions>
<groupInfo>
<GroupInfo>
<name>Friends</name>
<groupType>C8529CE2-6EAD-434d-881F-341E17DB3FF8</groupType>
<fMessenger>false</fMessenger>
<annotations>
<Annotation>
<Name>MSN.IM.Display</Name>
<Value>1</Value>
</Annotation>
</annotations>
</GroupInfo>
</groupInfo>
</ABGroupAdd>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 903
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo1NTo1Ni45NDla</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABGroupAddResponse
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ABGroupAddResult>
<guid>f60efbe7-94af-4b16-b926-e4e10878d329</guid>
</ABGroupAddResult>
</ABGroupAddResponse>
</soap:Body>
</soap:Envelope>
```

View file

@ -61,3 +61,92 @@ This element only contains the `<guid>` element.
#### guid
This element contains the GUID of the contact that was added to the group.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABGroupContactAdd
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1360
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>GroupSave</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABGroupContactAdd
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<groupFilter>
<groupIds>
<guid>f60efbe7-94af-4b16-b926-e4e10878d329</guid>
</groupIds>
</groupFilter>
<contacts>
<Contact
xmlns="http://www.msn.com/webservices/AddressBook"
>
<contactId>c1f9a363-4ee9-4a33-a434-b056a4c55b98</contactId>
</Contact>
</contacts>
</ABGroupContactAdd>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 931
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNDowOTowNi41MzZa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABGroupContactAddResponse
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ABGroupContactAddResult>
<guid>c1f9a363-4ee9-4a33-a434-b056a4c55b98</guid>
</ABGroupContactAddResult>
</ABGroupContactAddResponse>
</soap:Body>
</soap:Envelope>
```

View file

@ -39,3 +39,88 @@ The template used in this action is described on the [Address Book Service](../a
## ABGroupContactDeleteResponse
This empty element has only one attribute:
* `xmlns:` Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABGroupContactDelete
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1366
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>GroupSave</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABGroupContactDelete
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<contacts>
<Contact
xmlns="http://www.msn.com/webservices/AddressBook"
>
<contactId>c1f9a363-4ee9-4a33-a434-b056a4c55b98</contactId>
</Contact>
</contacts>
<groupFilter>
<groupIds>
<guid>f60efbe7-94af-4b16-b926-e4e10878d329</guid>
</groupIds>
</groupFilter>
</ABGroupContactDelete>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 779
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNDowOTowNi41MzZa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABGroupContactDeleteResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -28,3 +28,81 @@ The template used in this action is described on the [Address Book Service](../a
## ABGroupDeleteResponse
This empty element has only one attribute:
* `xmlns:` Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABGroupDelete
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1140
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>Timer</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABGroupDelete
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<groupFilter>
<groupIds>
<guid>f60efbe7-94af-4b16-b926-e4e10878d329</guid>
</groupIds>
</groupFilter>
</ABGroupDelete>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 772
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo0ODowOS44MDNa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABGroupDeleteResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -30,6 +30,88 @@ This element contains only one child:
# Server/Response
The template used in this action is described on the [Address Book Service](../abservice.md) main page.
## ABGroupAddResponse
## ABGroupUpdateResponse
This empty element has only one attribute:
* `xmlns:` Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABGroupUpdate
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1276
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>GroupSave</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<ABGroupDelete
xmlns="http://www.msn.com/webservices/AddressBook"
>
<abId>00000000-0000-0000-0000-000000000000</abId>
<groups>
<Group>
<groupId>f60efbe7-94af-4b16-b926-e4e10878d329</groupId>
<groupInfo>
<name>Other People</name>
</groupInfo>
<propertiesChanged>GroupName </propertiesChanged>
</Group>
</groups>
</ABGroupDelete>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 772
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo0ODowOS44MDNa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<ABGroupUpdateResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -54,7 +54,7 @@ This element can contain many children, all of which optional:
## Annotation
This element contains two children:
* `<Name>`: The key of this property:
* `MSN.IM.MBEA`: (Only for you) Can users talk to me via my mobile phone? (`0` or `1`).
* `MSN.IM.MBEA`: (Only for you) Do I have a mobile device associated with my account? (`0` or `1`).
* `MSN.IM.GTC`: (Only for you) Do I automatically add users to the AL or ask first? (`0` or `1`).
* `MSN.IM.BLP`: (Only for you) Are all users blocked or allowed by default to talk to me? (`0` or `1`).
* `AB.JobTitle`: The job title of this contact.

View file

@ -19,11 +19,18 @@ In the HTTP headers, this is defined:
`SOAPAction: "http://www.msn.com/webservices/Messenger/Client/GetClientConfig"`
The main body is the following:
```
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>
<soap:Body>
<GetClientConfig xmlns='http://www.msn.com/webservices/Messenger/Client'>
<GetClientConfig
xmlns='http://www.msn.com/webservices/Messenger/Client'
>
<clientinfo>
<Country>US</Country>
<CLCID>0809</CLCID>
@ -44,7 +51,15 @@ Where `<PLCID>` is the binary's language code in unprefixed hexadecimal.
Where `<GeoID>` is the system's geographic location in decimal.
#### As query parameters
`GET http://config.messenger.msn.com/Config/MsgrConfig.asmx?op=GetClientConfig&Country=US&CLCID=0809&PLCID=0409&GeoID=242&ver=8.5.1302`
```
GET http://config.messenger.msn.com/Config/MsgrConfig.asmx
?op=GetClientConfig
&Country=US
&CLCID=0809
&PLCID=0409
&GeoID=242
&ver=8.5.1302
```
Where `op` is always `GetClientConfig`.
@ -64,9 +79,15 @@ Where `ver` is the version of the client as a triplet.
*This only applies if you use a SOAP request.*
```
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Body>
<GetClientConfigResponse xmlns="http://www.msn.com/webservices/Messenger/Client">
<GetClientConfigResponse
xmlns="http://www.msn.com/webservices/Messenger/Client"
>
<GetClientConfigResult><![CDATA[<MsgrConfig>...</MsgrConfig>]]></GetClientConfigResult>
</GetClientConfigResponse>
</soap:Body>

View file

@ -14,9 +14,11 @@ This element has only one attribute:
### serviceHandle
This element contains three children:
* `<Id>`: This is always set to `0`.
* `<Type>`: This has only been observed to be `Messenger`.
* `<ForeignId>`: This has only been observed have no content,
but is not an empty element.
* `<Type>`: The type of this member:
* `Messenger`: This is a Messenger contact.
* `Profile`: This is your profile.
* `<ForeignId>`: If `<Type>` is `Profile`, this should be `MyProfile`,
otherwise leave empty but do not convert to an empty element.
### memberships
This element only contains `<Membership>` elements.
@ -27,6 +29,7 @@ This element contains two children:
* `Allow`: The Allow List (AL).
* `Block`: The Block List (BL).
* `Reverse`: The Reverse List (RL).
* `ProfileExpression`: Your profile.
* `<Members>`: Explained below.
##### Members
@ -38,6 +41,7 @@ This element has two attributes:
* `PassportMember`
* `EmailMember`
* `PhoneMember`
* `RoleMember`: Only valid for `ProfileExpression`.
* `xmlns:xsi`: This is always set to `http://www.w3.org/2001/XMLSchema-instance`.
This element contains two children:
@ -46,11 +50,21 @@ This element contains two children:
* `Email`
* `Phone`
* `<State>`: This is usually only set to `Accepted`, but `Pending` is a valid value.
* `<Deleted>`: Should this member be deleted? (Only set to `true` in `UpdateMember`?)
This element also contains one of the following mutually exclusive children.
1. `<PassportName>`: The user handle associated with this membership.
2. `<Email>`: The e-mail address associated with this membership.
2. `<PhoneNumber>`: The phone number associated with this membership.
3. `<PhoneNumber>`: The phone number associated with this membership.
This element also contains the following children IF the role is set to `ProfileExpression`:
* `<Id>`: Always `Allow`.
* `<DefiningService>`: Contains the following:
* `<Id>`: Always `0`.
* `<Type>`: Always `Messenger`.
* `<ForeignId>`: Always empty content, but not an empty element.
* `<MaxRoleRecursionDepth>`: Always `0`.
* `<MaxDegreesSeparationDepth>`: Always `0`.
# Server/Response
The template used in this action is described on the [Address Book Service](../abservice.md) main page.
@ -58,3 +72,95 @@ The template used in this action is described on the [Address Book Service](../a
## AddMemberResponse
This empty element has only one attribute:
* `xmlns:` Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/SharingService.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/AddMember
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1468
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>Timer</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<AddMember
xmlns="http://www.msn.com/webservices/AddressBook"
>
<serviceHandle>
<Id>0</Id>
<Id>Messenger</Id>
<ForeignId></ForeignId>
</serviceHandle>
<memberships>
<Membership>
<MemberRole>Allow</MemberRole>
<Members>
<Member
xsi:type="PassportMember"
>
<Type>Passport</Type>
<State>Accepted</State>
<Deleted>false</Deleted>
<PassportName>anotheruser@hotmail.com</PassportName>
</Member>
</Members>
</Membership>
</memberships>
</AddMember>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 768
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo0ODowOS44MDNa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<AddMemberResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -13,9 +13,11 @@ This element has only one attribute:
### serviceHandle
This element contains three children:
* `<Id>`: This is always set to `0`.
* `<Type>`: This has only been observed to be `Messenger`.
* `<ForeignId>`: This has only been observed have no content,
but is not an empty element.
* `<Type>`: The type of this member:
* `Messenger`: This is a Messenger contact.
* `Profile`: This is your profile.
* `<ForeignId>`: If `<Type>` is `Profile`, this should be `MyProfile`,
otherwise leave empty but do not convert to an empty element.
### memberships
This element only contains `<Membership>` elements.
@ -26,6 +28,7 @@ This element contains two children:
* `Allow`: The Allow List (AL).
* `Block`: The Block List (BL).
* `Pending`: The Pending List (RL).
* `ProfileExpression`: Your profile.
* `<Members>`: Explained below.
##### Members
@ -37,6 +40,7 @@ This element has two attributes:
* `PassportMember`
* `EmailMember`
* `PhoneMember`
* `RoleMember`: Only valid for `ProfileExpression`.
* `xmlns:xsi`: This is always set to `http://www.w3.org/2001/XMLSchema-instance`.
This element contains three children:
@ -46,6 +50,21 @@ This element contains three children:
* `Phone`
* `<MembershipId>`: The ID of the membership you would like to delete.
* `<State>`: This is usually only set to `Accepted`, but `Pending` is a valid value.
* `<Deleted>`: Should this member be deleted? (Only set to `true` in `UpdateMember`?)
This element may instead contain one of the following mutually exclusive children instead of `<MembershipId>`:
1. `<PassportName>`: The user handle associated with this membership.
2. `<Email>`: The e-mail address associated with this membership.
3. `<PhoneNumber>`: The phone number associated with this membership.
This element also contains the following children IF the role is set to `ProfileExpression`:
* `<Id>`: Always `Allow`.
* `<DefiningService>`: Contains the following:
* `<Id>`: Always `0`.
* `<Type>`: Always `Messenger`.
* `<ForeignId>`: Always empty content, but not an empty element.
* `<MaxRoleRecursionDepth>`: Always `0`.
* `<MaxDegreesSeparationDepth>`: Always `0`.
# Server/Response
The template used in this action is described on the [Address Book Service](../abservice.md) main page.
@ -53,3 +72,94 @@ The template used in this action is described on the [Address Book Service](../a
## DeleteMemberResponse
This empty element has only one attribute:
* `xmlns:` Is always set to `http://www.msn.com/webservices/AddressBook`.
# Examples
## Client/Request
```
POST /abservice/SharingService.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/DeleteMember
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Content-Length: 1435
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<soap:Header>
<ABApplicationHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ApplicationID>996CDE1E-AA53-4477-B943-2BE802EA6166</ApplicationID>
<IsMigration>false</IsMigration>
<PartnerScenario>Timer</PartnerScenario>
</ABApplicationHeader>
<ABAuthHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<ManagedGroupRequest>false</ManagedGroupRequest>
<TicketToken>t=ticket&amp;p=profile</TicketToken>
</ABAuthHeader>
</soap:Header>
<soap:Body>
<DeleteMember
xmlns="http://www.msn.com/webservices/AddressBook"
>
<serviceHandle>
<Id>0</Id>
<Id>Messenger</Id>
<ForeignId></ForeignId>
</serviceHandle>
<memberships>
<Membership>
<MemberRole>Allow</MemberRole>
<Members>
<Member
xsi:type="PassportMember"
>
<Type>Passport</Type>
<State>Accepted</State>
<PassportName>anotheruser@hotmail.com</PassportName>
</Member>
</Members>
</Membership>
</memberships>
</AddMember>
</soap:Body>
</soap:Envelope>
```
## Server/Response
```
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 771
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<soap:Header>
<ServiceHeader
xmlns="http://www.msn.com/webservices/AddressBook"
>
<Version>12.01.1111.0000</Version>
<CacheKey>12r1;MjAyNC0xMS0xOVQxNzo0ODowOS44MDNa</CacheKey>
<CacheKeyChanged>true</CacheKeyChanged>
<PreferredHostName>contacts.example.com</PreferredHostName>
<SessionId>ecfaf8c7-e388-4571-8641-b061a0ac4bdc</SessionId>
</ServiceHeader>
</soap:Header>
<soap:Body>
<DeleteMemberResponse
xmlns="http://www.msn.com/webservices/AddressBook"
/>
</soap:Body>
</soap:Envelope>
```

View file

@ -29,7 +29,7 @@ This is a list of all known MSNP commands and their originating version.
| [`RNG`](commands/rng.md) | N | N | Y | [MSNP2](versions/msnp2.md) | |
| [`LST`](commands/lst.md) | N | Y | Y\*| [MSNP2](versions/msnp2.md) | [MSNP7](versions/msnp7.md) (Added groups support), [MSNP8](versions/msnp8.md) ([SYN](commands/syn.md): removed iterator parameters, condensed all lists into a single parameter, removed List Version), [MSNP10](versions/msnp10.md) (Added prefixes to contact's handle and friendly name, and added a GUID parameter if `ABCHMigrated: 1`. Also changed group IDs to GUIDs.), [MSNP12](versions/msnp12.md) (Added network IDs), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use [Address Book Service](services/abservice.md)'s `ABFindAll` and [Contact Sharing Service](services/sharingservice.md)'s `FindMemberships` instead.), November 2003 (Removed outside of [SYN](commands/syn.md), not really any specific MSNP update, just hard removed with an automatic disconnect.) |
| [`ADD`](commands/add.md) | N | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP7](versions/msnp7.md) (Added groups support), [MSNP10](versions/msnp10.md) (Removed; automatic disconnect, use [ADC](commands/adc.md) instead) |
| [`REM`](commands/rem.md) | N | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP7](versions/msnp7.md) (Added groups support), [MSNP10](versions/msnp10.md) (Replaced user handles with GUIDs if list is the Forward List (FL), and removed list versions from all responses), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, replaced with RML and [Address Book Service](services/abservice.md)'s [`ABContactDelete`](services/abservice/abcontactdelete.md) and [Contact Sharing Service](services/sharingservice.md)'s [`DeleteMember`](services/abservice/deletemember.md instead) |
| [`REM`](commands/rem.md) | N | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP7](versions/msnp7.md) (Added groups support), [MSNP10](versions/msnp10.md) (Replaced user handles with GUIDs if list is the Forward List (FL), and removed list versions from all responses), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, replaced with RML and [Address Book Service](services/abservice.md)'s [`ABContactDelete`](services/abservice/abcontactdelete.md) and [Contact Sharing Service](services/sharingservice.md)'s [`DeleteMember`](services/sharingservice/deletemember.md) instead) |
| [`FLN`](commands/fln.md) | N | N | Y | [MSNP2](versions/msnp2.md) | |
| [`PNG`](commands/png.md) | N | Y | N | [MSNP2](versions/msnp2.md) | |
| [`QNG`](commands/qng.md) | N | N | Y | [MSNP2](versions/msnp2.md) | [MSNP9](versions/msnp9.md) (Added next seconds parameter) |
@ -41,14 +41,14 @@ This is a list of all known MSNP commands and their originating version.
| [`REA`](commands/rea.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP10](versions/msnp10.md) (Removed; automatic disconnect) |
| [`SND`](commands/snd.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP3](versions/msnp3.md) (parameters 2 and 3), [MSNP4](versions/msnp4.md) (parameter 4), [MSNP5](versions/msnp5.md) (obsoleted by [SDC](commands/sdc.md)) |
| [`SDC`](commands/sdc.md) | Y | Y | N | [MSNP5](versions/msnp5.md) | |
| [`ADC`](commands/adc.md) | N | Y | N?| [MSNP10](versions/msnp10.md) | [MSNP10](versions/msnp10.md) (`ABCHMigrated: 1`: Contact user handles and Group IDs are now both GUIDs.), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use ADL and the [Address Book Service](services/abservice.md)'s [`ABContactAdd`](services/abservice/abcontactadd.md) and [Contact Sharing Service](services/sharingservice.md)'s [`AddMember`](services/abservice/addmember.md instead)|
| [`ADC`](commands/adc.md) | N | Y | Y | [MSNP10](versions/msnp10.md) | [MSNP10](versions/msnp10.md) (`ABCHMigrated: 1`: Contact user handles and Group IDs are now both GUIDs.), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use ADL and the [Address Book Service](services/abservice.md)'s [`ABContactAdd`](services/abservice/abcontactadd.md) and [Contact Sharing Service](services/sharingservice.md)'s [`AddMember`](services/sharingservice/addmember.md) instead) |
| [`PAG`](commands/pag.md) | Y | Y | N | [MSNP5](versions/msnp5.md) | [MSNP9](versions/msnp9.md) (Removed; error 715, use [PGD](commands/pgd.md) instead.) |
| [`PGD`](commands/pgd.md) | Y | Y | N | [MSNP9](versions/msnp9.md) | |
| [`SBP`](commands/sbp.md) | N | Y | N | [MSNP10](versions/msnp10.md) | [MSNP10](versions/msnp10.md) (`ABCHMigrated: 1`: Contact user handles are now GUIDs.), [MSNP11](versions/msnp11.md) (Added property `HSB`, for Has Blog. Set by the relevant Client Capability.), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use [Address Book Service](services/abservice.md)'s [`ABContactUpdate`](services/abservice/abcontactupdate.md) action instead.) |
| [`CHL`](commands/chl.md) | N | Y | Y | [MSNP6](versions/msnp6.md) | [MSNP10](versions/msnp10.md) (Changed challenge response ([QRY](commands/qry.md) commands) generation algorithm drastically.) |
| [`GCF`](commands/gcf.md) | Y | Y | Y | [MSNP11](versions/msnp11.md) | [MSNP13](versions/msnp13.md) (Command is now always asynchronous and always retuns `Shields.xml` in a new wrapper.) |
| [`SYN`](commands/syn.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP5](versions/msnp5.md) (Added [BPR](commands/bpr.md) and [PRP](commands/prp.md) to response.), [MSNP7](versions/msnp7.md) (Added [LSG](commands/lsg.md) support and groups in [LST](commands/lst.md).), [MSNP8](versions/msnp8.md) (Unset properties are now omitted, new response parameters to replace [LSG](commands/lsg.md) and [LST](commands/lst.md) iterator parameters, Transaction IDs and List Version was removed from used commands), [MSNP10](versions/msnp10.md) (Added new parameters for the settings version. With `ABCHMigrated: 1`, both versions are now timestamps), [MSNP12](versions/msnp12.md) (Added Network IDs to [LST](commands/lst.md).), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use the [Address Book Service](services/abservice.md) and the [Contact Sharing Service](services/sharingservice.md) instead.) |
| [`NOT`](commands/not.md) | Y | N | Y | [MSNP5](versions/msnp5.md) | [MSNP11](versions/msnp11.md) (Added support for the `<NotificationData>` sub-document, and live blog updates use the new sub-document.), [MSNP13](versions/msnp13.md) (Added live contact list updates using the `<NotificationData>` subdocument.), [MSNP18](versions/msnp18.md) (Added live persistant chat group updates using the `<NotificationData>` subdocument.) |
| [`NOT`](commands/not.md) | Y | N | Y | [MSNP5](versions/msnp5.md) | [MSNP9](versions/msnp9.md) (Added support for extended notifications using the `<TEXTX>` element), [MSNP11](versions/msnp11.md) (Added support for the `<NotificationData>` sub-document, and live blog updates use the new sub-document.), [MSNP13](versions/msnp13.md) (Added live contact list updates using the `<NotificationData>` subdocument.), [MSNP18](versions/msnp18.md) (Added live persistant chat group updates using the `<NotificationData>` subdocument.) |
| [`IPG`](commands/ipg.md) | Y | N | Y | [MSNP6](versions/msnp6.md) | |
| [`REG`](commands/reg.md) | N | Y | N | [MSNP7](versions/msnp7.md) | [MSNP10](versions/msnp10.md) (Removed unused `0` and List Version parameters, with `ABCHMigrated: 1`, group IDs are instead group GUIDs), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use [Address Book Service](services/abservice.md)'s [`ABGroupUpdate`](services/abservice/abgroupupdate.md) instead.) |
| [`RMG`](commands/rmg.md) | N | Y | N | [MSNP7](versions/msnp7.md) | [MSNP10](versions/msnp10.md) (Removed List Version parameter, with `ABCHMigrated: 1`, group IDs are instead group GUIDs), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use [Address Book Service](services/abservice.md)'s [`ABGroupDelete`](services/abservice/abgroupdelete.md) instead.) |

View file

@ -26,7 +26,8 @@ It introduces the notification service commands:
* [ADC](../commands/adc.md): Now supports a telephone address (`tel:`) for `N=`.
* Official Client: Feature blocks are implemented using the [GCF](../commands/gcf.md) command
to download `Shields.xml`. For more information read the [Shields Configuration Data](../files/shields.md) article.
* Official Client: WebMessenger now canonically exists - Client Capability 512 is used for this.
* Official Client: WebMessenger now canonically exists, the [Client Capability](../files/client_capabilities.md)
flag `512` (`0x200` mask) is set for clients online via this method.
* Official Client: Notifications ([NOT](../commands/not.md) commands) with encoded
[`<NotificationData>`](../files/notification.md) sub-documents are supported for spaces (blogs).
* Official Client: Messenger Config requests now support regional arguments via SOAP.
@ -106,7 +107,7 @@ C: ADC 11 FL N=tel:15551111222 F=john
S: ADC 11 FL N=tel:15551111222 F=john C=a47e39cf-312c-4100-94a6-f2b33adf5b68
C: ADC 12 AL N=tel:15551111222
S: ADC 12 AL N=tel:15551111222
S: NOT 1249
S: NOT 1264
<NOTIFICATION id="2" siteid="45705" siteurl="http://storage.msn.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com">
<VIA agent="messenger"/>
@ -115,7 +116,10 @@ S: NOT 1249
<ACTION url="a.htm" />
<SUBSCR url="s.htm" />
<BODY>
&lt;NotificationData xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
&lt;NotificationData
xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
&gt;
&lt;SpaceHandle&gt;
&lt;ResourceID&gt;example1!101&lt;/ResourceID&gt;
&lt;/SpaceHandle&gt;

View file

@ -15,7 +15,8 @@ It introduces the notification service commands:
# Known changes
(from [MSNP11](msnp11.md)):
* Network IDs are introduced, each bit represents a contact's service, with bit 0/decimal 1 being MSNP.
* Switchboard commands [JOI](../commands/joi.md) and [IRO](../commands/iro.md) have a new parameter for the Client Capabilities of the relevant user.
* Switchboard commands [JOI](../commands/joi.md) and [IRO](../commands/iro.md) have a new parameter for the
[Client Capabilities](../files/client_capabilities.md) of the relevant user.
* [LST](../commands/lst.md) has the Network ID after the list bits (on any list), but before the Group ID (if on Forward List (FL)).
* Official Client: Uses Passport 3.0 (via the Microsoft Identity Common Runtime Library).
* Official Client: Dropped support for older operating systems, Now requires Windows XP or higher.

View file

@ -20,7 +20,7 @@ It introduces the error codes:
# Known changes
(from [MSNP4](msnp4.md)):
* [BPR](../commands/bpr.md) and [PRP](../commands/prp.md) have been added to [SYN](../commands/syn.md).
* [`<NOTIFICATION>`](../files/notification.md) documents are handled by the client with the new [NOT](not.md) payload command.
* [`<NOTIFICATION>`](../files/notification.md) documents are handled by the client with the new [NOT](../commands/not.md) payload command.
* Non-protocol: Official website stopped updating the whatsnew.asp page between this (MSNP5) and [MSNP7](msnp7.md).
* Official Client: Introduced the toast notification system. Notifications can now stack vertically.
* Official Client: Log in notifications are now handled by the newly introduced toast system.

View file

@ -38,7 +38,8 @@ The following commands were removed in this version:
1 = Forward List (FL), 2 = Allow List (AL), 4 = BlocK List (BL), 8 = Reverse List (RL),
For example, a contact on the Forward List (FL), Allow List (AL) and Reverse List (RL)
would have their combined list number be 11.
* [CHG](../commands/chg.md), [ILN](../commands/iln.md), [NLN](../commands/nln.md): Client Capabilities are introduced.
* [CHG](../commands/chg.md), [ILN](../commands/iln.md), [NLN](../commands/nln.md):
[Client Capabilities](../files/client_capabilities.md) are introduced.
You can now tell other clients what features you support.
* Official Client: Connectivity field added to application requests
to notify the other user about what the network conditions are.

4
package-lock.json generated
View file

@ -680,8 +680,8 @@
}
},
"node_modules/yiki": {
"version": "0.1.5",
"resolved": "git+https://git.kevinthe.horse/yellows111/yiki.git#7991d78e1c2461db7ab36ee10dd0a53105801b8b",
"version": "0.1.6",
"resolved": "git+https://git.kevinthe.horse/yellows111/yiki.git#5afe18743bf59e039d245220cd36381a37cfe6eb",
"license": "MIT",
"dependencies": {
"@liquify/prettify": "^0.5.5-beta.1",

View file

@ -1,5 +1,5 @@
# Introduction
`Actiom` is one of the SOAP actions the [Service](../service.md) provides.
`Action` is one of the SOAP actions the [Service](../service.md) provides.
Description.