# Protocol Support

Openfire provides full support for the XMPP protocol defined by RFC 6120 and RFC 6121. In addition to full XMPP support, Openfire also provides support for numerous extensions to XMPP that are defined through the XEP process at xmpp.org. This document provides a summary of that protocol support and is updated for every Openfire release.

This document is broken down into the following sections:

- Core XMPP Server Compliance Support
- Web Compliance Suite
- IM Compliance Suite
- Mobile Compliance Suite
- List of other XEPs Supported
- Footnotes

## Core XMPP Server Compliance Support

The core compliance level includes full support of the XMPP RFC's as well as the most common extensions. The table below details the level of support for the requirements set by XEP-0423: XMPP Compliance Suites 2020.

Specification | Core Server Supported | Advanced Server Supported
--- | --- | ---
RFC 6120: XMPP Core | ✓ | ✓
RFC 7590: TLS | ✓ | ✓
XEP-0368: SRV records for XMPP over TLS | N/A | ✓
XEP-0030: Service Discovery | ✓ | ✓
XEP-0115: Entity Capabilities | N/A | ✓
XEP-0114: Jabber Component Protocol | ✓ | ✓
XEP-0163: Personal Eventing Protocol | N/A | ✓

## Web Compliance Support

The web compliance level incudes all features from the core compliance category as well as all features in this suite.

Specification | Core Server Supported | Advanced Server Supported
--- | --- | ---
RFC 7395: An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket | ✓ | ✓
XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH) | ✓ | ✓
XEP-0206: XMPP over BOSH [1] | ✓ | ✓
XEP-0156: Discovering Alternative XMPP Connection Methods | N/A | ✓

## IM Compliance Support

The IM compliance level incudes all features from the core compliance category as well as all features in this suite.

Specification | Core Server Supported | Advanced Server Supported
--- | --- | ---
RFC 6121: XMPP IM | ✓ | ✓
XEP-0153: vCard-Based Avatars [2] | N/A | ✓
XEP-0398: User Avatar to vCard-Based Avatars Conversion | N/A | ✓
XEP-0054: vcard-temp | ✓ | ✓
XEP-0280: Message Carbons | ✓ | ✓
XEP-0191: Blocking Command | N/A | ✓
XEP-0045: Multi-User Chat | ✓ | ✓
XEP-0249: Direct MUC Invitations | X | X
XEP-0048: Bookmark Storage [3] | N/A | ✓
XEP-0410: MUC Self-Ping (Schrödinger's Chat) | N/A | ✓
XEP-0411: Bookmarks Conversion | N/A | X
XEP-0049: Private XML Storage | N/A | ✓
XEP-0198: Stream Management | N/A | ✓
XEP-0313: Message Archive Management [4] | N/A | ✓
XEP-0363: HTTP File Upload [5] | ✓ | ✓

## Mobile Compliance Support

The mobile compliance level incudes all features from the core compliance category as well as all features in this suite.

Specification | Core Server Supported | Advanced Server Supported
--- | --- | ---
XEP-0198: Stream Management | ✓ | ✓
XEP-0352: Client State Indication | X | X
XEP-0357: Push Notifications [6] | ✓ | ✓

## List of other XEPs Supported

The table below lists all other XEPs supported by Openfire. XEPs that only require client-side support are omitted.

Specification
XEP-0004: Data Forms
XEP-0012: Last Activity
XEP-0013: Flexible Offline Message Retrieval
XEP-0016: Privacy Lists
XEP-0033: Extended Stanza Addressing
XEP-0050: Ad-Hoc Commands
XEP-0055: Jabber Search [7]
XEP-0059: Result Set Management
XEP-0060: Publish-Subscribe
XEP-0065: SOCKS5 Bytestreams
XEP-0077: In-Band Registration
XEP-0078: Non-SASL Authentication [8]
XEP-0082: XMPP Date and Time Profiles
XEP-0086: Error Condition Mappings
XEP-0090: Legacy Entity Time
XEP-0091: Legacy Delayed Delivery
XEP-0092: Software Version
XEP-0096: File Transfer
XEP-0106: JID Escaping
XEP-0126: Invisibility
XEP-0128: Service Discovery Extensions [9]
XEP-0129: WebDAV File Transfers
XEP-0133: Service Administration
XEP-0136: Message Archiving [10]
XEP-0138: Stream Compression
XEP-0142: Workgroup Queues [11]
XEP-0160: Best Practices for Handling Offline Messages
XEP-0175: Best Practices for Use of SASL ANONYMOUS
XEP-0178: Best Practices for Use of SASL EXTERNAL with Certificates
XEP-0182: Service Discovery Extensions
XEP-0191: Blocking Command
XEP-0199: XMPP Ping
XEP-0202: Entity Time
XEP-0203: Delayed Delivery
XEP-0215: External Service Discovery [12]
XEP-0223: XMPP Server Registration for use with Kerberos V5
XEP-0227: Portable Import/Export Format for XMPP-IM Servers [13]
XEP-0278: Jingle Nodes [14]
XEP-0289: Federated MUC for Constrained Environments
XEP-0321: Remote Roster Management [15]
XEP-0359: Unique and Stable Stanza IDs

## Footnotes

1. The implementation also follows the XMPP WebSocket subprotocol (RFC 7395) specification, which is a standard extension of the WebSocket protocol specification (RFC 6455).
2. Support for XEP‑0153: vCard-Based Avatars is provided by the Avatar Resizer plugin.
3. Support for XEP-0048: Bookmarks is provided by the Bookmarks plugin.
4. Support for XEP-0313: Message Archive Management is provided by the Monitoring plugin.
5. Support for XEP-0363: HTTP File Upload is provided by the HTTP File Upload plugin.
6. Support for XEP-0357: Push Notifications is provided by the Push Notification plugin.
7. Support for XEP-0055: Jabber Search is provided by the Search plugin.
8. Support for XEP-0078: Non-SASL Authenticationh is provided by the Non-SASL Authentication plugin.
9. Support for XEP-0128: Service Discovery Extensions is provided by the MUC Service Discovery Extensions plugin.
10. Support for XEP-0136: Message Archiving is provided by the Monitoring plugin.
11. Support for XEP-0142: Workgroup Queues is provided by the Fastpath plugin.
12. Support for XEP-0215: External Service Discovery is provided by the External Service Discovery plugin.
13. Support for XEP-0227: Portable Import/Export Format for XMPP-IM Servers is provided by the User Import/Export plugin.
14. Support for XEP-0278: Jingle Nodes is provided by the Jingle Nodes plugin.
15. Support for XEP-0321: Remote Roster Management is provided by the GoJara plugin.