massive amount of corrections, rest of pre-P11 commands

upgrade yiki, slugs now work better, but not in URLs (i forgot)

0 Commands Left. Time for that parity check.

Add a license too.

Bump version to 0.1.0.

NEW RECORD!
This commit is contained in:
Declan B. 2024-10-26 11:56:17 +01:00
parent 9144709921
commit e6520d0ac0
Signed by: yellows111
SSH key fingerprint: SHA256:ynw5IJBU1pb7fZfHgLihKu9gHHA8FVpixZbB6IEB3r8
43 changed files with 1787 additions and 89 deletions

445
LICENSE.md Normal file
View file

@ -0,0 +1,445 @@
# GNU Free Documentation License
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation,
Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
## 0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
## 1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below, refers
to any such manual or work. Any member of the public is a licensee,
and is addressed as "you". You accept the license if you copy, modify
or distribute the work in a way requiring permission under copyright
law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may be
at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies of
the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
## 2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
## 3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify you
as the publisher of these copies. The front cover must present the
full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with
changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim
copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to
give them a chance to provide you with an updated version of the
Document.
## 4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
- A. Use in the Title Page (and on the covers, if any) a title
distinct from that of the Document, and from those of previous
versions (which should, if there were any, be listed in the
History section of the Document). You may use the same title as a
previous version if the original publisher of that version
gives permission.
- B. List on the Title Page, as authors, one or more persons or
entities responsible for authorship of the modifications in the
Modified Version, together with at least five of the principal
authors of the Document (all of its principal authors, if it has
fewer than five), unless they release you from this requirement.
- C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
- D. Preserve all the copyright notices of the Document.
- E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
- F. Include, immediately after the copyright notices, a license
notice giving the public permission to use the Modified Version
under the terms of this License, in the form shown in the
Addendum below.
- G. Preserve in that license notice the full lists of Invariant
Sections and required Cover Texts given in the Document's
license notice.
- H. Include an unaltered copy of this License.
- I. Preserve the section Entitled "History", Preserve its Title,
and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the
Title Page. If there is no section Entitled "History" in the
Document, create one stating the title, year, authors, and
publisher of the Document as given on its Title Page, then add an
item describing the Modified Version as stated in the
previous sentence.
- J. Preserve the network location, if any, given in the Document
for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for previous
versions it was based on. These may be placed in the "History"
section. You may omit a network location for a work that was
published at least four years before the Document itself, or if
the original publisher of the version it refers to
gives permission.
- K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
- L. Preserve all the Invariant Sections of the Document, unaltered
in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.
- M. Delete any section Entitled "Endorsements". Such a section may
not be included in the Modified Version.
- N. Do not retitle any existing section to be Entitled
"Endorsements" or to conflict in title with any Invariant Section.
- O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties—for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
## 5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
## 6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the rules
of this License for verbatim copying of each of the documents in all
other respects.
You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.
## 7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
## 8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
## 9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt otherwise
to copy, modify, sublicense, or distribute it is void, and will
automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
## 10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See
<https://www.gnu.org/licenses/>.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document specifies
that a proxy can decide which future versions of this License can be
used, that proxy's public statement of acceptance of a version
permanently authorizes you to choose that version for the Document.
## 11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the site
means any set of copyrightable works thus published on the MMC site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or in
part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
## ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with … Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License, to
permit their use in free software.

View file

@ -12,3 +12,7 @@ mkdir build
npm run build
cp ./node_modules/yiki/yiki.css build/
```
# License
This work is licensed under the
[GNU Free Documentation License 1.3](https://www.gnu.org/licenses/fdl-1.3.en.html).

View file

@ -12,7 +12,7 @@ Replaced with [Address Book Service](../services/abservice)'s `ABGroupAdd` in [M
Where `group-name` is the name of the group you'd like to create.
Has a limit of 61 bytes (URL encoded characters count as 3 bytes).
Where `0` is always `0.`. Removed in [MSNP10](../comnmands/msnp10.md).
Where `0` is always `0`. Removed in [MSNP10](../versions/msnp10.md).
# Server/Response
`ADG TrID {list-version} group-name group-id {0}`
@ -127,4 +127,4 @@ Server disconnects client.
* [MSNP10](../versions/msnp10.md): Removed unused `0` parameter,
Returns a GUID instead of a Group ID if `ABCHMigrated: 1`.
* [MSNP13](../versions/msnp13.md): Removed (automatic disconnect),
use Address Book Service's `ABGroupAdd` instead.
use [Address Book Service](../services/abservice.md)'s `ABGroupAdd` instead.

View file

@ -32,7 +32,7 @@ S: ANS 1 OK
```
## Invalid session
*NOTE: There is no defined behavour for this command specificially."
*NOTE: There is no defined behaviour for this command specificially.*
```
C: ANS 2 example@hotmail.com bad data
```

View file

@ -27,12 +27,20 @@ C: BLP 2 BL
S: BLP 2 257 BL
```
## Already in that mode
```
C: BLP 3 AL
S: BLP 3 258 AL
C: BLP 4 AL
S: 218 4
```
## Invalid argument
*NOTE: This is an assumption. The actual error code here is unknown.
It may also lead to an Instant Disconnection.*
```
C: BLP 3 CL
S: 201
C: BLP 5 CL
S: 201 5
```
# Known changes

View file

@ -9,15 +9,15 @@ Changes your presence status, and sets your Client Capabilities and MSNObject in
`CHG TrID status {flags} {msnobj}`
Where `status` can be any of the below:
* `NLN` - Online
* `BSY` - Busy
* `IDL` - Idle
* `BRB` - Be Right Back
* `AWY` - Away (previously Away From Keyboard)
* `PHN` - On The Phone
* `LUN` - Out To Lunch
* `HDN` - Appear Offline (previously Invisible)
* `FLN` - Semi-offline. More on this below.
* `NLN`: Online
* `BSY`: Busy
* `IDL`: Idle
* `BRB`: Be Right Back
* `AWY`: Away (previously Away From Keyboard)
* `PHN`: On The Phone
* `LUN`: Out To Lunch
* `HDN`: Appear Offline (previously Invisible)
* `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.
@ -63,7 +63,7 @@ S: CHG 2 IDL 1
*This only works in [MSNP9](../versions/msnp9.md) and higher.*
*NOTE: This has been line-breaked.
Lines beginning with `..` followed by a space are continuations of the previous line.
Lines beginning with `..` followed by a space are continuations of the previous line.*
```
C: CHG 3 BSY 268435500 %3Cmsnobj%20Creator%3D%22example%40hotmail.com%22
.. %20Size%3D%2225235%22%20Type%3D%223%22
@ -83,7 +83,7 @@ S: CHG 0 FLN
```
## Invalid argument
*NOTE: There is no defined behavour for this command specifically.*
*NOTE: There is no defined behaviour for this command specifically.*
```
C: CHG 4 HOT
```

View file

@ -3,7 +3,8 @@
It is a Notification Server command, without a request or response payload.
A request to generate a challenge. Respond with QRY on a new transaction to continue your connection.
A request to generate or solve a challenge.
Respond correctly with [QRY](qry.md) on a new transaction to continue your connection.
# Client/Request
`CHL TrID`
@ -41,5 +42,4 @@ S: OUT
Server disconnects client.
# Known changes
* [MSNP11](../versions/msnp11.md): Challenge response (QRY commands)'s
algorithm changed to be more formidable.
* [MSNP11](../versions/msnp11.md): Changed challenge response ([QRY](qry.md) commands) generation algorithm drastically.

View file

@ -45,7 +45,7 @@ Where `fallback-url` is the URL the client opens if it failed to download `downl
# Examples
*NOTE: This has been line-breaked.
Lines beginning with `..` are continuations of the previous line."
Lines beginning with `..` followed by a space are continuations of the previous line.*
## Old
*Only used in the [CVR0](../versions/cvr0.md) implementation of [MSNP2](../versions/msnp2.md) to [MSNP7](../versions/msnp2.md).*

View file

@ -45,7 +45,7 @@ Where `fallback-url` is the URL the client opens if it failed to download `downl
# Examples
*NOTE: This has been line-breaked.
Lines beginning with `..` are continuations of the previous line."
Lines beginning with `..` followed by a space are continuations of the previous line.*
## Post-login
*Only used in [MSNP2](../versions/msnp2.md) to [MSNP7](../versions/msnp2.md).*

View file

@ -19,7 +19,7 @@ GCF TrID filename length
payload
```
Where `length` is the length of `payload`.
Where `length` is the size (in bytes) of the `payload`.
Where `payload` is the data for this file.

View file

@ -27,12 +27,20 @@ C: GTC 2 N
S: GTC 2 257 N
```
## Already in that mode
```
C: GTC 3 A
S: GTC 3 258 A
C: GTC 4 A
S: 218 4
```
## Invalid argument
*NOTE: This is an assumption. The actual error code here is unknown.
It may also lead to an Instant Disconnection.*
```
C: GTC 3 B
S: 201
C: GTC 5 B
S: 201 5
```
# Known changes

View file

@ -29,7 +29,7 @@ S: IMS 2 0 OFF
```
## Invalid argument
*NOTE: There is no defined behavour for this command specifically.*
*NOTE: There is no defined behaviour for this command specifically.*
```
C: IMS 3 TOMORROW
```

View file

@ -5,7 +5,8 @@ It is a Dispatch Server and Notification Server command, without either a reques
It specifies which authentication methods the client is allowed to use.
This command can only be sent once. Any further uses of this command in the same session is Undefined Behavour.
This command can only be sent once.
Any further uses of this command in the same session is Undefined Behaviour.
# Client/Request
`INF TrID`

51
docs/commands/ipg.md Normal file
View file

@ -0,0 +1,51 @@
# Introduction
`IPG` is a command introduced with [MSNP6](../versions/msnp6.md).
It is a Notification Server command, WITH a response payload.
Used to send incoming pages (mobile text messages) to the client.
For the command to send text messages to a mobile device, read [PAG](pag.md) or [PGD](pgd.md).
# Client/Request
This command can not be sent from the client.
# Server/Response
```
IPG length
payload
```
Where `length` is the size (in bytes) of the `payload`.
Where `payload` is a [`<NOTIFICATION>` document](../files/notification.md).
# Examples
## Incoming page
```
S: IPG 471
<NOTIFICATION id="0" siteid="111100400" siteurl="http://mobile.msn.com/">
<TO name="example@hotmail.com" pid="0x00000001:0x00000002" email="example@hotmail.com">
<VIA agent="mobile"/>
</TO>
<FROM pid="0x00000001:0x00000002" name="anotheruser@hotmail.com"/>
<MSG pri="1" id="0">
<ACTION url="2wayIM.asp"/>
<SUBSCR url="2wayIM.asp"/>
<CAT id="110110001"/>
<BODY lang="1033">
<TEXT>Hello! I am talking from a mobile device.</TEXT>
</BODY>
</MSG>
</NOTIFICATION>
```
## Invalid context
```
C: IPG 1 0
```
Server disconnects client.
# Known changes
None.

View file

@ -124,4 +124,4 @@ S: LSG Friends f60efbe7-94af-4b16-b926-e4e10878d329
* [MSNP8](../versions/msnp8.md): Removed iterator and List Version parameters from [SYN](syn.md) version.
* [MSNP10](../versions/msnp10.md): Removed unused `0` parameter and support for the `~` quasi-group.
Changed group IDs to group GUIDs if `ABCHMigrated: 1`.
* Hard-removed in November 2003, Removed outside of [SYN](commands/syn.md), now just automatically disconnects.
* Hard-removed in November 2003, Removed outside of [SYN](syn.md), now just automatically disconnects.

View file

@ -189,4 +189,4 @@ S: LST N=anotheruser@hotmail.com F=another%20user C=c1f9a363-4ee9-4a33-a434-b056
Changed `C=` to contact GUID and changed group ID list to group GUID list with `ABCHMigrated: 1` to SYN version.
* [MSNP12](../versions/msnp12.md): Added Network IDs to [SYN](syn.md) version.
* [MSNP13](../versions/msnp13.md): Removed [SYN](syn.md).
* Hard-removed in November 2003, Removed outside of [SYN](commands/syn.md), now just automatically disconnects.
* Hard-removed in November 2003, Removed outside of [SYN](syn.md), now just automatically disconnects.

View file

@ -9,7 +9,7 @@ Used to transfer MIME-headered data to other parties, whenever that be you or ot
*This command can only be sent in a Switchboard session.*
```
MSG TrID [ U | N | A | D ] length
data
payload
```
## Acknowledgement Types
* U: Unacknowledged, no response is sent.
@ -19,15 +19,15 @@ data
Acknowledgement Type `D` is defined since [MSNP9](../versions/msnp9.md).
Where `length` is the `length` in bytes of `data`.
Where `length` is the size (in bytes) of the `payload`.
Where `data` is the body of the message,
Where `payload` is the body of the message,
usually containing a `MIME-Version` header and a `Content-Type`.
# Server/Response
```
MSG user-handle friendly-name length
data
payload
```
Where `user-handle` is either the senders's handle,
@ -36,9 +36,9 @@ or `Hotmail`, if sent from the Notification Server itself.
Where `friendly-name` is either the URL-encoded Friendly Name of the sender,
or `Hotmail`, if sent from the Notification Server itself.
Where `length` is the `length` in bytes of `data`.
Where `length` is the size (in bytes) of the `payload`.
Where `data` is the body of the message,
Where `payload` is the body of the message,
usually containing a `MIME-Version` header and a `Content-Type`.
# Examples

128
docs/commands/not.md Normal file
View file

@ -0,0 +1,128 @@
# Introduction
`NOT` is a command introduced with [MSNP5](../versions/msnp5.md).
It is a Notification Server command, WITH a response payload.
Used to send notifications ("alerts") to the client.
# Client/Request
This command can not be sent from the client.
# Server/Response
```
NOT length
payload
```
Where `length` is the size (in bytes) of the `payload`.
Where `payload` is a [`<NOTIFICATION>` document](../files/notification.md).
# Examples
## Basic notification
```
S: NOT 367
<NOTIFICATION ver="1" id="2" siteid="0" siteurl="http://example.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com" />
<MSG id="0">
<ACTION url="alert?command=action" />
<SUBSCR url="alert?command=change" />
<BODY lang="1033" icon="alerticon_32x32.png">
<TEXT>This is an example notification.</TEXT>
</BODY>
</MSG>
</NOTIFICATION>
```
## Advanced notification
*Since [MSNP9](../versions/msnp9.md).*
```
S: NOT 457
<NOTIFICATION ver="1" id="2" siteid="0" siteurl="http://example.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com" />
<MSG id="0">
<ACTION url="alert?command=action" />
<SUBSCR url="alert?command=change" />
<BODY lang="1033" icon="alerticon_32x32.png">
<TEXT>This is an example notification.</TEXT>
<TEXTX>&lt;P&gt;This is an &lt;B&gt;extended&lt;/B&gt; notification!&lt;/P&gt</TEXTX>
</BODY>
</MSG>
</NOTIFICATION>
```
## Blog update notification
*Since [MSNP11](../versions/msnp11.md).*
```
S: NOT 1249
<NOTIFICATION id="2" siteid="45705" siteurl="http://storage.msn.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com">
<VIA agent="messenger"/>
</TO>
<MSG id="0">
<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;SpaceHandle&gt;
&lt;ResourceID&gt;example1!101&lt;/ResourceID&gt;
&lt;/SpaceHandle&gt;
&lt;ComponentHandle&gt;
&lt;ResourceID&gt;example2!101&lt;/ResourceID&gt;
&lt;/ComponentHandle&gt;
&lt;OwnerCID&gt;4294967298&lt;/OwnerCID&gt;
&lt;LastModifiedDate&gt;2024-10-26T09:33:27.1020000-08:00&lt;/LastModifiedDate&gt;
&lt;HasNewItem&gt;true&lt;HasNewItem&gt;
&lt;ComponentSummary&gt;
&lt;Component xsi:type=&quot;MessageContainer&quot;&gt;
&lt;ResourceID&gt;example2!102&lt;/ResourceID&gt;
&lt;/Component&gt;
&lt;Items&gt;
&lt;Component xsi:type=&quot;Message&quot;&gt;
&lt;ResourceID&gt;example2!101&lt;/ResourceID&gt;
&lt;/Component&gt;
&lt;/Items&gt;
&lt;/ComponentSummary&gt;
&lt;/NotificationData&gt;
</BODY>
</MSG>
</NOTIFICATION>
```
## Contact update notification
*Since [MSNP13](../versions/msnp13.md).*
```
S: NOT 685
<NOTIFICATION id="2" siteid="45705" siteurl="http://contacts.msn.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com">
<VIA agent="messenger"/>
</TO>
<MSG id="0">
<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;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;
&lt;HasNewItem&gt;false&lt;/HasNewItem&gt;
&lt;/NotificationData&gt;
</BODY>
</MSG>
</NOTIFICATION>
```
## Invalid context
*Inherited from being an unimplemented command.
```
C: NOT 1 0
```
Server disconnects client.
# Known changes
* [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.
* [MSNP18](../versions/msnp18.md): Used for live persistant chat group ("circle") updates using the `<NotificationData>` sub-document.

View file

@ -5,6 +5,7 @@ It is a Notification Server command, with a request payload.
It sends a text message to a mobile device or pager.
For the version of this command that supports Web Watches, read [PGD](pgd.md).
For the command that is sent when you receive a page, read [IPG](ipg.md).
# Client/Request
```
@ -14,7 +15,7 @@ payload
Where `user-handle` is the target user for this page.
Where `length` is the length of `payload`.
Where `length` is the size (in bytes) of the `payload`.
Where `payload` is a XML-like payload that encodes the following characters:
* `&` turns into `&#x26;`

View file

@ -5,6 +5,7 @@ It is a Notification Server command, with a request payload.
It sends a text message to a mobile device/pager or Web Watch.
For the version of this command that doesn't support Web watches, read [PAG](pag.md).
For the command that is sent when you receive a page, read [IPG](ipg.md).
# Client/Request
```
@ -18,7 +19,7 @@ Where `device-type` is a number:
* 1: Mobile Device
* 2: Web Watch
Where `length` is the length of `payload`.
Where `length` is the size (in bytes) of the `payload`.
Where `payload` is a XML-like payload that encodes the following characters:
* `&` turns into `&#x26;`

View file

@ -36,7 +36,7 @@ S: PRP 1 256 PHH 1%20(222)%203333
```
## Unknown property
*NOTE: There is no defined behavour for this command specifically.*
*NOTE: There is no defined behaviour for this command specifically.*
```
C: PRP 2 NEW very%20yes
```

View file

@ -3,7 +3,7 @@
It is a Notification Server command, without either a request or response payload.
It is a response to the [PNG](../commands/png.md) command.
It is the response to the [PNG](png.md) command.
# Client/Request
This command can not be sent from the client.
@ -11,7 +11,7 @@ This command can not be sent from the client.
# Server/Response
`QNG {next-seconds}`
Where `next-seconds` is the amount of seconds until the client should send another [PNG](../commands/png.md). Added since [MSNP9](../versions/msnp9.md).
Where `next-seconds` is the amount of seconds until the client should send another [PNG](png.md). Added since [MSNP9](../versions/msnp9.md).
# Examples

66
docs/commands/qry.md Normal file
View file

@ -0,0 +1,66 @@
# Introduction
`QRY` is a command introduced with [MSNP6](../versions/msnp6.md).
It is a Notification Server command, WITH a request payload but without a response payload.
Responds to a challenge request ([CHL](chl.md) command).
# Client/Request
```
QRY TrID public-key length
payload
```
Where `public-key` is your client's Public Key.
Where `length` is the size (in bytes) of the `payload`.
Where `payload` is the challenge response.
## Challenge responses
Calculating the challenge response depends on the version of the protocol you are using.
### Basic responses
*Only in [MSNP6](../versions/msnp10.md) to [MSNP10](../versions/msnp10.md).*
Simply MD5 hash the challenge and your client's Private Key concatenated together as a string.
The output should be 32 bytes and lowercase hexadecimal.
### Advanced responses
*Since [MSNP11](../versions/msnp11.md).*
Since this is more advanced of an algorithm,
it will be avaliable as annotated source code in the Miscellaneous Files sectiom.
TODO: Write said annotated source code.
The output should be 32 bytes and lowercase hexadecimal.
# Server/Response
`QRY TrID`
# Examples
## Successful response
```
S: CHL 12345678901234567890
C: QRY 1 msmsgs@msnmsgr.com 32
8ba1bb9d6dbf624fee31a2053af5fdd0
S: QRY 1
```
## Failed challenge
*NOTE: This happens as-is in [MSNP11](../versions/msnp11.md),
since it isn't using the new method.*
```
S: CHL 12345678901234567890
C: QRY 2 msmsgs@msnmsgr.com 32
8ba1bb9d6dbf624fee31a2053af5fdd0
S: 540 2
```
Server disconnects client.
# Known changes
* [MSNP11](../versions/msnp11.md): Changed challenge response generation algorithm drastically.

132
docs/commands/reg.md Normal file
View file

@ -0,0 +1,132 @@
# Introduction
`REG` is a command introduced with [MSNP7](../versions/msnp7.md)
It is a Notification Server command, without a request or response payload.
Renames an existing group. Replaced with [Address Book Service](../services/abservice.md)'s `ABGroupUpdate` in [MSNP13](../versions/msnp13.md).
# Client/Request
`REG TrID group-id new-group-name {0}`
Where `group-id` is the group's identification number.
With `ABCHMigrated: 1`, this is instead the group's GUID.
Where `new-group-name` is the name you want to rename `group-id` to.
Has a limit of 127 bytes (URL-encoded characters count as 3 bytes).
Where `0` is always `0`. Removed in [MSNP10](../versions/msnp10.md).
# Server/Response
`REG TrID {list-version} group-id group-name {0}`
Where `list-version` is the new List Version. Removed in [MSNP10](../versions/msnp10.md)
Where` group-name` is the updated name of the group.
# Examples
## With list versions
*Only in [MSNP7](../versions/msnp7.md) to [MSNP9](../versions/msnp9.md).*
### Normal use
```
C: REG 1 0 example%20group%20rename 0
S: REG 1 256 0 example%20group%20rename 0
```
### Cannot rename group that doesn't exist yet
```
C: REG 2 2 non-existant%20group 0
S: 224 2
```
### Cannot rename out-of-bounds groups
```
C: REG 3 30 example%20out%20of%20bounds%20group 0
```
Server disconnects client
### Group name extremely long
*NOTE: This has been line-breaked.
Lines beginnging with `..` followed by a space are continuations of the previous line.*
```
C: REG 4 0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
.. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
.. AAAAAAAAA 0
```
Server disconnects client.
## Without list versions
### With group IDs
*Only in [MSNP10](../versions/msnp10.md) with `ABCHMigrated: 0`.*
#### Normal use
```
C: REG 5 0 another%20example%20group%20rename
S: REG 5 0 another%20example%20group%20rename
```
#### Cannot rename group that doesn't exist yet
```
C: REG 6 2 still%20a%20non-existant%20group
S: 224 6
```
#### Cannot rename out-of-bounds groups
```
C: REG 7 30 still%20out%20of%20bounds
```
Server disconnects client.
### Group name extremely long
*NOTE: This has been line-breaked.
Lines beginnging with `..` followed by a space are continuations of the previous line.*
```
C: REG 8 0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
.. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
.. AAAAAAAAA
```
Server disconnects client.
### With group GUIDs
*Since [MSNP10](../versions/msnp10.md) with `ABCHMigrated: 1`.*
#### Normal use
```
C: REG 9 d6deeacd-7849-4de4-93c5-d130915d0042 yet%20another%20example%20group%20rename
C: REG 9 d6deeacd-7849-4de4-93c5-d130915d0042 yet%20another%20example%20group%20rename
```
#### Cannot rename group that doesn't exist yet
```
C: REG 10 11111111-2222-3333-4444-555555555555 still%20a%20non-existant%20group
S: 224 10
```
#### Cannot use an invalid GUID
```
C: REG 11 THIS0IS0-NOT0-A0VA-LID0-GUID0AT0ALL! very%20invalid%20GUID%20there
```
Server disconnects client.
### Group name extremely long
*NOTE: This has been line-breaked.
Lines beginnging with `..` followed by a space are continuations of the previous line.*
```
C: REG 12 d6deeacd-7849-4de4-93c5-d130915d0042 AAAAAAAAAAAAAAAAAAAA
.. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
.. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
```
Server disconnects client.
# Known changes
* [MSNP10](../versions/msnp10.md): Removed unused `0` parameter, removed List Versions,
and with `ABCHMigrated: 1`, changed group IDs to GUIDs.
* [MSNP13](../versions/msnp13.md): Removed (automatic disconnect), use [Address Book Service](../services/abservice.md)'s `ABGroupUpdate` instead.

115
docs/commands/rmg.md Normal file
View file

@ -0,0 +1,115 @@
# Introduction
`RMG` is a command introduced with [MSNP7](../versions/msnp7.md).
It is a Notification Server command, without either a request or response payload.
Removes all users from a group and the group itself.
Replaced with [Address Book Service](../services/abservice.md)'s `ABGroupDelete` in [MSNP13](../versions/msnp13.md).
# Client/Request
`RMG TrID group-id`
Where `group-id` is the identification number of the group you would like to remove.
With `ABCHMigrated: 1`, this parameter is instead the GUID of the group you'd like to remove.
You cannot remove the "Other Contacts" group (group ID `0`).
*NOTE: If users are exclusively in the group you remove,
THEY WILL BE ALSO REMOVED FROM THE FORWARD LIST (FL).*
# Server/Response
`RMG TrID {list-version} group-id`
Where `list-version` is the new List Version. Removed in [MSNP10](../versions/msnp10.md).
# Examples
## With List Versions
*Only in [MSNP7](../versions/msnp7.md) to [MSNP9](../versions/msnp9.md).*
## Without List Versions
### Normal use
```
C: RMG 1 1
S: RMG 1 256 1
```
### Group doesn't exist yet
```
C: RMG 2 2
S: 224 2
```
### Can not remove the initial group
```
C: RMG 3 0
S: 230 3
```
### Can not remove out-of-bounds groups
```
C: RMG 4 30
```
Server disconnects client.
### With group IDs
*Only in [MSNP10](../versions/msnp10.md) with `ABCHMigrated: 0`.*
#### Normal use
```
C: RMG 5 1
S: RMG 5 1
```
#### Group doesn't exist yet
```
C: RMG 6 2
S: 224 6
```
#### Can not remove the initial group
```
C: RMG 7 0
S: 230 7
```
#### Can not remove out-of-bounds groups
```
C: RMG 8 30
```
Server disconnects client.
### With group GUIDs
*Since [MSNP10](../versions/msnp10.md) with `ABCHMigrated: 1`.*
#### Normal use
```
C: RMG 9 f60efbe7-94af-4b16-b926-e4e10878d329
S: RMG 9 f60efbe7-94af-4b16-b926-e4e10878d329
```
#### Group doesn't exist yet
```
C: RMG 10 11111111-2222-3333-4444-555555555555
S: 224 10
```
#### Can not remove the initial group
```
C: RMG 11 d6deeacd-7849-4de4-93c5-d130915d0042
S: 230 11
```
#### Can not remove out-of-bounds groups
```
C: RMG 8 THIS0IS0-NOT0-A0VA-LID0-GUID0AT0ALL!
```
Server disconnects client.
# Known changes
* [MSNP10](../versions/msnp10.md): Removed the List Version parameter, and with `ABCHMigrated: 1`
* [MSNP13](../versions/msnp13.md): Removed (automatic disconnect),
use [Address Book Services](../services/abservice.md)'s `ABGroupDelete` instead.

View file

@ -9,7 +9,7 @@ For the version of this command that does not support friendly names, read [SND]
# Client/Request
```
SDC TrID target-address translation-lcid requesting-library client-identification X X my-friendly-name length
{payload}
payload
````
Where `target-address` is the E-mail address or index from the last [FND](fnd.md) response you'd like to invite to the service.
@ -26,11 +26,11 @@ Where `my-friendly-name` is your current friendly name.
Invalid escaped characters are forcefully re-encoded to`%3DXX`,
where `XX` is original escaped character code.
Where `length` is the length of the payload.
Where `length` is the size (in bytes) of the `payload`.
Set to `0` if you don't want to add anything else to your invitation.
Where `payload` is plain-text data that is included in the invitation.
If this is `0`, this parameter is empty.
If the `length` is `0`, the `payload` is not to be set.
# Server/Response
`SDC TrID OK`

View file

@ -1,6 +1,13 @@
# Introduction
`SYN` is a command introduced with [MSNP2](../versions/msnp2.md)
It is a Notification Server command, without a request or response payload.
Synchronizes user options and every contact list.
This command can only be sent once.
Any further uses of this command in the same session is Undefined Behaviour.
# Client/Request
`SYN TrID list-version {settings-version}`
@ -121,6 +128,10 @@ S: LST 3 RL 255 1 1 anotheruser@hotmail.com another%20user
*This only happens if the only group is `~`,
and you set the client to sort by groups.*
Used commands:
* [REG](reg.md)
* [ADG](adg.md)
```
S: LSG 3 255 1 1 0 ~ 0
```
@ -163,6 +174,10 @@ S: BPR PHH 1%20(222)%20333%204444
*This only happens if the only group is `~`,
and you set the client to sort by groups.*
Used commands:
* [REG](reg.md)
* [ADG](adg.md)
```
S: LSG 0 ~ 0
```

View file

@ -6,7 +6,8 @@ The command exists in all services, without a request or response payload.
Specifies a user that wants to authenticate to the service.
For the command that is used when sending this to a Dispatch Server, read [XFR](xfr.md).
This command can only be sent once. Any further uses of this command in the same session is Undefined Behavour.
This command can only be sent once.
Any further uses of this command in the same session is Undefined Behaviour.
# Client/Request

View file

@ -5,7 +5,8 @@ It is a Dispatch Server and Notification Server command, without either a reques
It specifies which protocols the client can accept, and which one the server likes the best.
This command can only be sent once. Any further uses of this command in the same session is Undefined Behavour.
This command can only be sent once.
Any further uses of this command in the same session is Undefined Behaviour.
# Client/Request
`VER TrID dialect-name {dialect-name ...}`

207
docs/files/notification.md Normal file
View file

@ -0,0 +1,207 @@
# Introduction
`<NOTIFICATION>` documents are the basis behind the [NOT](../commands/not.md) and [IPG](../commands/ipg.md) commands.
Being such, it was introduced with [MSNP5](../versions/msnp5.md).
This article only describes the `<NOTIFICATION>` command from .NET Alerts 5.0 and below,
and not the `<Notify>` element used in .NET Alerts 6.0 and above.
# NOTIFICATION
This is the root element of the document, and supports four attributes:
* `ver`: This is always `1`. Seems optional, or was removed later.
* `id`: A 32-bit unsigned integer that is set by the sending party.
* `siteid`: The .NET Alerts Site ID, not to be confused with the .NET Passport Site ID.
Setting this to some values changes the default icon:
* `0`: Use stocks (stack of coins or line-chart) icon
* `1`: Use calendar (clock) icon
* Other values: Use default bell icon or custom icon
* `siteurl`: The base URL to the service used in later relative URL attributes.
## TO
This element supports two attributes:
* `pid`: The recipient's Passport Unique ID.
The format for the PUID is `0xHHHHHHHH:0xLLLLLLLL`,
where `H` is the hexadecimal representation of the profile's `MemberIdHigh` variable,
and where `L` is the hexadecimal representation of the profile's `MemberIdLow` variable.
* `name`: The recipient's display name or user handle. Optional.
If this element (`<TO>`) does not have a (`<VIA>`) element, it is to be empty.
### VIA
*NOTE: This element seems to only exist as backwards compatibility from .NET Alerts 6.0.*
This empty element only supports one attribute:
* `agent`: What this alert is intended to be viewed by:
* `email`: A e-mail message.
* `messenger`: A "toast" generated by the Official Client.
* `mobile`: A mobile device.
## FROM
*NOTE: This element should NOT be added to any `<NOTIFICATION>` documents.*
This optional empty element supports two attributes:
* `pid`: The sender's Passport Unique ID. Follows the same format as [`<TO>`](#to)'s `pid` parameter.
* `from`: The sender's display name or user handle. Optional.
## MSG
This is the primary element of the document, and supports two attributes:
* `pri`: This is always empty, and should NOT be set. May be set to `1` for incoming pages. Optional.
* `id`: The notification's numeric ID, defaulting to '0', and should NOT be changed.
### ACTION
This element supports only one attribute:
* `url`: The main URL that is used when this notification is activated, relative to `siteurl`.
When opened by a client, the following are added to the URL as query parameters:
* `to_pid`: The `pid` attribute from [`<TO>`](#to) element.
* `notification_id`: The `id` attribute from [`<NOTIFICATION>`](#notification) element.
* `message_id`: The `id` attribute from [`<MSG>`](#msg) element.
* `agent`: The client that activated this notification. The Official Client sets this to `messenger`. Optional.
### SUBSCR
This element supports only one attribute:
* `url`: The configuration URL that is used when the notification's `change` option is activated, relative to `siteurl`.
When opened by a client, the following are added to the URL as query parameters:
* `to_pid`: The `pid` attribute from [`<TO>`](#to) element.
* `notification_id`: The `id` attribute from [`<NOTIFICATION>`](#notification) element.
* `message_id`: The `id` attribute from [`<MSG>`](#msg) element.
* `agent`: The client that activated this notification. The Official Client sets this to `messenger`. Optional.
### CAT
*NOTE: This element is obsolete and
should NOT be added to any `<NOTIFICATION>` documents.*
This optional empty element only supports one attribute:
* `id`: The category ID of this notification.
### BODY
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.
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.
This element (including the `<BODY>` and `</BODY>`) are restricted in size to 1024 bytes.
#### NAME
*NOTE: This element should NOT be added to any `<NOTIFICATION>` documents.*
This optional element contains the friendly name of the recipient.
#### TEXT
This optional element contains the text data of the notification.
#### TEXTX
This optional element contains the extended text data of the notification,
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.
##### P
A paragraph, required for [`<TEXTX>`](#textx) elements to parse correctly.
This element supports one attribute:
* `align`: The extended notification's text alignment:
* `left`
* `center`
* `right`
This element may contain any of the following elements:
* `P`: Nested paragraph, also supporting the `align` element.
* `B`: Bold text.
* `I`: Italic text.
* `BR`: This empty element denotes a line-break.
# NotificationData
This element may instead be contained in the [`<BODY>`](#body) element entirely,
replacing all of it's children.
This sub-document is XML encoded if set as the inner data of the [`<BODY>`](#body) element.
This element supports two attributes:
* `xmlns:xsd`: is always set to `http://www.w3.org/2001/XMLSchema`
* `xmlns:xsi`: is always set to `http://www.w3.org/2001/XMLSchema-instance`
## Service
Contains only `ABCHInternal`. Unknown if there are other values supported.
This element is exclusive to notifications generated by the [Address Book Service](../services/abservice.md).
## CID
Contains only the Contact ID of the user associated with this notification.
This element is exclusive to notifications generated by the [Address Book Service](../services/abservice.md).
## SpaceHandle
This element only has one child named `ResourceID`.
This element and it's children are exclusive to notifications generated by the blog service.
### ResourceID
Contains the blog service's ID for this user.
## ComponentHandle
This element only has one child named `ResourceID`.
This element and it's children are exclusive to notifications generated by the blog service.
### ResourceID
Contains the blog service's ID for the main component.
## OwnerCID
This element only contains a signed 64-bit integer for the Contact ID.
Added since [MSNP13](../versions/msnp13.md).
This element and it's children are exclusive to notifications generated by the blog service.
## LastModifiedDate
Contains a ISO 8601-compatible timestamp with 7 millisecond digits.
This element is omitted in notifications generated by the persistant group service.
## Action
Only observed to contain `Add`. Unknown if there are other values supported.
This element is exclusive to notifications generated by the blog service.
## HasNewItem
Contains either `true` or `false`.
## ComponentSummary
This element has two children named `<Component>` and `<Items>`.
This element and it's children are exclusive to notifications generated by the blog service.
### Component
This element has one child named `ResourceID` and supports one attribute:
* `xsi:type`: The type of this `<Component>`:
* `List`: A list.
* `Folder`: A photo collection.
* `MessageContainer`: A text message container.
#### ResourceID
Contains the blog service's ID for this `<Component>`.
### Items
This element supports multiple `<Item>` child elements.
#### Item
This element has one child named `ResourceID` and supports one attribute:
* `xsi:type`: The type of this `<Component>`:
* `ListEntry`: An entry on a list.
* `Photo`: A photo.
* `Message`: A text message.
##### ResourceID
Contains the blog service's ID for this `<Item>`.
## CircleId
Contains the GUID of the persistant group.
This element is exclusive to notifications generated by the persistant group service.

View file

@ -39,7 +39,9 @@ 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?
* 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.
* All Protocols: Good [CVR](commands/cvr.md) responses, all of them are their release versions, when they could be latest.
* All Protocols since [MSNP10](versions/msnp10.md): Use legitimate [CVR](commands/cvr.md) responses from the time if possible, not ones for Client Version 6.1.
@ -68,7 +70,7 @@ More is to come soon! Hopefully!
* 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.
* Passport: The Authentication Server and/or Protocol.
* Undefined Behavour: An intentional blank left in the documentation, basically as a "I am not responsible for what this does to your client or server" warning.
* 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.
* Notification Server: The real meat of MSNP, handles authentication, user presence, notifications, creates Switchboard Server sessions and boasts the most commands.
* Switchboard Server: The messaging part of the protocol. Changed only twice until it was deprecated in [MSNP21](versions/msnp21.md).
@ -80,7 +82,7 @@ More is to come soon! Hopefully!
* TrID: Transaction ID. Links the server's response to the client's request.
* User handle: A 129-character max address used across the protocol.
May be called "principles" in other places.
* Public Key, Private Key: The parameters used in QRY.
* Public Key, Private Key: The parameters used in [QRY](commands/qry.md).
* The one you send with it in plain is the Public Key.
An example of the Public Key is `msmsgs@msnmsgr.com` or `PROD0090YUAUV{2B`.
* The one you use for the main challenge response hash is the Private Key.
@ -90,3 +92,7 @@ More is to come soon! Hopefully!
The git repo is avaliable at <https://git.kevinthe.horse/yellows111/msnp-wiki>.
You can submit changes to me via any avaliable contact method as a e-mail merge request, like those made with [`git format-patch`](https://git-scm.com/docs/git-format-patch).
# License
This documentational site, and it's related sources are avaliable under the
[license of the GNU Free Documentation License 1.3](license.md).

445
docs/license.md Normal file
View file

@ -0,0 +1,445 @@
# GNU Free Documentation License
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation,
Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
## 0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
## 1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below, refers
to any such manual or work. Any member of the public is a licensee,
and is addressed as "you". You accept the license if you copy, modify
or distribute the work in a way requiring permission under copyright
law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may be
at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies of
the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
## 2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
## 3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify you
as the publisher of these copies. The front cover must present the
full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with
changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim
copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to
give them a chance to provide you with an updated version of the
Document.
## 4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
- A. Use in the Title Page (and on the covers, if any) a title
distinct from that of the Document, and from those of previous
versions (which should, if there were any, be listed in the
History section of the Document). You may use the same title as a
previous version if the original publisher of that version
gives permission.
- B. List on the Title Page, as authors, one or more persons or
entities responsible for authorship of the modifications in the
Modified Version, together with at least five of the principal
authors of the Document (all of its principal authors, if it has
fewer than five), unless they release you from this requirement.
- C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
- D. Preserve all the copyright notices of the Document.
- E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
- F. Include, immediately after the copyright notices, a license
notice giving the public permission to use the Modified Version
under the terms of this License, in the form shown in the
Addendum below.
- G. Preserve in that license notice the full lists of Invariant
Sections and required Cover Texts given in the Document's
license notice.
- H. Include an unaltered copy of this License.
- I. Preserve the section Entitled "History", Preserve its Title,
and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the
Title Page. If there is no section Entitled "History" in the
Document, create one stating the title, year, authors, and
publisher of the Document as given on its Title Page, then add an
item describing the Modified Version as stated in the
previous sentence.
- J. Preserve the network location, if any, given in the Document
for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for previous
versions it was based on. These may be placed in the "History"
section. You may omit a network location for a work that was
published at least four years before the Document itself, or if
the original publisher of the version it refers to
gives permission.
- K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
- L. Preserve all the Invariant Sections of the Document, unaltered
in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.
- M. Delete any section Entitled "Endorsements". Such a section may
not be included in the Modified Version.
- N. Do not retitle any existing section to be Entitled
"Endorsements" or to conflict in title with any Invariant Section.
- O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties—for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
## 5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
## 6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the rules
of this License for verbatim copying of each of the documents in all
other respects.
You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.
## 7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
## 8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
## 9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt otherwise
to copy, modify, sublicense, or distribute it is void, and will
automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
## 10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See
<https://www.gnu.org/licenses/>.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document specifies
that a proxy can decide which future versions of this License can be
used, that proxy's public statement of acceptance of a version
permanently authorizes you to choose that version for the Document.
## 11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the site
means any set of copyrightable works thus published on the MMC site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or in
part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
## ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with … Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License, to
permit their use in free software.

View file

@ -22,6 +22,9 @@ This refers to all the constants used on the wiki.
* My [Address Book Service](services/abservice.md) GUID: `00000000-0000-0000-0000-000000000000`
* John's (mobile-only contact) GUID: `a47e39cf-312c-4100-94a6-f2b33adf5b68`
## Other things
* My Passport Unique ID: `0x00000001:0x000000002`, High: `1`, Low: `2`.
## MSNP Servers
* The Dispatch Server: `10.0.0.1:1863`
* The Notification Server: `10.0.0.5:1863`

View file

@ -27,15 +27,15 @@ This is a list of all known MSNP commands and their originating version.
| [`PRP`](commands/prp.md) | N | Y | N | [MSNP5](versions/msnp5.md) | [MSNP8](versions/msnp8.md) (Removed List Version in [SYN](commands/syn.md)), [MSNP10](versions/msnp10.md) (Removed List Version outside of [SYN](commands/syn.md) if `ABCHMigrated: 1`) |
| [`BPR`](commands/bpr.md) | N | N | Y | [MSNP5](versions/msnp5.md) | [MSNP8](versions/msnp8.md) (Removed List Version and user handle in [SYN](commands/syn.md)), [MSNP10](versions/msnp10.md) (Removed List Version outside of SYN if `ABCHMigrated: 1`) |
| [`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) (Likely removed), November 2003 (Removed outside of [SYN](commands/syn.md), not really any specific MSNP update, just hard removed with an automatic disconnect.) |
| [`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) |
| [`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) |
| [`URL`](commands/url.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP3](versions/msnp3.md) (Added Passport Site ID support as parameter 3), removed `PASSWORD` service), [MSNP5](versions/msnp5.md) (Added `MOBILE` and `CHGMOB` services), [MSNP6](versions/msnp6.md) (Added `PROFILE`, `N2PACCOUNT` and `N2PFUND` services), [MSNP7](versions/msnp7.md) (Added `CHAT` service), [MSNP8](versions/msnp8.md) (Added `ADDRBOOK`, `ADVSEARCH` and `INTSEARCH` services) |
| [`LSG`](commands/lsg.md) | N | Y | Y\*| [MSNP7](versions/msnp7.md) | [MSNP8](versions/msnp8.md) (Removed iterator and List Version parameters from [SYN](commands/syn.md) version), [MSNP10](versions/msnp10.md) (Removed unused parameter, and replaced Group IDs with Group GUIDs if `ABCHMigrated: 1`.), November 2003 (Removed outside of [SYN](commands/syn.md), not really any specific MSNP update, just hard removed with an automatic disconnect.) |
| [`ADG`](commands/adg.md) | N | Y | N | [MSNP7](versions/msnp7.md) | [MSNP10](versions/msnp10.md) (Removed unused parameter, and replaced Group IDs with Group GUIDs if `ABCHMigrated: 1`), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect?, use [Address Book Service](services/abservice.md) `ABGroupAdd` instead.) |
| [`LSG`](commands/lsg.md) | N | Y | Y\*| [MSNP7](versions/msnp7.md) | [MSNP8](versions/msnp8.md) (Removed iterator and List Version parameters from [SYN](commands/syn.md) version), [MSNP10](versions/msnp10.md) (Removed unused parameter, and replaced Group IDs with Group GUIDs if `ABCHMigrated: 1`.), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect, use [Address Book Service](services/abservice.md)'s `ABFindAll` instead.) November 2003 (Removed outside of [SYN](commands/syn.md), not really any specific MSNP update, just hard removed with an automatic disconnect.) |
| [`ADG`](commands/adg.md) | N | Y | N | [MSNP7](versions/msnp7.md) | [MSNP10](versions/msnp10.md) (Removed unused `0` and List Version parameters, and replaced Group IDs with Group GUIDs if `ABCHMigrated: 1`), [MSNP13](versions/msnp13.md) (Removed; automatic disconnect?, use [Address Book Service](services/abservice.md) `ABGroupAdd` instead.) |
| [`ILN`](commands/iln.md) | N | N | Y | [MSNP2](versions/msnp2.md) | [MSNP8](versions/msnp8.md) (Added support for Client Capabilities), [MSNP9](versions/msnp9.md) (Added optional MSNObject parameter), [MSNP14](versions/msnp14.md) (Added Network ID parameter and optional Presence Icon URL parameter), [MSNP16](versions/msnp16.md) (Support for the Extended Client Capabilities, changing the original Client Capabilities parameter to now be delimited by a colon) |
| [`NLN`](commands/nln.md) | N | N | Y | [MSNP2](versions/msnp2.md) | [MSNP8](versions/msnp8.md) (Added support for Client Capabilities), [MSNP9](versions/msnp9.md) (Added optional MSNObject parameter), [MSNP14](versions/msnp14.md) (Added Network ID parameter and optional Presence Icon URL parameter), [MSNP16](versions/msnp16.md) (Support for the Extended Client Capabilities, changing the original Client Capabilities parameter to now be delimited by a colon) |
| [`REA`](commands/rea.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP10](versions/msnp10.md) (Removed; automatic disconnect) |
@ -45,19 +45,17 @@ This is a list of all known MSNP commands and their originating version.
| [`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` action instead.) |
| [`CHL`](commands/chl.md) | N | Y | Y | [MSNP6](versions/msnp6.md) | [MSNP10](versions/msnp10.md) (Changed QRY response algorithm) |
| [`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.) |
| [`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` 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` instead.) |
| [`QRY`](commands/qry.md) | Y | Y | N | [MSNP6](versions/msnp6.md) | [MSNP10](versions/msnp10.md) (Changed challenge response generation algorithm drastically.) |
# What's Missing Right Now
## For next parity check
* [MSNP5](versions/msnp5.md): NOT
* [MSNP6](versions/msnp6.md): IPG
* [MSNP6](versions/msnp6.md): QRY
* [MSNP7](versions/msnp7.md): REG
* [MSNP7](versions/msnp7.md): RMG
## In general
* [MSNP11](versions/msnp11.md): SBS
* [MSNP11](versions/msnp11.md): UBX

View file

@ -41,8 +41,8 @@ The following commands were removed in this version:
* [BLP](../commands/blp.md)
* [ADG](../commands/adg.md)
* [BPR](../commands/bpr.md)
* REG
* RMG
* [REG](../commands/reg.md)
* [RMG](../commands/rmg.md)
* [REM](../commands/rem.md)
* [PRP](../commands/prp.md)
* Added a new list: Pending List/PL (bit 5, decimal 16). Is meant for unhandled contact added you notifications.

View file

@ -17,17 +17,18 @@ It introduces the notification service commands:
# Known changes
(from [MSNP10](msnp10.md)):
* QRY: Challenge response is drastically overhauled.
Check the command article for more information.
* [QRY](../commands/qry.md): Challenge response generation has been drastically overhauled.
TODO: Write annotated source code explaning new algorithm.
* [OUT](../commands/out.md) RCT `TimeBeforeRetry` now exists.
`TimeBeforeRetry` is a numerical value in minutes that specifies the amount
of time in minutes the client should wait before reconnecting.
* All `ABCHMigrated` changes are now the default - `ABCHMigrated: 0` is Undefined Behavour from now on.
* All `ABCHMigrated` changes are now the default - `ABCHMigrated: 0` is Undefined Behaviour from now on.
* [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: Notifications (NOT commands) with encoded `NotificationData` documents are supported for spaces (blogs).
* 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.
* Official Client: [OUT](../commands/out.md) SSD is actually implemented now.
* Official Client: Error code 913 is handled again after being removed last version. Why?
@ -105,6 +106,39 @@ 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
<NOTIFICATION id="2" siteid="45705" siteurl="http://storage.msn.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com">
<VIA agent="messenger"/>
</TO>
<MSG id="0">
<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;SpaceHandle&gt;
&lt;ResourceID&gt;example1!101&lt;/ResourceID&gt;
&lt;/SpaceHandle&gt;
&lt;ComponentHandle&gt;
&lt;ResourceID&gt;example2!101&lt;/ResourceID&gt;
&lt;/ComponentHandle&gt;
&lt;OwnerCID&gt;4294967298&lt;/OwnerCID&gt;
&lt;LastModifiedDate&gt;2024-10-26T09:33:27.1020000-08:00&lt;/LastModifiedDate&gt;
&lt;HasNewItem&gt;true&lt;HasNewItem&gt;
&lt;ComponentSummary&gt;
&lt;Component xsi:type=&quot;MessageContainer&quot;&gt;
&lt;ResourceID&gt;example2!102&lt;/ResourceID&gt;
&lt;/Component&gt;
&lt;Items&gt;
&lt;Component xsi:type=&quot;Message&quot;&gt;
&lt;ResourceID&gt;example2!101&lt;/ResourceID&gt;
&lt;/Component&gt;
&lt;/Items&gt;
&lt;/ComponentSummary&gt;
&lt;/NotificationData&gt;
</BODY>
</MSG>
</NOTIFICATION>
C: OUT
```
Client disconnects from server

View file

@ -5,7 +5,7 @@ It was introduced officially in Client Version 3.0.0283.
# Command information
It introduces the notification service commands:
* [BPR](../commands/bpr.md)
* NOT
* [NOT](../commands/not.md)
* [PAG](../commands/pag.md)
* [PRP](../commands/prp.md)
* [SDC](../commands/sdc.md)
@ -20,6 +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.
* 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.
@ -116,17 +117,16 @@ S: LST 8 BL 6 0 0
S: LST 8 RL 6 1 1 anotheruser@hotmail.com another%20user
C: CHG 9 NLN
S: CHG 9 NLN
S: NOT 431
<NOTIFICATION ver="1" siteid="111100000" siteurl="http://example.com" id="0">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com" />
<MSG pri="" id="0">
<ACTION url="/messenger/action?reference=something1"/>
<SUBSCR url="/messenger/changealerts?reference=something1"/>
<CAT id="111100001" />
<BODY lang="1033" icon="/messenger/icon_32x32.png">
<TEXT>text of the notification</TEXT>
</BODY>
</MSG>
S: NOT 367
<NOTIFICATION ver="1" id="2" siteid="0" siteurl="http://example.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com" />
<MSG id="0">
<ACTION url="alert?command=action" />
<SUBSCR url="alert?command=change" />
<BODY lang="1033" icon="alerticon_32x32.png">
<TEXT>This is an example notification.</TEXT>
</BODY>
</MSG>
</NOTIFICATION>
C: PRP 10 PHH 123%20(4567)
S: PRP 10 7 PHH 123%20(4567)

View file

@ -5,8 +5,8 @@ It was introduced officially in Client Version 3.6.0038.
# Command information
It introduces the notification service commands:
* [CHL](../commands/chl.md)
* IPG
* QRY
* [IPG](../commands/ipg.md)
* [QRY](../commands/qry.md)
*No switchboard or dispatch service commands were known to be introduced in this version*
@ -23,9 +23,9 @@ It introduces the error codes:
if it is `0`, the Official Client shows a warning to verify the account.
NOTE: Your display name will be forced to be
`example@hotmail.com (E-Mail Address Not Verified)`, and can not be changed.
* Client-server challenges were introduced. The format for the response is
* Client-server challenges were introduced. The format for the response ([QRY](../commands/qry.md) commands) are
`MD5(challenge + privateKey)` as a lowercase hexadecimal string.
* An example client secret is `Q1P7W2E4J9R8U3S5`, which is tied to `msmsgs@msnmsgr.com`.
* An example Private Key is `Q1P7W2E4J9R8U3S5`, which is tied to the Public Key of `msmsgs@msnmsgr.com`.
* First protocol version added in a patch release (Client Versions 3.6.0025 and 3.6.0026 do not support MSNP6).
* Official Client: Added new [URL](../commands/url.md) services `PROFILE`, `N2PACCOUNT` and `N2PFUND`.
* Official Client: Error 924 dialog changed to the unverified but still can use service one. Not sure why.
@ -92,6 +92,21 @@ S: CHL 0 11111111111111111111
C: QRY 10 msmsgs@msnmsgr.com 32
3b6666b60157322b6fc6e41a115968f5
S: QRY 10
S: IPG 478
<NOTIFICATION id="0" siteid="111100400" siteurl="http://mobile.msn.com/">
<TO name="example@hotmail.com" pid="0x00000001:0x00000002" email="example@hotmail.com">
<VIA agent="mobile"/>
</TO>
<FROM pid="0x00000001:0x00000002" name="anotheruser@hotmail.com"/>
<MSG pri="1" id="0">
<ACTION url="2wayIM.asp"/>
<SUBSCR url="2wayIM.asp"/>
<CAT id="110110001"/>
<BODY lang="1033">
<TEXT>Hello! I am talking from a mobile device.</TEXT>
</BODY>
</MSG>
</NOTIFICATION>
C: OUT
```
Client disconnects from server

View file

@ -5,8 +5,8 @@ It was introduced officially in Client Version 4.5.0121.
# Command information
It introduces the notification service commands:
* [ADG](../commands/adg.md)
* REG
* RMG
* [REG](../commands/reg.md)
* [RMG](../commands/rmg.md)
* [LSG](../commands/lsg.md)
*No switchboard or dispatch service commands were known to be introduced in this version*

View file

@ -58,7 +58,7 @@ Added: 603
# Client-server communication example
*NOTE: This has been line-breaked.
Lines beginning with `..` followed by a space are continuations of the previous line.
Lines beginning with `..` followed by a space are continuations of the previous line.*
```
C: VER 1 MSNP8 CVR0
S: VER 1 MSNP8

View file

@ -25,6 +25,7 @@ The following commands were removed in this version:
* [QNG](../commands/qng.md): Added a "next ping" time (in seconds) parameter.
* Switchboard [MSG](../commands/msg.md): Acknowledgement type D added.
Can respond with either [ACK](../commands/ack.md), error 282, or possibly any other error codes.
* [NOT](../commands/not.md): Extended notifications are now supported via the `<TEXTX>` element.
* Official Client: Error 603 is handled again after being removed in Client Version 5.0.
Error code 711 is no longer handled after being implemented in Client Version 5.0.
* Official Client: Supports the [Messenger Config](../services/msgrconfig.md) XML service, replacing `svcs.microsoft.com`.
@ -99,6 +100,18 @@ S: NLN NLN anotheruser@hotmail.com another%20user 268435500 %3Cmsnobj%20Creator%
.. %20SHA1D%3D%22vP1ppB+xiFQ8ceZivRe0uCaYLIU%3D%22
.. %20SHA1C%3D%22PApbbjkbDSGrt3ybGHRKNaZ8s%2Fw%3D%22%2F%3E
S: QNG 60
S: NOT 457
<NOTIFICATION ver="1" id="2" siteid="0" siteurl="http://example.com/">
<TO pid="0x00000001:0x00000002" name="example@hotmail.com" />
<MSG id="0">
<ACTION url="alert?command=action" />
<SUBSCR url="alert?command=change" />
<BODY lang="1033" icon="alerticon_32x32.png">
<TEXT>This is an example notification.</TEXT>
<TEXTX>&lt;P&gt;This is an &lt;B&gt;extended&lt;/B&gt; notification!&lt;/P&gt</TEXTX>
</BODY>
</MSG>
</NOTIFICATION>
C: OUT
```
Client disconnects from server

8
package-lock.json generated
View file

@ -6,8 +6,8 @@
"packages": {
"": {
"name": "yellows-msnp-wiki",
"version": "0.0.1",
"license": "UNLICENSED",
"version": "0.1.0",
"license": "GFDL-1.3-or-later",
"dependencies": {
"yiki": "git+https://git.kevinthe.horse/yellows111/yiki.git#semver:*"
}
@ -680,8 +680,8 @@
}
},
"node_modules/yiki": {
"version": "0.1.4",
"resolved": "git+https://git.kevinthe.horse/yellows111/yiki.git#6565b78ac144a48cf553252fc46d1d1b883fa20d",
"version": "0.1.5",
"resolved": "git+https://git.kevinthe.horse/yellows111/yiki.git#7991d78e1c2461db7ab36ee10dd0a53105801b8b",
"license": "MIT",
"dependencies": {
"@liquify/prettify": "^0.5.5-beta.1",

View file

@ -1,13 +1,13 @@
{
"name": "yellows-msnp-wiki",
"version": "0.0.1",
"version": "0.1.0",
"description": "The yellows111 MSNP wiki that aims for accuracy.",
"author": "yellows111",
"license": "UNLICENSED",
"license": "GFDL-1.3-or-later",
"dependencies": {
"yiki": "git+https://git.kevinthe.horse/yellows111/yiki.git#semver:*"
},
"scripts": {
"build": "node ./node_modules/yiki/ymake.js"
"build": "node ./node_modules/yiki/ymake.js"
}
}