Π Π½Π°ΡΠ°Π»Π΅ ΠΌΠ΅ΡΡΡΠ° Π½Π° Hacker News ΠΏΡΠΎΡΠΎΠΊΠΎΠ» JMAP, . ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠΎΠΌ, Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½.
/ / PD
Π§Π΅ΠΌ Π½Π΅ ΡΠ³ΠΎΠ΄ΠΈΠ» IMAP
ΠΡΠΎΡΠΎΠΊΠΎΠ» Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² 1986 Π³ΠΎΠ΄Ρ. ΠΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅, Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΠΆΠ΅ Π½Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΡΠΌΠ΅Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ ΠΏΠΈΡΡΠΌΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ β ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΠΊΠ°. Π ΡΠ»ΡΡΠ°Π΅ Ρ IMAP ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΈΡΡΠΌΠ° Ρ ΡΠ°Π½ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΊΠΎΠΏΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Β«ΠΏΠΎΡΡΠΈΡΡΡΒ», ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡ ΠΏΠΎΡΡΡ. Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΡΡΡΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°ΠΌΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ, Π½ΠΎ ΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π‘ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ IMAP ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π»ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΠ΅Π²ΠΈΠ·ΠΈΡΠΌ β Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ IMAP4. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ β Π² ΡΠ΅ΡΠΈ Π΄Π΅Π²ΡΠ½ΠΎΡΡΠΎ RFC Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ²Π΅ΠΆΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ , ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² 2019 Π³ΠΎΠ΄Ρ.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ IMAP ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ: , , . Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π²ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΠ°.
Β«ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ΅ΠΌ, β Π³ΠΎΠ²ΠΎΡΠΈΡ Π‘Π΅ΡΠ³Π΅ΠΉ ΠΠ΅Π»ΠΊΠΈΠ½, Π½Π°ΡΠ°Π»ΡΠ½ΠΈΠΊ ΠΎΡΠ΄Π΅Π»Π° ΡΠ°Π·Π²ΠΈΡΠΈΡ IaaS-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° . β Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π²ΡΠΎΠ΄Π΅ , ΠΈ . Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ°ΠΉΡΠ²ΠΎΠ»ΠΎΠ² Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΠΊΡΠΎΡΡ Π΄Π»Ρ ΠΊΠΈΠ±Π΅ΡΠ°ΡΠ°ΠΊΒ».
Π Π΅ΡΠΈΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈΠ·Π²Π°Π½ JMAP. ΠΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΈΠ· FastMail ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ²Π΅ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° (IETF). ΠΡΠΎΡΠΎΠΊΠΎΠ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ HTTPS, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JSON (ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΎΠ½ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π½ΠΎ ΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΄Π° Π·Π°Π΄Π°Ρ Π² ΠΎΠ±Π»Π°ΠΊΠ΅) ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΡΠΎΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΡΠΎΠΌΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΈΡΠ΅ΠΌ, Π² JMAP ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡΠΌ-ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°
JMAP ΡΠ²Π»ΡΠ΅ΡΡΡ (stateless) ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΡΡΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π² Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π·Π°ΡΡΠ΄ Π±Π°ΡΠ°ΡΠ΅ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ².
ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ Π² JMAP ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON-ΡΡΡΡΠΊΡΡΡΡ. ΠΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (Internet Message Format), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ (ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ , ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ) Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ API. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ POST-Π·Π°ΠΏΡΠΎΡ, ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ JMAP. ΠΠ°ΠΏΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΠ°Ρ application/json ΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π°ΠΏΡΠΎΡΠ° JSON. Π‘Π΅ΡΠ²Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΡΠ²Π΅ΡΠ°.
Π (ΠΏΡΠ½ΠΊΡ 3) Π°Π²ΡΠΎΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ:
{
"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
"methodCalls": [
[ "method1", {
"arg1": "arg1data",
"arg2": "arg2data"
}, "c1" ],
[ "method2", {
"arg1": "arg1data"
}, "c2" ],
[ "method3", {}, "c3" ]
]
}
ΠΠΈΠΆΠ΅ β ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅Ρ:
{
"methodResponses": [
[ "method1", {
"arg1": 3,
"arg2": "foo"
}, "c1" ],
[ "method2", {
"isBlah": true
}, "c2" ],
[ "anotherResponseFromMethod2", {
"data": 10,
"yetmoredata": "Hello"
}, "c2"],
[ "error", {
"type":"unknownMethod"
}, "c3" ]
],
"sessionState": "75128aab4b1b"
}
ΠΠΎΠ»Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ JMAP Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π’Π°ΠΌ ΠΆΠ΅ Π°Π²ΡΠΎΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Π΄Π»Ρ ΠΈ β ΠΎΠ½ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡΠΌΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ². ΠΠΎ Π°Π²ΡΠΎΡΠΎΠ², Contacts ΠΈ Calendars Π²ΡΠ΄Π΅Π»ΠΈΠ»ΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Β«ΡΠ΄ΡΠ°Β». ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π΄Π»Ρ JMAP β Π² .

/ / PD
ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, Π΅Π³ΠΎ ΡΠΆΠ΅ Π²Π½Π΅Π΄ΡΡΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΡΡΠ΅Π΄Π°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ JMAP-Π²Π΅ΡΡΠΈΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ· FastMail ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π½Π° Perl, Π° Π°Π²ΡΠΎΡΡ JMAP ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΠΈ .
ΠΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Π±Π°Π·Π΅ JMAP Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ Π½Π° Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ· Open-Xchange, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ IMAP-ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ Linux-ΡΠΈΡΡΠ΅ΠΌ. ΠΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ IMAP ΠΈΡ ΠΎΡΠ΅Π½Ρ , ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π²ΡΠ΅Π³ΠΎΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ· IETF ΠΈ FastMail Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²ΠΈΠ΄ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΎΡΠΊΡΡΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ²ΡΠΎΡΡ JMAP Π½Π°Π΄Π΅ΡΡΡΡ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Π½Π°ΡΠ½Π΅Ρ Π²Π½Π΅Π΄ΡΡΡΡ Ρ ΡΠ΅Π±Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
ΠΠ°ΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com
